边想边做
大约 2 分钟
边想边做
ReAct 和只推理、只行动有什么差别?
只推理是把想法一次写完,中途不接触环境,事实容易停在模型自己的知识里。只行动是收到输入就调工具,没有交代为什么这一步是现在该做的。
ReAct 把两种交错起来:先写一段 Thought,再产生一个 Action,拿到 Observation,再决定下一步。推理用来决定行动,观察用来纠正推理。
面试时把它说成循环,不要说成一种提示词风格。提示词只是让模型把 Thought 和 Action 分开放,好让程序解析。
一步里模型要产出什么?
一步只推进一个可执行动作。Thought 里写当前缺口和选择理由,Action 里只给一个工具名和参数。程序执行后,把结果写成 Observation 追加进轨迹,再发起下一次调用。
不要让模型在同一次输出里假装工具已经返回。工具结果必须来自运行时,否则后面的推理没有依据。
结束也是一种动作:模型应能显式给出最终答案并停止,而不是永远再调用一次搜索。
工具怎么定义?
每个工具是一份契约:名字、用途、参数模式、返回里有什么、失败长什么样。描述要短,重叠要少。搜索、计算、读文件不要合成一个「万能工具」。
运行时负责三件事:校验参数、真正调用、把返回裁成观察。模型只负责选择。工具抛出的栈信息不要原样回给模型,收成「缺了哪个参数」或「结果为空」。
ReAct 什么时候会失效?
- 任务需要先看全局。它容易陷入局部:这一步搜得通,整件事的顺序是错的。
- 轨迹变长以后,早期观察被淹没,模型重复调用同一个工具。
- 工具一失败,模型可能用自然语言把失败圆过去,看起来像做完了。
- 步数和费用不可预期,同样的题两次路径可能差很多。
调试看轨迹,不看最终措辞:哪一步的 Thought 已经偏了,哪一步的 Observation 被忽略,哪一个工具描述让两个工具分不清。局部短视用「先有计划」补,做完不可信用「再检查一轮」补。