Gemini 格式
用 Google generateContent 原生协议调用 Gemini。
/v1/models/{model}:generateContentGoogle 原生 contents / parts 请求,模型名作为 URL 的一部分。
流式响应使用 :streamGenerateContent。
鉴权
只传一把平台 API Key。下面几种来源都可以:
| 来源 | 示例 |
|---|---|
Authorization | Authorization: Bearer sk-你的KEY |
x-api-key | x-api-key: sk-你的KEY |
x-goog-api-key | x-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 数为准。
