本轮运行报错“tool_addition blocks can only be in system messages”,请帮我检查是不是某个插件导致的消息顺序问...
错误信息
本轮运行报错“tool_addition blocks can only be in system messages”,请帮我检查是不是某个插件导致的消息顺序问题,并修复它
AI 解决方案
1. 🌐 错误翻译
原文:tool_addition blocks can only be in system messages
译文:tool_addition 块只能出现在系统消息中
2. 🎯 原因分析
tool_addition(工具补充信息块)被放置在了非系统消息中,违反了消息类型的强制约束,大概率是插件在拼接消息时,把本应归入系统消息的工具定义错误地插入到了用户消息、助手消息或工具响应消息中。3. 💡 解决方案
// 修复前(错误示例,插件拼接时错放位置)
messages.push({
role: "user",
content: "帮我查一下天气",
// 错误:tool_addition 出现在非系统消息中
tool_addition: [{ name: "weather", description: "查询天气" }]
})
// 修复后(正确做法,工具块统一归入系统消息)
messages.push({
role: "system",
content: "你是一个天气助手,可调用工具查询天气信息",
// 正确:tool_addition 仅在系统消息中定义
tool_addition: [{ name: "weather", description: "查询天气" }]
})
messages.push({
role: "user",
content: "帮我查一下天气"
})
4. 🛡️ 预防措施
tool_addition只能添加到role: "system"的消息对象里,非系统消息构建时自动过滤该字段。tool_addition属性,提前拦截错误用法。