最近在做一个简单的RAG Agent,任务是从文档里提取信息后做多步推理(比如“对比A和B的差异,再结合C给出结论”)。我目前用ReAct风格,把工具调用和推理步骤写进system prompt里,但经常出现模型在中间步骤编造数据,或者跳过推理直接给结论。试过加“请逐步思考”,效果不稳定。想请教下,多步任务里,是应该把步骤拆成多个子Prompt单独调用,还是尽量在一个Prompt里约束?另外,对于“必须基于检索结果”这种硬性要求,有没有比较有效的提示词写法?谢谢。
楼主
2026-08-04
Agent多步推理任务中,Prompt该怎么设计才能减少“幻觉”?
请 登录 后发表回复
全部回复
共 103 条
2楼
3天前
我最近也在踩这个坑。经验是别指望一个prompt搞定多步推理,拆成子任务调用反而更稳,每一步只让模型做一件事,中间结果落盘再喂给下一步。另一个管用的是强制引用,让模型每给一个结论都带上检索片段编号,没编号就重试,这样编数据会少很多。还有个小技巧是在工具返回里加个字段标明“数据来源”,模型看到空值就不敢乱编了。
3楼
3天前
多步任务我现在更倾向拆成子prompt分开调,中间结果落盘再做下一步,这样每步都能单独校验,模型想编也难。硬性要求“必须基于检索结果”的话,可以在prompt里强制它先引用原文片段再推理,没引用就不让往下走。ReAct那套写system里太长了,模型容易忽略中间约束,不如把规则塞到每一步的user prompt里更管用。
4楼
2天前
拆成子prompt分步调更稳,每步只干一件事,幻觉少很多。硬性要求可以写“若检索结果没提到,直接说不知道”。