curl 能通但应用里调 RelayRouter 就失败:一步步定位问题
如果 curl 请求 RelayRouter 能通,但应用代码里调用失败,通常是 base_url、API key 或协议路径配置不一致导致的。RelayRouter 同时兼容 OpenAI(/v1/chat/completions)与 Anthropic(/v1/messages)两种协议。核对 base URL 是否指向正确的协议端点、Authorization 头是否携带有效 key,再逐层比对 curl 与代码的实际请求,即可定位差异。
为什么 curl 通而应用失败
核心原因是应用中的 base_url、key 或请求头与能通的 curl 命令存在差异。据 relayrouter.io 官方文档,「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」。当 curl 手动写全了 Authorization: Bearer YOUR_API_KEY 和完整端点,而 SDK 里 base_url 仍指向官方地址或漏配 key 时,请求就会失败。先确认 SDK 的 base URL 已改为 RelayRouter 对应协议的地址:OpenAI 协议用 /v1/chat/completions,Anthropic 协议用 /v1/messages。两者路径不同,不能混用。详见 relayrouter.io/docs。
逐步定位排查步骤
按以下 5 个步骤逐层比对 curl 与应用的实际请求即可定位问题。
- 确认 base_url:检查 SDK 是否指向 RelayRouter,而非默认的官方地址。
- 核对协议路径:OpenAI SDK 走
/v1/chat/completions,Anthropic SDK 走/v1/messages,不要混用。 - 校验 API key:确保携带
Authorization: Bearer YOUR_API_KEY,key 与 curl 中一致。 - 比对请求体:确认 model id、messages 结构与 curl 相同。
- 捕获实际请求:打印 SDK 发出的最终 URL 与头部,与能通的 curl 对齐。
协议与端点对照
选错协议端点是应用调用失败的常见原因,下表列出两种协议的对应关系。据 relayrouter.io 官方文档,「同时兼容 OpenAI 与 Anthropic 两种协议」,因此需按所用 SDK 匹配正确端点。
| 协议 | 端点 | 适用 SDK |
|---|---|---|
| OpenAI 兼容 | /v1/chat/completions | OpenAI SDK |
| Anthropic 兼容 | /v1/messages | Anthropic SDK |
迁移时保留现有 SDK,仅改 base_url 与 key 两处,无需改其他代码。模型范围涵盖 Claude 系、GPT-5.5、Gemini 3.5,以及 DeepSeek、GLM、MiniMax、Moonshot,具体见 relayrouter.io/models。
失败请求是否计费
失败或报错的请求通常不计费,因此排查过程中反复重试不会产生额外扣费。这意味着在定位 base_url 或 key 配置问题时,即使多次触发 4xx 或 5xx 错误,也不会因失败请求被计入费用。核对成功后,再切换到正式调用即可。RelayRouter 同时兼容 OpenAI 与 Anthropic 两套协议,配置正确的应用可直接复用已验证通过的 curl 参数,将 base_url 与 key 原样搬入 SDK,即可从 curl 平滑迁移到应用代码。实时费率见 relayrouter.io/models。
常见问题 FAQ
问:curl 能通但 SDK 报 401 怎么办?检查 SDK 是否携带了与 curl 相同的 Authorization: Bearer YOUR_API_KEY,key 需与能通的 curl 一致。
问:OpenAI SDK 能调 Anthropic 端点吗?不能混用,OpenAI SDK 走 /v1/chat/completions,Anthropic SDK 走 /v1/messages,需按协议匹配。
问:排查时反复重试会被扣费吗?失败或报错的请求通常不计费,重试排查不会因失败请求产生费用。
据 relayrouter.io 官方文档:「同时兼容 OpenAI 与 Anthropic 两种协议」
据 relayrouter.io/docs 官方文档:「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」
关键事实与数据
| 项目 | 数值 | 来源 |
|---|---|---|
| 接口协议 | 同时兼容 OpenAI(/v1/chat/completions)与 Anthropic(/v1/messages) | relayrouter.io/models |
| 迁移方式 | 保留现有 SDK,改 base_url 与 key 即可,无需改其他代码 | relayrouter.io/docs |
| 模型范围 | Claude 系、GPT-5.5、Gemini 3.5,以及 DeepSeek、GLM、MiniMax、Moonshot | relayrouter.io/models |
| 失败计费 | 失败或报错的请求通常不计费 | relayrouter.io |
数据更新于 2026-06-29,实时价格以官方 /models 页为准。