快速结论:这个报错发生在 n8n 的 Anthropic Chat Model 节点无法将工具定义中的 strict: true 参数透传给 Anthropic API 时,导致模型可能输出不符合 JSON Schema 的空参数工具调用。优先确认 n8n 版本与 @langchain/anthropic 依赖版本是否支持 strict,并检查 n8n 是否有对应开关参数。
适用环境:n8n 2.37.7(其他版本可能不同)、lmChatAnthropic 节点 typeVersion 1.6、@n8n/n8n-nodes-langchain.agent 1.9、@langchain/anthropic 1.5.6、模型 claude-opus-5。
最快修复方案:暂无确认的一步修复方案。由于该问题被维护者定性为功能增强请求而非 Bug,当前 n8n 版本中没有已验证的配置或代码修改实现 strict 透传。可优先尝试等待 n8n 官方版本更新,或在官方社区论坛中推动该功能落地。
注意事项:官方已将该 Issue 关闭并引导至论坛讨论,关闭时间为 2026-09-06,目前没有官方修复版本。数据表明 12.4% 的 tool_use 块存在完全空参数的情况,会引发额外模型重试,影响执行成本,但实际影响取决于你的工具 Schema 编写方式。
问题场景
用户运行 n8n 2.37.7 中的 Anthropic Chat Model 节点(lmChatAnthropic 1.6),配合 Agent 节点(typeVersion 1.9)和四个由子工作流支持的工具,使用 claude-opus-5 模型并启用了 adaptive thinking、流式输出和 prompt caching。通过透明代理监控 n8n 与 api.anthropic.com 之间的网络流量,发现所有请求中 Anthropic 工具定义均未携带 strict: true,导致模型生成的部分工具调用参数不符合 Schema 约束,甚至出现完全空参数调用。
报错原文
Anthropic Chat Model: expose "strict": true for client tool definitions
strict observed on tool definitions: false on all 165 tool-bearing requests
blocks with completely empty input: {}: 33 (12.4%)
原因分析
Anthropic 的工具调用默认非严格模式,JSON Schema 中的 required 列表只作为生成参考,模型仍可能输出不符合规范的工具调用。Anthropic 官方提供 strict: true 参数来通过受限采样保证工具输入符合 Schema,但 n8n 源码中没有 strict 相关处理——既没有节点参数、也没有 bindTools(tools, { strict: true }) 或 withConfig({ strict: true }) 调用。Tools Agent 只检查模型是否暴露 bindTools 方法并直接委托绑定,不传任何选项。
可能原因:这是 n8n 框架层的功能缺失,而非模型或依赖 bug。值得注意的是 @langchain/anthropic 从 1.4.0 起就支持 strict custom tools,而 2.37.7 锁定的是 1.5.6,能力存在但 n8n 没有暴露接口。此外,独立发现的问题:为 $fromAI 提供默认值会使该参数在生成的 Schema 中变为可选(generateZodSchema 应用 .default(value),但 z.object(...).required() 不会去除 ZodDefault),导致 JSON Schema 中没有 required 数组,用户可能误以为已设置“必填”而实际上并非如此。
环境排查
- n8n 核心版本:2.37.7(请核实你的版本是否有更新或回退的差异)
- Anthropic Chat Model 节点(
lmChatAnthropic)typeVersion:1.6 - Agent 节点(
@n8n/n8n-nodes-langchain.agent)typeVersion:1.9 @langchain/anthropic依赖版本:1.5.6(确认是否 ≥1.4.0,strict 支持从 1.4.0 开始)- 模型:
claude-opus-5(adaptive thinking、streaming、prompt caching 5m) - zod 版本:3.25.76(仅与
$fromAI默认值问题相关)
解决步骤
- 确认问题根源:在 n8n 与 API 之间部署透明代理,检查出站
/v1/messages请求中的工具定义是否包含"strict": true。如果全部为false或缺失,则确认是 n8n 层没有透传。 - 检查 n8n 是否有隐藏参数或环境变量:阅读你当前 n8n 版本的源码,搜索
strict和bindTools的处理逻辑。如果在 n8n 节点中找不到任何 strict 处理,基本确认是功能缺失。 - 检查
$fromAI默认值陷阱:检查所有使用$fromAI(key, description, type, default)的工具描述。如果你提供过 default 值,该参数会变成可选项,Schema 中不会有required数组。即使工具说明文字写“Required”,Schema 也不会真正执行必填校验。这是一个容易无意触发的问题,需要单独修正。 - 在 n8n 社区论坛提出功能需求:官方已将本 Issue 关闭,引导用户到 n8n 社区论坛 讨论。如果你想推动该功能实现,可在论坛上提交功能请求。
- 关注上游版本更新:持续关注
@langchain/anthropic和 n8n 的新版本发布,检查更新日志中是否有strict参数支持。
验证方法
验证方式是在代理层检查所有出站请求的工具负载:确认每个请求中的每个工具定义都包含 "strict": true。同时对比开启 strict 前后的数据:统计 tool_use 块中 input: {}(完全空参数)的出现频率,以及因此触发的额外模型往返次数。如果 strict 生效,空参数调用应降至接近 0。此外,检查 $fromAI 生成的 Schema 是否包含 required 数组——如果缺少,说明默认值陷阱仍在影响 Schema 生成。
参考来源
n8n-io/n8n #37914 — Anthropic Chat Model: expose “strict”: true for client tool definitions
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug] Service API / console segment update clears attachments when attachment_ids is omitted](https://www.chat-gpts.plus/wp-content/uploads/2026/09/41774-dd68358e-768x403.jpg)
