Hermes vs Claude Tool Use 对比笔记
状态:✅ 已完成(Day 3 产出)
📊 完整对比表
| 维度 | Hermes-3 | Claude (Sonnet/Opus) | 结论 |
|---|---|---|---|
| 函数调用格式 | XML 标签 <tool_call> 包裹 JSON |
API 原生 JSON block(type: "tool_use") |
Claude 更标准化,不需要手动拼标签 |
| 角色定义 | ChatML 四角色(system/user/assistant/tool) | Messages API 两角色(user/assistant),tool_result 用 user 角色 | 角色体系不同,但逻辑一一对应 |
| 停止判断 | 无内置机制,需正则解析文本中的 <tool_call> |
stop_reason 字段(API 保证准确) |
Claude 更可靠,不会误判 |
| 多轮对话 | 手动维护 ChatML 格式上下文 | 自动带上历史消息即可 | Claude 开发成本更低 |
| 并行调用 | 不明确支持 | 原生支持一次返回多个 tool_use | Claude 性能更好 |
| 参数严格校验 | 无 | strict: true 保证参数 100% 符合 schema |
Claude 更适合生产环境 |
| 工具选择控制 | 无 | tool_choice(auto/any/tool/none) |
Claude 可控性更强 |
| 中文能力 | 未经专门训练,8B 是短板 | 官方支持中文 | Claude 对多语言站点更友好 |
| 部署方式 | 开源自部署(Ollama/服务器) | 云端 API(Anthropic 服务器) | Hermes 适合数据隐私场景 |
| 成本 | 无 token 费,只有服务器成本 | 按 token 计费,Server 工具额外收费 | Hermes 大规模使用成本更低 |
| 集成难度 | 需自己写解析器、路由、上下文管理 | SDK 开箱即用 + Tool Runner 自动循环 | Claude 集成更快 |
🔑 核心差异总结
1. 协议层 vs 文本层
Claude:Tool Use 是 API 协议的一部分
→ stop_reason 字段 100% 告诉你 Claude 是否要调工具
→ tool_use / tool_result 是结构化 JSON block
Hermes:Tool Use 是文本格式的约定
→ 需要自己解析文本找 <tool_call> 标签
→ 需要自己拼 ChatML 格式维护上下文
2. 可控性
Claude 提供:
✅ tool_choice(控制是否调工具、调哪个工具)
✅ strict: true(参数严格校验)
✅ 并行工具调用
✅ Tool Runner(SDK 自动循环)
Hermes 提供:
❌ 以上均无原生支持
✅ 但可以自部署,数据不出服务器
3. 适用场景
| 场景 | 推荐 |
|---|---|
| 快速验证 Agent 概念 | Claude |
| 数据隐私敏感(如后台运营数据) | Hermes |
| 多语言站点(中/英/德/日/韩) | Claude |
| 大规模部署(成本敏感) | Hermes |
| 生产环境(需要参数精确) | Claude |
💡 对 SmallRig 的启示
- Agent 概念验证阶段:用 Claude 快速跑通流程,验证「这个操作能不能 Agent 化」
- 大规模部署阶段:如果数据隐私 + 成本是首要考虑,用 Hermes 自部署
- 混合方案可能最优:前台用户体验用 Claude(多语言好),后台数据操作用 Hermes(数据不出服务器)