最近在做一个查数据库+调API的Agent,Prompt里写了角色、工具说明和few-shot。单轮还行,但一到多轮就崩:比如用户问“帮我查上个月销售额,再和前年同期比一下”,Agent第一轮调了SQL,第二轮就忘了要对比,或者把工具返回值直接当答案输出,完全不继续推理。我试过在Prompt里加“必须一步步来”“不要跳过思考”,但效果不稳定,有时候它会把中间步骤也当成最终回复。想请教下,这种多轮工具调用的Agent,Prompt到底该怎么组织?是不是得把CoT和工具描述拆开写?有没有比较稳的模板或思路?
楼主
2026-09-20
写Agent的Prompt时,怎么让它在多轮工具调用中不“跑偏”?
请 登录 后发表回复
全部回复
共 4 条
2楼
2026-09-21
多轮跑偏八成是历史太长把工具返回值当结论了,试试每轮只喂当前目标和上一步结果,别塞全部对话。
3楼
2026-09-21
多轮丢目标基本都是Prompt里没把“当前进度”显式管理起来。我现在的做法是每轮工具调用后强制让模型先输出一个简短的状态摘要,比如“已查完销售额,下一步要调前年数据做对比”,再进入下一轮,这样它不容易把工具返回值直接当答案。CoT和工具描述最好分开写,工具部分只讲怎么调,推理部分单独约束流程,混在一起模型容易顾此失彼。另外可以试试把“未完成的任务”在每轮system里重新注入,比单纯写“要一步步来”稳得多。
4楼
1天前
有没有更详细的教程推荐?
5楼
22小时前
我也踩过这个坑,感觉问题不全在Prompt措辞上。多轮里模型容易丢目标,往往是每轮的工具返回没被“接住”——可以在工具结果后面追加一句固定指令,比如“这是中间数据,请继续完成剩余步骤”,比开头写十遍“一步步来”管用。CoT和工具描述最好分开写,工具schema里只放参数说明,推理约束放system里,混在一起模型容易把思考过程当输出。另外建议把用户原始需求在每轮上下文里重述一遍,跑偏率会明显降。