ReAct 模式是什么
ReAct 让模型交替进行推理与行动:先想一下(推理),再决定调用什么工具(行动),拿到结果后继续观察,循环直到足以作答。它把「想」和「做」显式交错,适合需要外部信息的任务。现在多数接口已经通过原生的工具调用能力内化了这套循环:模型直接返回结构化的工具调用请求,不再需要靠文本解析约定格式。
基本信息
| 核心循环 | 推理、行动、观察三步交替推进 |
|---|---|
| 适用任务 | 需要外部信息或多步操作的问答与流程 |
| 现代实现 | 由原生工具调用承担,无需手工解析文本格式 |
| 关键设计 | 循环上限、失败重试与停止条件 |
| 常见问题 | 循环不收敛,反复调用同一工具 |
| 与智能体关系 | 是智能体编排的早期范式,思想沿用至今 |
循环三要素
| 阶段 | 做什么 | 要点 |
|---|---|---|
| 推理 | 判断当前信息是否足够、下一步该做什么 | 明确写出缺什么信息 |
| 行动 | 调用工具或检索,参数要具体 | 一次只做一件可验证的事 |
| 观察 | 读取返回结果并判断是否推进 | 失败时要改变策略而不是重复提交 |
| 收尾 | 信息足够时给出结论与依据 | 说明依据来自哪次行动 |
典型使用场景
- 多源查询:需要连续查询多个系统才能得出结论
- 排障流程:查日志、看指标、比对配置,逐步缩小范围
- 数据核对:从不同来源取数并交叉验证
- 调研任务:先搜再读再汇总,需要多轮外部信息
- 流程执行:按步骤调用接口并校验每步结果
循环与停止条件的写法
循环与停止条件的写法
# 每轮只做一件事,并把结果写进上下文供下一轮判断
# 1) 先判断缺少什么信息,再选择对应的工具
# 2) 调用工具后必须读取结果,失败则换策略,不重复同一调用
# 3) 同一工具最多调用两次;仍无法推进就说明限制并给出可行建议
# 4) 信息足够时给出结论,并标注结论依据来自哪次调用
# 5) 全程汇报已执行的动作,便于人工复核与追责落地注意点
| 注意点 | 做法 | 原因 |
|---|---|---|
| 循环上限 | 设置最大轮次与最大调用次数 | 防止不收敛消耗额度 |
| 失败处理 | 工具报错要改变策略而非重试 | 相同参数重试通常仍是失败 |
| 状态记录 | 每轮结果写回上下文 | 否则模型会重复获取相同信息 |
| 结论依据 | 要求标注来源 | 便于核对与追责 |
| 权限边界 | 写操作单独授权与确认 | 避免注入或误操作造成损失 |
现代实现优先用原生工具调用:结构化的调用请求比文本约定的格式可靠得多,也不再需要在提示里教模型特定的输出模板。
不设循环上限的智能体很容易失控:遇到工具持续失败时它会不停重试,直到额度耗尽或超时中断。