概念定义
ReAct(Reasoning and Acting)是一种将语言模型的推理能力与执行具体行动相结合的框架,通过交织思考和行动步骤,使模型能够动态地与外部环境交互并解决复杂任务。详细解释
ReAct由普林斯顿大学和谷歌研究院在2022年提出,2023年3月修订版进一步完善了框架。其核心创新在于将传统的纯推理过程(如思维链)与实际行动执行相结合,形成”思考-行动-观察”的循环模式。这种方法使大语言模型不再局限于内部知识,而能够通过调用外部工具、API和数据库来获取实时信息和执行具体操作。 2024年的发展显示,虽然ReAct框架仍然重要,但OpenAI、Anthropic、Mistral和Google等主要厂商推出的原生函数调用功能正在逐渐成为主流。这些原生实现在性能和易用性上往往优于传统的ReAct提示工程方法。然而,ReAct的思想仍然是理解现代LLM智能体工作原理的关键。 ReAct特别适合需要多步推理和外部信息整合的复杂任务,如问答系统、任务规划、代码调试等。其可解释性和可追踪性使其在需要高可靠性的应用场景中具有独特优势。工作原理
ReAct框架工作流程
问题示例:“苹果公司当前股价是多少?“ReAct循环过程
第一轮循环:阶段 | 内容 | 详情 |
---|---|---|
🤔 思考 1 | 分析问题 | 我需要查询苹果公司(AAPL)的实时股价。应该调用股票API。 |
⚡ 行动 1 | API调用 | 调用: StockAPI.get_price(symbol="AAPL") |
👀 观察 1 | 获取结果 | {"price": 189.95, "change": +2.3%} |
阶段 | 内容 | 详情 |
---|---|---|
🤔 思考 2 | 深入分析 | 已获得股价信息。需要获取更多背景,查询今日市场表现。 |
⚡ 行动 2 | 市场查询 | 调用: MarketAPI.summary(date="today") |
👀 观察 2 | 市场数据 | 市场整体上涨,纳斯达克: +1.8%,科技板块领涨 |
可集成的外部工具
工具类别 | 具体工具 |
---|---|
🔍 搜索工具 | Wikipedia • Google Search • Bing API |
🧮 计算工具 | Python解释器 • 数学引擎 • SQL查询 |
📊 数据API | 天气API • 股票数据 • 新闻API |
🔧 系统工具 | 文件系统 • 数据库 • Shell命令 |
2024年:ReAct vs 原生函数调用
特性 | ReAct提示工程 | 原生函数调用 | 趋势 |
---|---|---|---|
通用性 | 适用所有LLM | 特定模型 | 原生实现成主流 |
性能 | 中等 | 更优,延迟低 | ReAct思想仍是核心 |
可解释性 | 过程透明 | 良好 | - |
维护成本 | 较高 | 更低 | - |
- 思考(Thought):分析当前状态,决定下一步策略
- 行动(Action):执行具体操作,调用外部工具
- 观察(Observation):接收行动结果,更新认知
- 循环迭代:重复上述过程直至任务完成
实际应用
基础ReAct实现
LangChain中的ReAct实现
2024年函数调用对比
原生函数调用(OpenAI风格):典型应用场景
-
多步骤问答:
- 需要查询多个数据源
- 综合多方信息得出答案
- 例:研究报告生成、竞品分析
-
任务自动化:
- 文件操作和数据处理
- API调用链编排
- 例:数据ETL、报表生成
-
交互式调试:
- 代码执行和错误分析
- 逐步修复和验证
- 例:自动化测试、bug修复
-
决策支持:
- 收集决策所需信息
- 评估不同选项
- 例:投资分析、风险评估
性能对比
特性 | ReAct提示 | 原生函数调用 |
---|---|---|
通用性 | 所有LLM | 特定模型 |
性能 | 中等 | 高 |
可解释性 | 优秀 | 良好 |
实现复杂度 | 较高 | 较低 |
错误处理 | 灵活 | 规范化 |
2024采用率 | 30% | 70% |