当前位置: 首页 > news >正文

Agent出现LLM因为历史工具调用消息而误解工具调用方式的问题背景

经过排查,发现<tool_call ...>{...}</tool_call>这种类似XML的格式的由来是:Agent将历史的工具调用记录转换为这种格式的字符串,再放入上下文发送给LLM。这种格式会让LLM误以为在content中写这种格式就是触发工具调用的方法,进而引发错误。

于是,在Codex的建议下,秉持着最小修改的原则,将<tool_call ...>{...}</tool_call>格式改为了更类似自然语言的格式:

[Previous assistant tool use]
Tool: exec
Input: {...}

然而,在接下来的测试中,LLM居然开始误将这种新的格式作为工具调用的方法,继续在输出的content中写入这种内容。

但是,这也印证了问题的根本原因就在于:LLM误学习了历史工具调用格式。

问题处理

考虑到处理该问题会涉及到后端的turn_response管线的大改,因而我没有参与更改。只在项目仓库提了一个issue。在第二天下午,项目的开发者便根据此issue使用Codex予以修改了,具体修改可见PR。

其修改的大致思路为:不再将工具调用记录和其他文本一样转为string放入content里,而是以完整的调用结构化数据存放,与content分离。

进一步思考

为什么会发生这样的错误

internal/pipeline/turn_response.go中可以看到,该Agent在把工具调用拼装入上下文的时候,会将其与其他对话上下文一起转换为下面的结构体:

type ContextMessage struct {
Role string `json:"role"`
Content string `json:"content"`
}

在这个结构体中,工具调用也和其他聊天文本一样被压扁成string。但是为了表示不同,还会进一步写为这种xml格式。

可能因为项目在最初没有考虑到要将工具调用引入上下文,因而上下文消息只使用string来表示。但是后期引入工具调用上下文时,可能出于方便,没有同步修改消息结构。

关于issue #437

这个issue提出了一种解决方案,让Agent在收到LLM发来的消息的时候,扫描<tool_call ...>,并将其作为触发工具调用的符号。并且指出知名的Agent项目hermes-agent也是这么做的。

但是这种做法的缺陷在于:

<tool_call ...>本身就不应该是LLM触发工具调用的方式,强行兜底处理与项目设计意图相悖。

Agent可能会在不以触发工具调用为目的的时候发出<tool_call ...>,如引用历史工具调用记录。

为什么Hermes会使用这种方式来触发工具调用?

关于这点,我咨询GPT,其给出的答复是,Hermes本身就以在LLM返回的content中使用类似的XML标签来作为工具调用触发的标志。这与Memoh在发送的schema专门的tool_call结构中放入工具调用的内容的做法不一致。

http://www.jsqmd.com/news/1079370/

相关文章:

  • 终极音乐解锁指南:3分钟掌握15+加密格式解密技巧
  • 随机重入流水车间调度优化:从并行机模型到智能策略的工程实践
  • Android动态组件安全实战:纵深防御与访问控制方案
  • 李丰从“钱”角度剖析2026 AI热潮:成因、资本现状与未来走向几何?
  • 有哪些AI论文软件是真的适配学科专业,而不是空洞拼凑?
  • Windows热键冲突终极侦探:3步找出占用热键的“小偷“程序
  • 一张图看懂 synchronized 锁升级和 AQS 排队
  • 20VOUT,9W,XL2170,恒压限流LED升压驱动芯片
  • Ryujinx:如何在PC上畅玩4300+款Switch游戏的终极指南
  • 68%企业部署AI Agent,仅40%实现盈利:AI不赚钱的真正门槛,从来不在技术
  • 2026会务系统推荐对比:为什么会助力成了多数主办方的最终选择
  • 热轧中厚钢板为什么尤其依赖校平机?
  • 模板变参与折叠表达式精讲,可变参数模板原理、参数包展开、折叠表达式、万能参数解析、日志/序列化高阶实战
  • 快速搭建Sunshine游戏串流服务器的完整指南
  • OpenAI发布自研推理芯片Jalapeño,9个月流片,英伟达大客户纷纷“造反”!
  • 第5课:机器学习的基本类型
  • AS9653与LMX2820调试
  • 3种方法解决macOS上Intel无线网卡驱动问题:itlwm项目完全指南
  • 1. 字符缓冲流复制文本文件
  • 0.9VIN,1A,XZ2116,LED升压驱动芯片
  • PON标准区别
  • 开源项目WPS AI插件察元AI文档助手:从 Ribbon 加载到 AI 对话框 URL 拼装
  • 2026年,400电话源头厂家哪个值得选?
  • 6月24日RoboScience发布通用具身大模型,具身智能破局泛化难题有新招!
  • Spring Boot + MyBatis 多模块项目中,如何优雅完成一个增量需求
  • 运维转大模型:把学习路线变成作品集
  • 大模型聚合 API 全网测速实测:延迟瓶颈拆解与商用平台落地对比
  • 统计短视频东方美学穿搭播放数据,算法计算国风内容传播流量增益值。
  • 3分钟掌握WinAsar:Windows平台最轻量asar文件管理工具终极指南
  • 2026全栈信创选型深度指南:AI Agent兼容国产芯片的架构博弈与提效实战