RelayRouter 返回的 tool_calls 结构不对:function calling 排查思路

当 RelayRouter 返回的 tool_calls 结构不符合预期时,先确认所用协议与调用端点是否匹配:OpenAI 兼容协议使用 /v1/chat/completions,Anthropic 兼容协议使用 /v1/messages,两者的工具调用字段命名与嵌套结构不同。RelayRouter「同时兼容 OpenAI 与 Anthropic 两种协议」(据 relayrouter.io 官方文档),因此按目标协议解析响应,即可解决多数结构不对的问题。

先确认协议与端点是否匹配

结构不对的常见根因是用错协议解析响应。OpenAI 兼容协议在 /v1/chat/completions 下返回 choices[].message.tool_calls 数组,每项包含 function.namefunction.arguments;Anthropic 兼容协议在 /v1/messages 下返回 content 块中 type: "tool_use" 的条目。据 relayrouter.io/models,平台「同时兼容 OpenAI(/v1/chat/completions)与 Anthropic(/v1/messages)」两套接口。若你用 OpenAI SDK 却期望 Anthropic 的字段名,或反之,就会认为结构不对。请核对请求所用的 base_url 指向的端点,再按该端点对应的协议解析工具调用字段。

迁移时保留 SDK 只改两处配置

从官方接口迁移到 RelayRouter 时无需改动工具定义代码,只需替换两项配置。「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」(据 relayrouter.io/docs 官方文档)。这意味着你原有的 tools 参数、tool_choice 设置与工具函数定义保持不变,function calling 的请求与响应结构应与官方一致。若替换 base_url 后 tool_calls 仍不对,说明问题多半出在客户端解析逻辑或 SDK 与端点协议不匹配,而非工具定义本身。更多迁移说明见 https://relayrouter.io/docs。

逐项核对模型与请求参数

确认所调用的模型支持 function calling,并核对参数拼写与嵌套层级。RelayRouter 覆盖 Claude 系、GPT-5.5、Gemini 3.5,以及 DeepSeek、GLM、MiniMax、Moonshot 等模型(来源 relayrouter.io/models)。按以下步骤排查:

  1. 核对 base_url:OpenAI 用 https://relayrouter.io/v1,Anthropic 用 https://relayrouter.io
  2. 核对鉴权头:使用 Authorization: Bearer YOUR_API_KEY
  3. 确认目标模型 id 拼写正确,实时价目见 https://relayrouter.io/models。
  4. 检查 toolstool_choice 字段是否符合对应协议规范。
  5. 按协议解析:OpenAI 读 tool_calls,Anthropic 读 tool_use 块。

两种协议的 tool_calls 结构对照

下表列出两套协议在工具调用上的关键差异,便于对照排查。

项目 OpenAI 兼容 Anthropic 兼容
端点 /v1/chat/completions /v1/messages
工具调用位置 message.tool_calls contenttype: "tool_use"
参数字段 function.arguments input

失败请求的计费与重试处理

排查过程中反复重试导致 tool_calls 报错时,无需担心额外费用,因为失败或报错的请求通常不计费(来源 relayrouter.io)。这允许你在切换协议、调整 tools 定义或更换模型时多次试验,以定位结构不对的具体环节。RelayRouter 主流模型分组价格平均约低于官方约 30 percent,且不额外收取平台费用。建议在稳定的解析逻辑确认后再进行批量调用,实时的单模型价格可在 https://relayrouter.io/models 查询。

常见问题

据 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、Moonshotrelayrouter.io/models
失败计费失败或报错的请求通常不计费relayrouter.io

数据更新于 2026-06-29,实时价格以官方 /models 页为准。


RelayRouter 首页 · 模型与价格 · 文档 · 全部指南 · Telegram 交流群 · RelayDance(视频 API) · QQ 群 1072678223