ReAct: Reasoning + Acting
Reasoning only 推理能力
- 不断的将复杂的问题 拆解成小问题 不断的进行推理
- chain of thought
Acting only
- 大模型 针对环境的操作
- 环境反馈给大模型 即Observations
- 这里就形成了一个环 大模型 --> 环境 --> 大模型 不断的执行动作拿到反馈
- 让大模型 和环境交互 变得更有价值
- 代表
- saycan
- webgpt
ReAct 将这两者结合在一起
ReAct Prompt
通过Prompt 跟大模型交互
ReAct Prompt 由 few-shot task-solving trajectories 组成,
- 包括
- 人工编写的文本推理过程 Reasoning部分
- 动作 Acting部分
- 以及对动作的环境观察 Observations部分
ReAct Prompt 设计直观灵活,并在各种任务上实现了最先进的少样本性能,从QA到在线购物
benchmark测试结果对比
横坐标是 测试模型(场景) 纵坐标是提示方式(prompt)
前四种prompt ReAct的性能最好
supervised Imitation Learning SOTA 做了微调预训练 这个成本太高
注意: 提升链路
预训练 --> 微调--> RAG知识库 --> prompt提示词工程
预训练 微调 成本太高 先把prompt做好
ReAct 在获取新数据方面的优势(HotpotQA 示例)
Reason-only baseline (即思维链)由于没有与外部环境接触以获取和更新知识,而且必须依赖有限的内部知识,因此容易受 到错误信息(红色标记)的影响。
Act-only baseline 缺乏推理能力方面问题,在这种情况下,尽管具有与ReAct相同的行动和观察,但无法综合得出最终答案。 相比之下,ReAct通过可解释且真实可信的轨迹来解决任务
LangChain 实现 react
LangChain Agents 设计原理
代理的核心思想是使用LLM来选择一系列要执行的动作。
- 在链式结构(Chains)中,一系列动作执行是硬编码的(SequentialChain和RouterChain也仅实现了面向过程)。
- 在代理(Agents)中,语言模型被用作推理引擎,以确定应该采取哪些动作以及执行顺序。
输入部分
- user input 用户输入
- completion 大模型产生的结果
- context 历史上下文信息
提示词策略
- ReAct
- self ask with search
- function call
agent excuter 代理运行时
实现逻辑 不断的执行nex action 不断的校验是否完成了所有的任务
每次循环都会重新 基于 上一次执行的结果 重新计算新的下一步动作
分类
- Plan and execute agent
- babyAGI
- AutoGPT