网关工作原理
Lovely Router 按你发送的 API 格式把每个请求交给模型。本页介绍端点、模型 ID、认证请求头,以及网关会改动的少数几处。
Lovely Router 在同一个域名上提供 Anthropic、OpenAI 和 Gemini 三种 API。它不在格式之间做转换:Anthropic 格式的请求会发往接受 Anthropic 格式的渠道,除了两处小改动之外,你的请求体会原样到达渠道。用模型自己厂商的 API 调用时,模型收到的请求与厂商文档描述的完全一致。thinking、cache_control、tools、generationConfig 等参数都会原封不动地传给模型,因此厂商自己的文档同样适用。
端点与 base URL#
把 SDK 指向对应 API 的 base URL,路径由 SDK 自行添加。
| API | 端点 | SDK base URL | 指南 |
|---|---|---|---|
| Anthropic Messages | POST /v1/messages、POST /v1/messages/count_tokens | https://lovelyrouter.com | Anthropic Messages |
| OpenAI Chat Completions | POST /v1/chat/completions | https://lovelyrouter.com/v1 | OpenAI Chat Completions |
| OpenAI Responses(GPT 模型) | POST /v1/responses | https://lovelyrouter.com/v1 | Responses API |
| Gemini | POST /v1beta/models/{model}:generateContent、:streamGenerateContent、:countTokens | https://lovelyrouter.com | Gemini |
| OpenAI Images(图像模型) | POST /v1/images/generations、POST /v1/images/edits | https://lovelyrouter.com/v1 | 图像 |
| 视频(角色替换) | POST /v1/videos | https://lovelyrouter.com/v1 | 视频 |
| 实时视频 | POST /v1/videos/live | https://lovelyrouter.com/v1 | 实时视频 |
| 音乐视频 | POST /v1/videos/music | https://lovelyrouter.com/v1 | 音乐视频 |
| 模型列表 | GET /v1/models、GET /v1beta/models | 模型与价格 |
其他模型端点返回 404,请参阅不支持的功能。数据工具和浏览器智能体的 API 使用同一个域名和同一套密钥。
各模型使用哪种 API#
每个模型都有一种原生 API:即其厂商为它设计的格式。能用原生 API 时请尽量使用。
| 模型系列 | 原生 API | 目前也接受 |
|---|---|---|
Claude(claude-*) | Anthropic Messages | OpenAI Chat Completions、Gemini |
GPT(gpt-*) | OpenAI Chat Completions、OpenAI Responses | Anthropic Messages、Gemini |
Gemini(gemini-*) | Gemini | OpenAI Chat Completions、Anthropic Messages |
GPT Image(gpt-image-*) | OpenAI Images | 无 |
自托管模型(dongfangshuo-*) | OpenAI Chat Completions | Anthropic Messages |
自托管图像模型(z-image-*) | OpenAI Images | 无 |
当你用其他格式调用某个模型时,渠道会为该模型转换请求,因此厂商的某些功能可能无法保留。厂商特有的参数是为厂商自己的 API 定义的。Anthropic 的 cache_control 和 thinking、OpenAI 的 reasoning_effort、Gemini 的 thinkingConfig,只有在模型的原生格式下才能确保生效;换成其他格式,它们可能被忽略或被拒绝。
一个模型接受哪些格式,取决于为它提供服务的渠道,因此可能会变化。模型广场按模型列出了这些格式。如果没有任何渠道接受你的格式,请求会失败并返回 404,消息类似 Model 'gpt-6.1-sol' is not served in gemini format in any group.
模型 ID#
使用 GET /v1/models 中的 ID,例如 claude-sonnet-5.5、gpt-6.1-sol 或 gemini-3.1-pro。网关也接受其他工具使用的写法,并解析为同一个模型:
| 你发送的 | 解析为 |
|---|---|
claude-sonnet-5-5 | claude-sonnet-5.5 |
anthropic/claude-sonnet-5.5 | claude-sonnet-5.5 |
claude-haiku-4-5-20251001 | claude-haiku-4.5 |
gemini-3.1-pro-preview | gemini-3.1-pro |
models/gemini-3-flash | gemini-3-flash |
规则如下:忽略大小写;去掉开头的 vendor/ 或 models/ 前缀;. 和 - 可互换;去掉末尾的日期(-20251001)、-preview 或 -latest。日志、密钥白名单和计费始终使用规范 ID。
无法匹配任何模型的 ID 会返回 404,消息为 Model '<id>' is not available. See GET /v1/models.
网关会改动什么#
请求体按你发送的原样转发,只有两处例外:
- 模型 ID。 它会被替换为服务渠道所要求的 ID。因此响应中的
model字段可能采用厂商的写法,例如claude-sonnet-5-5。 - OpenAI 流中的用量。 流式 Chat Completions 请求会被加上
stream_options.include_usage: true,以便网关为这次调用计费。你的流末尾会多出一个数据块,其choices数组为空,并带有一个usage对象。读取数据块时,请处理choices为空的情况。
请求头不会被转发,anthropic-version、anthropic-beta 和 openai-beta 除外。缺少 anthropic-version 时会发送 2023-06-01。在 Gemini 端点上,alt=sse 等查询参数会被转发;key 会被移除。
响应逐字节原样返回。网关保留 content-type 和 cache-control 响应头,并添加自己的响应头(参见响应头)。厂商的请求 ID 和速率限制响应头不会透传。
当模型以请求无效为由拒绝请求(400、404、413、422)时,你会收到相同的状态码和原因,采用你所用 API 的错误格式。其他失败会先在另一个渠道上重试。请参阅限流与故障转移和错误。
身份验证#
每个端点都接受放在以下任一位置的密钥,因此每个 SDK 使用其默认认证方式即可:
| 位置 | 使用方 |
|---|---|
Authorization: Bearer lr-... | OpenAI SDK、使用 ANTHROPIC_AUTH_TOKEN 的 Claude Code、大多数 HTTP 客户端 |
x-api-key: lr-... | Anthropic SDK |
x-goog-api-key: lr-... | Google Gen AI SDK、Gemini CLI |
?key=lr-... 查询参数 | Gemini REST 示例 |
GET /v1/models 和 GET /v1beta/models 无需密钥。密钥的管理方式请参阅身份验证。
响应头#
| 响应头 | 值 |
|---|---|
x-lovely-request-id | 本次调用的 ID,例如 req_6f1c...。与日志中的条目对应。联系支持时请附上它。 |
x-lovely-group | 服务本次调用的渠道分组,例如 claude-value。 |
x-lovely-channel | 该分组的渠道标签,经过 URL 编码,例如 Pooled%20capacity。 |
x-lovely-queued-ms | 仅在调用等待容量时出现:等待的毫秒数。 |
浏览器可以读取前三个:它们列在 access-control-expose-headers 中。
请求的生命周期#
- 身份验证。 密钥必须有效且未过期,否则返回
401。 - 解析模型。 按上文所述解析 ID,并与密钥的模型白名单比对(不允许时返回
403)。 - 检查余额。 余额小于或等于零,或密钥超出消费上限,返回
402。 - 应用密钥限制。 执行密钥的每分钟请求数和并发限制(
429)。请参阅限流与故障转移。 - 选择渠道。 进行中的对话会回到持有其提示缓存的渠道。新对话会发往渠道分组中最优的可用渠道。请参阅提示缓存。
- 调用模型。 如果某个渠道在产生输出之前失败,请求会转到另一个渠道,最多尝试三次。流会被暂存到第一个 token 到达,因此整个过程对你不可见。请参阅流式输出。
- 计量与记录。 根据响应中的 token 数确定扣费,并在几秒内从你的余额中扣除。请参阅模型与价格。
不支持的功能#
只有上述端点可用。以下端点返回 404:
- 已存储的 OpenAI 响应(
/v1/responses/{id})、旧版 Completions、embeddings、图像变体(image variations)、audio、files 和 batches。 - Anthropic Message Batches、Files 以及按 ID 获取模型的端点。
- Gemini
cachedContents(显式上下文缓存)、文件上传、embedContent和 Live API。
OpenAI Responses API 只提供 GPT 模型。在你的工具中使用提供了常见客户端的配置。