DeepAI Paper DeepAI Agent 接入,Hermes 多模态与工具调用,OpenAI Compatible API,代码 Agent 教程,错误排查 OpenClaw 接入 DeepAI API 中转站:Gemini 工具调用 400 与 thought_signature 透传

OpenClaw 接入 DeepAI API 中转站:Gemini 工具调用 400 与 thought_signature 透传

OpenClaw 通过 DeepAI API 中转站 或其他 OpenAI-compatible 网关调用不同模型时,最容易忽略的是 provider-specific metadata。普通聊天只看 messages 和 content 就够了,但 Gemini 这类带 thinking / reasoning 的模型,在工具调用链路里还可能要求保留 thought_signature。一旦中转层丢掉它,第一轮工具调用能成功,第二轮回传工具结果却会 400。

OpenClaw 接入 DeepAI API 中转站时 Gemini 工具调用 thought_signature 缺失导致 400 的排查流程
Gemini 工具调用链路中,extra_content.google.thought_signature 需要在 tool result 回传时原样保留。

GitHub Issue 背景:第一次工具调用成功,回传结果时报 400

OpenClaw GitHub 仓库中有一个已关闭且标记为 completed 的 Issue:用户通过 Google Vertex AI 的 OpenAI-compatible endpoint 使用 Gemini 3 Flash 作为 subagent 模型。模型第一次能正常返回 tool call,但 OpenClaw 把工具结果发回模型时,Vertex API 返回 400,提示函数调用缺少 thought_signature

根因是 Gemini 在 thinking 启用时,会在 assistant message 和 tool call 的 extra_content.google 中返回 thought_signature。后续把 tool result 发回模型时,这个签名必须原样带回。OpenAI-compatible 适配层如果只保留标准字段,而丢掉 extra_content,就会破坏工具调用 roundtrip。

为什么 OpenAI-compatible 仍然需要保留扩展字段

OpenAI-compatible 是一套通用协议,但不同模型供应商仍然可能在响应里放入扩展字段。对于工具调用,扩展字段常常不是“可有可无的元数据”,而是下一轮请求必须带回的状态凭证。

  • 标准字段:tool_callsfunction.namefunction.arguments
  • Gemini 扩展:extra_content.google.thought_signature
  • 风险点:中转层、SDK、日志清洗或消息转换时把扩展字段丢掉。
  • 结果:tool result 回传时模型无法验证思考状态,返回 400。

DeepAI API 中转站用户应该怎么理解这个问题

如果你通过 DeepAI API 中转站统一接入不同模型,建议把工具调用分成两层看:第一层是标准 OpenAI-compatible 工具协议,第二层是具体供应商的扩展状态。中转站可以统一鉴权、路由、日志和额度,但在转发工具调用时,不能随意丢弃 provider-specific 字段。

对于 Gemini、Claude、OpenAI 新模型或其他带 reasoning 的模型,工具调用链路中可能存在类似签名、reasoning id、tool state、cache id 等字段。它们未必都显示在 UI 中,但可能决定下一轮请求能否通过。

排查步骤:确认 thought_signature 是否被保留

  1. 抓取第一次模型返回的 assistant message,确认 tool call 中是否包含 extra_content.google.thought_signature
  2. 抓取 OpenClaw 内部 transcript,确认这个字段是否被存储。
  3. 抓取 tool result 回传给模型的下一轮请求,确认同一个签名是否被原样带回。
  4. 检查中转站或代理是否做了 JSON 字段白名单过滤。
  5. 升级到包含修复的 OpenClaw 版本,重新跑同一个工具调用用例。

错误表现和误判

  • 普通聊天正常:只能说明基础 messages 链路可用。
  • 第一次工具调用成功:说明模型能生成 tool call,但还没验证 tool result roundtrip。
  • 第二轮 400:优先看工具结果回传格式和 provider-specific metadata。
  • 不要只换 Key:这个问题不是认证失败,而是请求体缺少必要状态。

中转站和网关的实现建议

如果你维护 DeepAI API 中转站、模型网关或 OpenAI-compatible adapter,建议遵循这些原则:

  • 转发工具调用消息时,保留未知但安全的扩展字段。
  • 不要只按 OpenAI 标准字段重建 tool_calls,避免丢失 provider metadata。
  • 对不同 provider 增加回归测试:tool call → tool result → final answer。
  • 日志里记录字段是否存在,但不要泄露完整敏感签名。
  • 确保同一 provider、同一模型、同一会话内才重放这类签名,避免跨路由污染。

为什么这对 Agent 工作流很重要

Agent 工具调用不是一次请求就结束。它通常包含模型选择工具、外部工具执行、工具结果回传、模型继续推理和最终回答。任何一环丢失上下文或签名,都会让工作流看起来“不稳定”。对于 OpenClaw、Claude Code、Dify、n8n 这类 Agent 工具,模型能聊天只是第一步,工具 roundtrip 稳定才是生产可用的核心。

参考资料

总结

OpenClaw 接入 DeepAI API 中转站或其他 OpenAI-compatible 网关调用 Gemini 工具时,遇到第二轮 tool result 400,不要只看 Base URL 和 API Key。真正的关键可能是 extra_content.google.thought_signature 是否被保留并回传。跨模型中转时,provider-specific metadata 是工具调用可靠性的基础,不能被适配层随手丢掉。

Related Post

Dify deepai tool calling array schema missing items.png

Dify 接入 DeepAI API 中转站:Tool Calling 报 array schema missing items 怎么排查Dify 接入 DeepAI API 中转站:Tool Calling 报 array schema missing items 怎么排查

Dify 自定义工具接入 OpenAI 插件或 API 中转站时,如果 Tool Calling 报 invalid_function_parameters:array schema missing items,根因通常不是 Key 或 Base URL,而是工具 JSON Schema 的 array 参数缺少 items。本文结合 Dify GitHub Issue #32894 和 PR #33137,整理排查步骤、修复示例与

Cherry studio deepai mcp function calling model.png

Cherry Studio 接入 DeepAI API 中转站:MCP 不显示或不调用的 function calling 排查Cherry Studio 接入 DeepAI API 中转站:MCP 不显示或不调用的 function calling 排查

Cherry Studio 配好 MCP Server 后工具按钮不显示、MCP 没被调用,常见原因是输入框未启用 MCP,或模型没有被识别为 function calling 模型。本文结合 Cherry Studio Issue #3513 和 MCP 文档,整理 DeepAI API 中转站接入时的模型能力、tools 透传与日志排查方法。