LLM Agent 反思工作流详解
大语言模型(LLM)在复杂任务中往往面临幻觉或逻辑错误的问题。为了解决这一问题,研究者提出了多种基于'反思(Reflection)'的工作流模式,通过迭代反馈和自我修正来提升输出质量。本文将深入探讨三种典型的反思优化技术:Self-Refine、CRITIC 和 Reflexion。
1. Self-Refine:自我精炼机制
Self-Refine 是一种利用单一 LLM 进行生成、改进和反馈的技术。其核心思想是让模型充当自己的批评者,通过多轮迭代优化初始输出。
工作原理
- 生成器:根据提示词生成初始响应。
- 改进器:对初始响应进行分析,识别潜在错误或不足。
- 反馈器:将改进建议作为新的输入,再次调用模型生成优化后的版本。
该方法在对话生成、数学推理和代码编写等任务上表现优异,相比传统的一步生成方法,平均性能提升约 20%。
Python 代码示例
以下是一个简化的 Self-Refine 伪代码实现逻辑,展示了如何通过循环调用 API 实现自我修正:
import openai
def self_refine(prompt, max_iterations=3):
current_output = generate_initial_response(prompt)
for i in range(max_iterations):
feedback_prompt = f"请分析以下回答的优缺点,并提出改进建议:\n{current_output}"
feedback = generate_response(feedback_prompt)
improvement_prompt = f"基于以下反馈改进回答:\n反馈:{feedback}\n原回答:{current_output}"
current_output = generate_response(improvement_prompt)
print(f"Iteration {i+1}: {current_output}")
return current_output
2. CRITIC:工具交互验证框架
CRITIC 框架允许大型语言模型通过与外部工具的交互来验证和改进输出。这种模式模拟了人类使用工具(如搜索引擎、计算器、代码解释器)来辅助决策的过程。
核心特性
- 工具验证:模型可以调用外部 API 或本地工具来验证事实准确性或执行计算。
- 持续修正:验证结果作为反馈信号,驱动模型修正错误。
- 开源支持:该框架已开源,便于集成到现有 Agent 系统中。
在自由形式问答、数学程序合成和毒性降低等任务中,CRITIC 展现了显著的性能提升。例如,在数学评估数据集上,它经常能获得最高评分,因为它能利用代码解释器精确计算,而非依赖模型的直觉估算。
3. Reflexion:基于语言强化学习的记忆机制
Reflexion 提出了一种新的框架,旨在帮助 Agent 从过去的失败中学习。传统的基于上下文的学习(In-context Learning)仅依赖短期记忆,而 Reflexion 引入了长期记忆机制。
架构组成
Reflexion 框架主要包含三个组件:
- 执行者(Actor):基于状态观察生成文本和动作。
- 评估者(Evaluator):对执行者的输出计算奖励分数。
- 自我反思模型(Self-Reflection):将环境的二进制或量化反馈转换为自然语言描述,形成语义上的梯度信号。
记忆管理
- 短期记忆:存储当前的轨迹历史。
- 长期记忆:存储自我反思模型的输出,即'经验教训'。
这种机制类似于人类通过反复练习和反思来掌握技能。实验数据显示,Reflexion 在 AlfWorld 任务上提高了 22% 的决策能力,在 HotPotQA 推理问题上提高了 20%,在 HumanEval 编程任务上提高了 11%。特别是在 HumanEval (Python) 上,其得分达到 91.0,超过了 GPT-4 的 80.1。
4. 总结与对比
| 方法 | 核心机制 | 适用场景 | 优势 |
|---|
| Self-Refine | 内部迭代反馈 | 文本生成、对话 | 无需外部工具,易于部署 |
| CRITIC | 外部工具交互 | 数学计算、事实核查 | 准确性高,可验证性强 |
| Reflexion | 长期记忆强化 | 复杂任务规划、Agent 决策 | 具备学习能力,越用越强 |
这三种方法共同揭示了自我反思在提升 LLM 智能中的关键作用。通过迭代反馈和自我修正,模型能够不断优化其输出,从而更好地处理复杂任务。在实际应用中,可以根据具体需求选择单一模式或组合使用这些策略,以构建更鲁棒的 AI Agent 系统。