Gemini 代码是按 Google 的格式编写的:contents 和 parts、systemInstruction、generationConfig、thinkingConfig。Lovely Router 在 /v1beta/models/{model} 下以这种格式提供 Gemini API,因此只需换一个 base URL,并把你的 Lovely Router 密钥当作 Gemini API 密钥,Google Gen AI SDK 和 Gemini CLI 就能直接使用。除模型 ID 外,你的请求会按你写的样子到达模型;同一个预付费密钥还能调用 Claude、GPT 和数据工具。
交给你的 AI 智能体
把这段提示词复制到 Claude Code、Cursor、Codex 或任何编程智能体中。它会告诉智能体文档在哪里,以及如何使用你的 API 密钥。
Integrate models from Lovely Router into this project through the native Gemini API. - Docs (read first): https://lovelyrouter.com/docs/models/gemini.md - Use the Google GenAI SDK with base URL https://lovelyrouter.com (http_options / httpOptions `baseUrl`, or GOOGLE_GEMINI_BASE_URL=https://lovelyrouter.com). Endpoints: https://lovelyrouter.com/v1beta/models/<model>:generateContent and :streamGenerateContent, unchanged from Google. - GET https://lovelyrouter.com/v1/models lists every model id with its price; pick one there, do not guess ids. - Auth: read my API key from the LOVELY_API_KEY environment variable and send it as `x-goog-api-key: $LOVELY_API_KEY`. Never print or commit the key. If it is not set, ask me to create one at https://lovelyrouter.com/app/keys. - Billing is prepaid: every call is charged to my balance, so test with a small request before running anything large. - Every docs page is plain Markdown; the full index is https://lovelyrouter.com/llms.txt. My task: <describe what you want to build or get>
工作原理
创建密钥
把 Gen AI SDK 指向 Lovely Router
把
https://lovelyrouter.com作为 SDK 的 base URL 传入。密钥放在 SDK 会发送的x-goog-api-key中;?key=和Authorization: Bearer也可以使用。调用 generateContent
generateContent、streamGenerateContent和countTokens的行为与 Google 文档所述一致。Shellcurl "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."}]}] }'
Gemini API 实时价格
| 模型 | 上下文 | 输入 | 输出 | 缓存读取 |
|---|---|---|---|---|
| Gemini 3.1 Pro gemini-3.1-pro | 1.05M | $2.00 | $12.00 | $0.20 |
| Gemini 3 Flash gemini-3-flash | 1.05M | $0.50 | $3.00 | $0.05 |
| Gemini 4 Argon gemini-4-argon | 1.05M | $2.00 | $10.00 | $0.20 |
| Gemini 3.5 Flash gemini-3.5-flash | 1.05M | $1.50 | $9.00 | $0.15 |
| Gemini 3.8 Flash gemini-3.8-flash | 1.05M | $0.75 | $3.75 | $0.075 |
| Gemini 3.6 Flash gemini-3.6-flash | 1.05M | $0.75 | $3.75 | $0.075 |
每 100 万 token 的美元价格,实时来自目录。
以上价格单位为美元/百万 token,取自实时目录。模型 ID 以 GET /v1/models 为准,例如 gemini-3.1-pro 和 gemini-3-flash;Google 的写法,如 gemini-3.1-pro-preview 或 models/gemini-3-flash,会解析到同一个模型。GET /v1beta/models 以 Gemini 自己的响应格式列出这种格式下可用的所有模型。Gemini 模型由 gemini-value 渠道组提供服务;模型广场显示实时可用性,状态页按小时显示每个渠道组的可用性。
原生 API 能带来什么
调用 :streamGenerateContent?alt=sse;SDK 会自动加上 alt=sse。每个事件都是一个部分 GenerateContentResponse,最后一个事件带有最终的 usageMetadata。
Gemini 3 模型默认会思考,可以按 Google 的文档用 thinkingConfig 进行调整。思考 token 显示在 usageMetadata.thoughtsTokenCount 中。
systemInstruction、generationConfig、safetySettings 以及 tools 中的函数声明都原样透传。
:countTokens 接受相同的 contents 并返回 totalTokens。它不收费,余额为零时也能使用。
以下 Gemini 端点不提供:cachedContents(显式上下文缓存)、文件上传、embedContent 和 batchEmbedContents、批处理模式以及 Live API。
Gemini 模型也支持 OpenAI Chat Completions 和 Anthropic Messages,当你的应用只支持其中一种格式时很有用。thinkingConfig 等 Gemini 专属选项只能保证在原生格式中生效。
隐式缓存,始终有效
Gemini 会自行缓存重复的提示词前缀,无需任何标记。缓存的 token 显示在 usageMetadata.cachedContentTokenCount 中,按缓存读取价格计费,没有缓存写入费用。
只有下一轮请求到达持有缓存的渠道,缓存才能发挥作用。Lovely Router 根据系统提示词和第一条用户消息为每个对话生成指纹,并把后续各轮请求送回同一个渠道。如果你的应用会改写或总结旧的历史记录,请改为每个对话发送一个固定的 x-session-id 请求头。系统指令中的时间戳会同时破坏指纹和 Gemini 自身的缓存,所以请把它放到最新的用户消息里。详见提示缓存。
渠道失败时
原本需要你自己处理的失败,网关会先替你重试。在某个渠道上失败的请求,会在同一渠道组内的另一个渠道上重试,最多尝试三次;流在首个 token 到达前会被暂缓,因此在此之前发生的失败会被重试,而不会传到你这里。剩下的错误以 Gemini 的错误格式返回:429 对应 RESOURCE_EXHAUSTED,502 对应 UNAVAILABLE。请以退避方式重试这些错误,并在响应带有 retry-after 时遵循它。无效请求(400、404、413、422)不会重试,因为换到别处也会以同样的方式失败。
建议使用 alt=sse。不加它时,streamGenerateContent 返回一个 JSON 数组;加上它,停滞三分钟的流会以一个明确的 DEADLINE_EXCEEDED 错误事件结束,便于你检测。完整的对照表见限流与故障转移。
常见用法
在 GenerateContentConfig 中设置 system_instruction 和 max_output_tokens 来调用 gemini-3.1-pro,然后读取 usage_metadata 了解费用。
在 gemini-3-flash 上使用 generate_content_stream,每个数据块一到就渲染它的文本。
在为一次调用付费之前,对相同的内容运行 count_tokens,把 total_tokens 与模型的上下文长度进行比较。
专门为 CLI 创建一个设有消费上限的密钥,这样长时间的会话也不会超出预算。
把生产环境的密钥绑定到 gemini-value,或发送 x-lovely-group,每次重试都会留在该渠道组内,价格不变。
费用说明
Gemini 按 token 计费。未缓存输入为 promptTokenCount 减去 cachedContentTokenCount;缓存 token 按缓存读取价格计费;输出为 candidatesTokenCount 加上 thoughtsTokenCount,按输出价格计费。目前所有渠道组都按官方标价计费,因此每个 Gemini 模型的价格与 Google 公布的一致。费用会在响应返回后几秒内从你的预付费余额中扣除。
没有订阅,也没有月费。在到达模型之前就被拒绝的请求不收费,重试的尝试不计费,你取消的流只为已生成的内容付费。价格页在一页中列出了所有产品。
常见问题
Google Gen AI SDK 能配合 Lovely Router 使用吗?+
可以。在 http_options(Python)或 httpOptions(Node.js)中把 https://lovelyrouter.com 作为 base URL 传入,并把你的 Lovely Router 密钥作为 API 密钥。请求体原样透传。
可以使用 Gemini CLI 吗?+
可以。把 GOOGLE_GEMINI_BASE_URL 设为 https://lovelyrouter.com,把 GEMINI_API_KEY 设为你的密钥,然后用 gemini -m gemini-3.1-pro 启动。
思考 token 如何计费?+
思考 token 报告在 usageMetadata.thoughtsTokenCount 中,与 candidatesTokenCount 一起按输出价格计费。
支持上下文缓存吗?+
支持隐式缓存:重复的前缀由 Gemini 缓存并按缓存读取价格计费,网关会让每个对话留在同一个渠道上。不支持通过 cachedContents API 进行显式缓存。
可以通过 OpenAI SDK 调用 Gemini 吗?+
可以。Gemini 模型用同一个密钥即可接受 OpenAI Chat Completions 请求。需要 thinkingConfig 或其他 Gemini 专属选项时,请使用原生 Gemini API。