Provider 对照总表
这一页把 OpenAI、Anthropic、Gemini 在 tool calling 上最核心的差异压成一张表,方便查阅。
| 维度 | OpenAI | Anthropic | Gemini |
|---|---|---|---|
| 常见术语 | tool calls | tool use | function calling |
| 工具定义入口 | tools | tools | function declarations / tools |
| 调用请求承载 | message.tool_calls | content blocks 中的 tool_use | SDK / response parts |
| 参数形态 | 常见为字符串化 JSON | 常见为对象 | 取决于 SDK/响应结构 |
| 回填方式 | role=tool + tool_call_id | tool_result block | 依 SDK 而异 |
| 流式处理难点 | delta 拼接 arguments | content block 增量事件 | SDK 封装差异大 |
一个最重要的结论
三家语义相近,但协议细节并不兼容。
所以如果你想同时支持多个 provider,最好尽快抽一层统一 adapter,而不是把业务逻辑直接绑死在某家响应结构上。
快速结论
什么时候 OpenAI 最省心
- 想快速搭一个最小闭环
- 想找教程和示例最多的路线
- 想用最直观的
tool_calls心智模型
什么时候 Anthropic 更要小心解析
- content blocks 混合 text / tool_use / tool_result
- 不能想当然按 OpenAI 的消息结构写解析器
什么时候 Gemini 最容易踩 SDK 坑
- 同一个概念在不同 SDK 包装形式不同
- 很多人看到的是示例,而不是清晰的原始协议说明