messages.274: `tool_addition` blocks can only be in `system` messages (request_i...

2026年10月22日 10:15 15.54 秒 success

错误信息

messages.274: `tool_addition` blocks can only be in `system` messages (request_id: a589d044-f83b-48bd-94ed-46d18703d5e6)

AI 解决方案

🌐 错误翻译


原文:messages.274: `tool_addition` blocks can only be in `system` messages (request_id: a589d044-f83b-48bd-94ed-46d18703d5e6)
译文:messages.274:`tool_addition` 块只能位于 `system`(系统)消息中(请求ID:a589d044-f83b-48bd-94ed-46d18703d5e6)

🎯 原因分析


该错误的核心原因是:工具追加块(tool_addition)的放置位置不符合接口规则。在当前请求的消息列表里,第 274 条消息中包含了 tool_addition 块,但这条消息并非 system 类型的系统消息,接口对 tool_addition 块的存放位置有严格限制,仅允许它出现在 system 消息中,因此触发了校验报错。

💡 解决方案


// 修复前(错误写法,tool_addition 放在了非 system 消息中)
const messages = [
  { role: "user", content: "用户提问内容", tool_addition: "工具补充信息" }, // ❌ 错误位置
  { role: "assistant", content: "助手回复内容" },
];

// 修复后(正确写法,tool_addition 移到 system 消息中)
const messages = [
  { 
    role: "system", 
    content: "系统提示词内容", 
    tool_addition: "工具补充信息" // ✅ 仅允许在 system 消息中添加
  },
  { role: "user", content: "用户提问内容" },
  { role: "assistant", content: "助手回复内容" },
];

🛡️ 预防措施


  • 消息类型校验:在构造 messages 数组时,提前校验 tool_addition 等特殊块所属消息的 role 类型,确保仅在 role === "system" 的消息中添加。

  • 开发工具辅助:可使用 IDE 的 TS/JS 类型校验插件,或在提交接口请求前,编写简单的校验函数遍历消息列表,过滤不符合条件的特殊块,提前拦截问题。