AI Agent: Anthropic thinking block is duplicated across parallel tool calls, Anthropic API rejects the next turn with 400 “Invalid `signatur

该报错出现在 AI Agent(Tools Agent V3)使用启用了 thinking 的 Anthropic Chat Model、且模型在同一轮返回多个并行 tool_use 时:n8n 会把同一个 thinking 块连同签名复制到每个工具调用中,下一轮请求因签名前缀不匹配被 Anthro

快速结论:该报错出现在 AI Agent(Tools Agent V3)使用启用了 thinking 的 Anthropic Chat Model、且模型在同一轮返回多个并行 tool_use 时:n8n 会把同一个 thinking 块连同签名复制到每个工具调用中,下一轮请求因签名前缀不匹配被 Anthropic API 拒绝。优先排查是否发生了并行工具调用,以及 thinking 块是否被重复写入历史。

适用环境:n8n(Issue 中在 2.42.7 复现,源码 master @ 40094e3 已确认);Anthropic Chat Model 节点 typeVersion 1.6;AI Agent 节点 Tools Agent,typeVersion 3.1;模型 claude-opus-5-5 或 claude-sonnet-5,Thinking Mode 未设置(自适应思考)或设为 Adaptive。其他操作系统、Python、CUDA、显卡信息 Issue 未涉及。

最快修复方案:Issue 已关闭并注明“修复将包含在即将发布的版本中”,但未给出具体版本号或一步操作。暂无确认的一步修复方案,可优先尝试升级到包含该修复的 n8n 版本;如需立即规避,可考虑在 Anthropic Chat Model 上关闭 Thinking Mode,或避免触发并行工具调用(如把多个工具合并为单次调用)。

注意事项:关闭 thinking 或限制并行工具调用会改变模型行为与效果,属于规避手段而非根因修复;具体在哪个 n8n 版本修复 Issue 未写明,升级后如仍复现需在原 Issue 补充评论。

问题场景

在 n8n 中运行 Manual Trigger → AI Agent(Tools Agent,typeVersion 3.1)工作流,Chat Model 使用 Anthropic Chat Model(typeVersion 1.6),模型为 claude-opus-5-5 或 claude-sonnet-5,Thinking Mode 未设置(Sonnet 5 / Opus 5.x 在未发送 thinking 字段时会自适应思考)或设为 Adaptive。挂载两个相互独立的工具(如两个 HTTP Request Tool,或一个暴露多个工具的 MCP Client Tool),并用同时要求执行两次查询的提示词,使模型在首轮返回一个 thinking 块加两个及以上 tool_use 块。此时 AI Agent 节点在下一次模型调用中失败。

报错原文

400 {"type":"error","error":{"type":"invalid_request_error","message":"messages.1.content.3: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to \"drop_block\". That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header. This request has content before this block that was not present when it was created, first at `messages.1`."}}

在 n8n 中表现为 AI Agent 节点抛出 NodeOperationError: Bad request - please check your parameters,由 ToolsAgent/V3/helpers/executeBatch.ts 抛出。

原因分析

Issue 作者在源码中确认了根因:模型返回单个 assistant 轮次,形如 [thinking, tool_use A, tool_use B],thinking 块携带的签名与这一轮绑定。执行工具后重建历史时:

  • createEngineRequests.ts 的 extractThinkingMetadata() 把同一份 thinkingContent / thinkingSignature 写入该批次中每个工具 action 的 metadata,保存的执行记录里两个 action 带有完全相同的 metadata.anthropic.thinkingSignature。
  • buildSteps.ts 的 buildSteps() 对 Gemini 有合并处理:检测到并行调用共享同一 thought signature 时,通过 buildSharedGeminiAIMessage() 合并为一个 assistant 消息。Anthropic 没有对应分支,每个工具调用都走 buildIndividualAIMessage() → buildAnthropicContentBlocks(),固定返回 [thinkingBlock, toolUseBlock]。

因此下一轮发送的历史变成:

Human: ...
AI:   [thinking(sig S), tool_use A]
Tool: result A
AI:   [thinking(sig S), tool_use B]      <- 同一签名 S,在不同前缀下重放
Tool: result B

Anthropic 会校验签名 thinking 块是否在其创建时的前缀下重放。第二份副本前面多了 tool_use A 和 result A,这些内容在签名生成时并不存在,因此请求被拒绝。单个工具调用的轮次正常,所以问题只在模型选择并行调用时偶发出现。

环境排查

  • 确认 n8n 版本:Issue 在 2.42.7 复现,源码 master @ 40094e3 已确认;问题是否已在当前版本修复需对照发布说明。
  • 确认 AI Agent 节点是否为 Tools Agent、typeVersion 3.1。
  • 确认 Anthropic Chat Model 节点 typeVersion 1.6,模型为 claude-opus-5-5 或 claude-sonnet-5。
  • 确认 Thinking Mode 是否未设置(自适应思考)或设为 Adaptive;这两种情况下 thinking 都会开启。
  • 检查保存的执行记录中,同一批并行工具调用的多个 action 是否带有相同的 metadata.anthropic.thinkingSignature。
  • 确认工作流是否存在可被模型并行调用的多个工具(多个独立工具或多个 HTTP Request Tool / MCP 工具)。

解决步骤

  1. 先按 Issue 的复现条件确认问题:使用两个独立工具,并给出同时触发两次查询的提示词,观察是否在模型返回多个 tool_use 后下一轮出现 400。
  2. 查看该次执行的执行记录,确认同一批工具 action 的 metadata.anthropic.thinkingSignature 是否相同,以判断是否命中该缺陷。
  3. 升级 n8n 到包含该修复的版本:Issue 已关闭,评论说明“修复将包含在即将发布的版本中”,具体版本号 Issue 未给出,请以官方发布说明为准。
  4. 若需要立即规避:可优先尝试在 Anthropic Chat Model 上关闭 Thinking Mode;或调整工具与提示词,避免模型在一次回复中发起多个并行工具调用。
  5. 升级或规避后重新运行同一工作流验证;若问题依旧,在原 Issue 下留言补充 n8n 版本与执行记录中的签名信息。

验证方法

重新运行会触发并行工具调用的工作流,确认 AI Agent 节点在工具执行后的下一轮模型调用不再返回 400,执行链路能正常完成。同时检查执行记录中并行工具 action 不再各自携带重复的 thinking 签名,或历史中该签名不再在不同前缀下被重放。

参考来源

n8n-io/n8n #41152

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29340

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注