messages.19: `tool_addition` blocks can only be in `system` messages (request_id...

2026年10月25日 16:34 14.94 秒 success

错误信息

messages.19: `tool_addition` blocks can only be in `system` messages (request_id: 49930f6e-f695-465f-9d8e-ddcee26bbc5d) INVALID_REQUEST 本轮费用

AI 解决方案

原文:`tool_addition` blocks can only be in `system` messages
译文:`tool_addition` 块只能存在于 `system` 消息中

🎯 原因分析


该错误的根本原因是tool_addition 类型的消息块被放置在了非系统消息中,违反了 API 的规则约束。错误发生在 messages 数组的第 19 个元素,请求中存在不合法的消息块分配,导致请求被判定无效。

💡 解决方案


将包含 tool_addition 块的消息调整为系统消息,或移除该块并合理分配到对应的系统消息中,示例如下:
// 修复后的请求消息结构
const messages = [
  {
    role: "system",
    // 将原本错误位置的 tool_addition 块移至此处
    content: [
      {
        type: "tool_addition",
        // 具体的工具相关配置内容
      }
    ]
  },
  // 其余非系统消息,不再包含 tool_addition 块
  {
    role: "user",
    content: "你的用户消息内容"
  }
];

🛡️ 预防措施


  • 提前校验消息结构:在发送请求前,通过代码校验逻辑确保 tool_addition 块仅出现在 role 为 system 的消息中,可使用条件判断或消息结构校验工具。

  • 使用 API 官方文档规范:严格参照 DMXAPI 的消息结构规范,对各类消息块的归属角色进行梳理,开发过程中借助 IDE 的类型检查功能,避免出现角色与消息块不匹配的问题。