Gemini 格式

用 Google generateContent 原生协议调用 Gemini。

POST/v1/models/{model}:generateContent

Google 原生 contents / parts 请求,模型名作为 URL 的一部分。

流式响应使用 :streamGenerateContent。

鉴权

只传一把平台 API Key。下面几种来源都可以:

来源示例
AuthorizationAuthorization: Bearer sk-你的KEY
x-api-keyx-api-key: sk-你的KEY
x-goog-api-keyx-goog-api-key: sk-你的KEY
查询参数 key?key=sk-你的KEY

x-goog-api-key 和 ?key= 是 Google 原生鉴权。Authorization: Bearer 和 x-api-key 是平台兼容鉴权。这四个来源只用于 Gemini 原生接口和 GET /v1/models。其他入口仍只接受 Authorization 和 x-api-key。多个来源同时出现且值不一致时,网关返回 401,error.code 为 conflicting_keys,不会调用上游。某个来源存在但为空、旁边又有另一把 Key 时同样是冲突,不会改用那一把。没有任何来源,或来源全是空值,返回 missing_key。Key 不存在或已停用返回 invalid_key。

调用方的 Key 不会转发给上游。优先放在请求头里。查询参数里的 Key 可能被网关之外的代理和访问日志复制走。除 key 以外的查询参数,以及请求体里的字段,都会原样转到上游。

把 Google REST 示例接到本网关,需要替换三处:

  • 服务地址:https://u-token.ai
  • API 版本路径:/v1/models/{model}:generateContent,不是 Google 的 /v1beta/...
  • 模型 ID:当前 Key 的 GET /v1/models 返回的平台 ID,例如 gemini-3.5-flash
curl "https://u-token.ai/v1/models/gemini-3.5-flash:generateContent?key=sk-你的KEY" \
  -H 'Content-Type: application/json' \
  -d '{"contents":[{"role":"user","parts":[{"text":"用一句话介绍你自己"}]}],
       "generationConfig":{"maxOutputTokens":1500}}'

流式请求使用同一套鉴权。alt=sse 只决定 SSE 帧格式:

curl "https://u-token.ai/v1/models/gemini-3.5-flash:streamGenerateContent?alt=sse" \
  -H "x-goog-api-key: sk-你的KEY" \
  -H 'Content-Type: application/json' \
  -d '{"contents":[{"role":"user","parts":[{"text":"用一句话介绍你自己"}]}]}'

?alt=sse&key=sk-你的KEY 同样可以。

请求示例

curl "https://u-token.ai/v1/models/gemini-3.5-flash:generateContent" \
  -H "Authorization: Bearer sk-你的KEY" \
  -H "content-type: application/json" \
  -d '{"contents":[{"role":"user","parts":[{"text":"用一句话介绍你自己"}]}],
       "generationConfig":{"maxOutputTokens":1500}}'

响应

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [{ "text": "我是 Gemini,Google 打造的多模态 AI 助手。" }]
      },
      "finishReason": "STOP"
    }
  ],
  "usageMetadata": { "promptTokenCount": 6, "candidatesTokenCount": 17, "totalTokenCount": 23 }
}

Gemini 思考模型会先耗 thinking token,maxOutputTokens 给太小可能只出思考没正文——建议 ≥ 1500。SDK 的 base_url 用裸域名 https://u-token.ai,api_version / apiVersion 必须是 v1。Google Gen AI SDK 不改版本时会请求 /v1beta/models/... 并发送 x-goog-api-key,对不上本网关的 /v1/models/{model}:generateContent 入口。

gemini-3.5-flash 也可使用 OpenAI Chat Completions。需要 OpenAI SDK、reasoning_effort 或 OpenAI SSE 格式时,请参阅 OpenAI 格式;本页原生 generateContent 的请求、响应和流式方式保持不变。

配成媒体模型的 Gemini 图像模型走 POST /v1/router/task/create。请求体是 { "task": "Txt2Img" | "Img2Img", "model", "input": { "prompt", "aspect_ratio", "resolution", "images"? } }。Img2Img 的 images 是 HTTPS 地址。也可以传 callback_url,见媒体任务回调。比例和分辨率必须是该模型允许的值。成功后 GET /v1/router/tasks/{task_id} 返回 status: 2、results[].urls 和 cost。计费按输入 token、文本加思考 token、图像 token 三档;用量拆不开时整段输出按图像输出价计。各模型的比例和清晰度见 Gemini 图像。

仍是文本模型、并且价格页标了图像输出价的模型,继续用本页的 generateContent。generationConfig.responseModalities 包含 IMAGE 时,图像在 candidates[0].content.parts 的 inlineData 里,计费口径与上面相同。价格页没标图像输出价时,全部输出按输出价计。折合单图价只供报价展示,实扣以返回的 token 数为准。

本页目录

On this page