# 选择 LLM API 协议

## 依据契约选择，而不是只看厂商

网关提供 LLM 原生协议。通过 `/v1/models` 查询公开模型 ID、协议标签与声明的能力；该接口不提供端点列表。选择 SDK 或修改 base URL 前，应查阅目标模型的[当前指南](/zh/docs)，确认支持的端点与请求参数，不要仅凭协议标签推断端点兼容性。只替换模型字符串，不会把 Chat Completions 请求转换成 Claude 或 Gemini 请求。

| 协议 | 请求端点 | 认证 | 输入结构 |
| --- | --- | --- | --- |
| OpenAI Chat Completions | `/v1/chat/completions` | `Authorization: Bearer API_KEY` | `model`、`messages` |
| OpenAI Responses | `/v1/responses` | `Authorization: Bearer API_KEY` | `model`、`input` |
| Claude Messages | `/v1/messages` | `x-api-key: API_KEY`、`anthropic-version: 2023-06-01` | `model`、`messages`、`max_tokens` |
| Gemini content | `/v1beta/models/{model}:generateContent` | `x-goog-api-key: API_KEY` | 包含 `parts` 的 `contents` |

表格说明网关端点类型，并不表示每个模型都支持全部端点。使用模型示例中的平台域名，不要把平台密钥发送到上游厂商域名。

## 请求和响应要一起适配

Chat Completions 的文本通常位于 `choices[].message`；Claude 返回内容块，Gemini 返回包含 parts 的 candidates，Responses 则返回 output items。保留原生 usage 与结束原因，不要将它们强行转换成媒体任务结构。

工具调用是交给应用执行的结构化指令，不代表工具已经执行。执行前仍需应用自己的参数校验和权限控制。工具、结构化输出、图片输入与推理能力仅在准确路由明确支持时开启；未声明能力不等于承诺支持。

## 分步骤迁移

1. 记录现有端点、模型 ID、角色结构、输出限制字段和结果解析方式。
2. 选择可用目标路由，阅读对应[模型指南](/zh/docs)。
3. 同时适配请求与响应，首次请求不带不必要的可选参数。
4. 用已获批准的小样本覆盖空结果、拒绝、截断与错误。
5. 按[评测工作表](/zh/docs/llm/evaluation)比较任务质量和总用量，再决定是否切换生产流量。

部分 SDK 会自动添加 `/v1`、默认重试或选择其他端点。检查最终 URL 与重试配置，但不要打印密钥。SDK 初始化成功并不说明协议兼容。

## 下一步

[首次请求](/zh/docs/llm/first-request)提供最小 Chat Completions 示例；[Claude Opus 5.5](/zh/docs/models/claude-opus-5-5)展示 Messages，[Gemini 3.6 Flash](/zh/docs/models/gemini-3.6-flash)展示原生内容请求。执行前再次确认可用性。不同协议的流式事件也不同，继续阅读[流式处理](/zh/docs/llm/streaming)。
