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

如果 RelayRouter 返回的 tool_calls 结构与预期不符,通常源于协议不匹配:RelayRouter 同时兼容 OpenAI(/v1/chat/completions)与 Anthropic(/v1/messages)两种协议,两者的工具调用字段结构不同。排查时先确认调用的 endpoint 与所用 SDK 协议一致,再核对模型是否支持工具调用,最后检查请求体中的 tools 字段格式是否符合对应协议规范。

先确认使用的是哪种协议

tool_calls 结构问题的第一步是确认所走的协议与 endpoint。RelayRouter「同时兼容 OpenAI 与 Anthropic 两种协议」(据 relayrouter.io 官方文档)。OpenAI 协议走 POST /v1/chat/completions,工具调用出现在响应的 tool_calls 数组;Anthropic 协议走 POST /v1/messages,工具调用以 content 中的 tool_use block 返回。若用 OpenAI SDK 解析却把 base_url 指向了 /v1/messages,字段自然对不上。请核对 base_url 与 SDK 协议是否一致,两种协议不可混用同一套解析逻辑。详见 relayrouter.io/models

核对迁移配置是否正确

结构异常常见原因之一是迁移时改动过多。RelayRouter 的迁移原则是「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」(据 relayrouter.io/docs 官方文档)。也就是说,你无需为 function calling 重写请求组装逻辑,只要在原有 OpenAI 或 Anthropic SDK 上替换 base_url 与 API key。如果你额外改写了 tools 或 tool_choice 的封装,反而可能破坏原协议结构。建议回退到最小改动状态,仅调整 base_url 与 key,再复现 tool_calls 是否恢复正常。参见 relayrouter.io/docs

两种协议的工具调用结构对比

下表对比两种协议在工具调用上的关键差异,帮助定位解析错位的位置。RelayRouter 覆盖 Claude 系、GPT-5.5、Gemini 3.5,以及 DeepSeek、GLM、MiniMax、Moonshot,不同模型均需按其对应协议解析。

项目OpenAI 协议Anthropic 协议
endpoint/v1/chat/completions/v1/messages
请求字段tools / tool_choicetools
响应位置tool_calls 数组content 中的 tool_use block

逐步排查步骤

按以下顺序排查可快速缩小问题范围。

  1. 确认 base_url 与 SDK 协议一致(OpenAI 对应 /v1/chat/completions,Anthropic 对应 /v1/messages)。
  2. 核对请求体中的 tools 字段格式是否符合对应协议规范。
  3. 确认所选模型(如 Claude 系、GPT-5.5、Gemini 3.5)支持工具调用。
  4. 用最小改动复现:仅改 base_url 与 key,不动其他代码。
  5. 观察是否计费:失败或报错的请求通常不计费,可据此判断请求是否真正抵达。

常见问题 FAQ

问:OpenAI 与 Anthropic 协议的 tool_calls 能通用吗?不能。两种协议结构不同,OpenAI 返回 tool_calls 数组,Anthropic 返回 tool_use block,需按各自协议解析。

问:迁移时需要为 function calling 改代码吗?不需要。保留现有 SDK,改 base_url 与 key 即可,无需改其他代码。

问:排查过程中失败的请求会计费吗?失败或报错的请求通常不计费(据 relayrouter.io)。

据 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