Gemini
通过原生 Gemini API,用 Google Gen AI SDK 或 Gemini CLI 调用 Gemini 模型。内容涵盖 generateContent、使用 alt=sse 的流式输出、countTokens 和思考。
Lovely Router 在 /v1beta/models/{model} 下提供 Gemini API 的 generateContent、streamGenerateContent 和 countTokens 方法。把 Google Gen AI SDK 指向 https://lovelyrouter.com,并把你的 Lovely Router 密钥作为 API 密钥传入即可。请求体原样透传,因此每个字段都适用 Google 的 API 参考。
配置 SDK#
SDK 通过 x-goog-api-key 发送密钥,?key= 查询参数同样可用。
curl "https://lovelyrouter.com/v1beta/models/gemini-3.1-pro:generateContent" \
-H "x-goog-api-key: $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"contents": [{"role": "user", "parts": [{"text": "Explain DNS in two sentences."}]}]
}'用 pip install google-genai 或 npm install @google/genai 安装 SDK。模型 ID 以 GET /v1/models 为准;Google 的写法(例如 gemini-3.1-pro-preview)会解析为同一个模型。GET /v1beta/models 以 Gemini 自己的响应格式列出该格式下可用的所有模型。
流式接收响应#
调用 :streamGenerateContent?alt=sse 获取服务器发送事件(SSE)。每个事件都是一个部分 GenerateContentResponse;最后一个事件带有最终的 usageMetadata。SDK 会替你加上 alt=sse。
curl -N "https://lovelyrouter.com/v1beta/models/gemini-3-flash:streamGenerateContent?alt=sse" \
-H "x-goog-api-key: $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{"contents": [{"role": "user", "parts": [{"text": "Count to ten, slowly."}]}]}'不带 alt=sse 时,该方法会以一个 JSON 数组的形式流式返回。这样也可以,但 SSE 更容易解析,而且在流卡住时,网关可以发送一个干净的错误事件。请参阅流式输出。
设置系统指令和思考#
systemInstruction、generationConfig、safetySettings 和 tools(函数声明)都按 Google 的文档原样透传。Gemini 3 模型默认会思考;可按照 Google 的思考指南用 thinkingConfig 进行调整。
response = client.models.generate_content(
model="gemini-3.1-pro",
contents="Plan a three-day trip to Kyoto.",
config=types.GenerateContentConfig(
system_instruction="You are a concise travel planner.",
max_output_tokens=4096,
),
)
print(response.text)
print(response.usage_metadata)思考 token 报告在 usageMetadata.thoughtsTokenCount 中,与 candidatesTokenCount 一起按输出价格计费。只有请求设置了 generationConfig.thinkingConfig.includeThoughts: true 时,回答中才会包含带 "thought": true 的思考摘要分块,与谷歌官方接口一致;未设置时回答不含思考分块。
计算 token 数#
:countTokens 接受与生成调用相同的 contents,返回 totalTokens。它是免费的,余额为零时也能使用。计数结果为近似值:用它检查内容大小是否超出上下文窗口,而不是预测确切的扣费。
curl "https://lovelyrouter.com/v1beta/models/gemini-3.1-pro:countTokens" \
-H "x-goog-api-key: $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{"contents": [{"role": "user", "parts": [{"text": "Hello, Gemini"}]}]}'使用 Gemini CLI#
Gemini CLI 从环境变量读取端点和密钥:
export GOOGLE_GEMINI_BASE_URL=https://lovelyrouter.com
export GEMINI_API_KEY="$LOVELY_API_KEY"
gemini -m gemini-3.1-pro其他客户端请参阅在你的工具中使用。
缓存#
Gemini 会自行缓存重复的提示词前缀(隐式缓存)。缓存的 token 显示在 usageMetadata.cachedContentTokenCount 中,按缓存读取价格计费。网关让每个对话始终留在同一个渠道上,使缓存保持有效;请参阅提示缓存。
不支持的功能#
以下 Gemini API 端点返回 404:cachedContents(显式上下文缓存)、文件上传、embedContent 和 batchEmbedContents、批处理模式,以及 Live API。
请求头#
| 请求头 | 说明 |
|---|---|
x-goog-api-key | 你的 Lovely Router 密钥。Authorization: Bearer 和 ?key= 同样可用。 |
x-lovely-group | 可选。当你的密钥未绑定渠道分组时,把请求锁定到指定的渠道分组。 |
x-session-id | 可选。把多个请求归为同一个对话,用于缓存感知路由。 |
错误采用 Gemini 的格式 {"error": {"code": 429, "message": "...", "status": "RESOURCE_EXHAUSTED"}};请参阅错误。