一文讲透 ReAct:推理与行动交替的智能体范式
一、引言
钩子
你有没有过这样的经历:问GPT-4「2024年欧洲杯冠军是谁?」,它只会抱歉地说「我的知识截止到2023年10月,无法提供实时信息」;你让它算「华为Mate60 Pro发布时间比iPhone15早多少天?」,它要么给出错误的日期,要么告诉你「我无法准确计算,请手动查询」。但你用带插件的ChatGPT或者AutoGPT的时候,它却能自动打开搜索工具查两个产品的发布时间,再调用日期计算器算出差值,准确给出结果。你有没有好奇过,这种「会自己思考、自己用工具」的能力,底层到底是什么逻辑?
定义问题/阐述背景
大语言模型(LLM)的爆发式发展让我们看到了通用人工智能的可能性,但它天生存在三个无法回避的短板:第一是幻觉问题,经常编造不存在的事实和数据;第二是知识 cutoff,训练数据截止之后的信息完全不知道;第三是无法与环境交互,不能调用工具、操作系统、感知现实世界。过去几年研究者们提出了很多方案来补这些短板:思维链(CoT)提升了模型的推理能力,但还是依赖内部知识,错了也没法修正;Toolformer让模型学会调用工具,但缺少显式的推理过程,很容易做出无效的工具调用。
而2022年提出的ReAct(Reasoning + Action)范式,第一次把「推理思考」和「行动执行」两个能力有机结合起来,让LLM像人一样:先思考要做什么,再动手执行,拿到结果后再调整思考方向,循环往复直到完成任务。现在我们熟悉的ChatGPT插件、AutoGPT、Claude 3工具调用、多模态具身智能体,底层核心逻辑都是ReAct。可以说,ReAct是当前大模型从「生成式工具」走向「自主智能体」的核心范式,是所有想做AI Agent开发的开发者必须吃透的技术。
亮明观点/文章目标
读完这篇文章,你将:
- 彻底搞懂ReAct的核心原理、组成结构、与其他范式的差异;
- 从零动手实现一个支持搜索、计算、网页抓取的ReAct智能体,能独立解决需要多步骤工具调用的复杂问题;
- 掌握ReAct的常见坑、优化方案、最佳实践,能把ReAct落地到自己的业务场景中;
- 了解ReAct的行业发展趋势和未来演进方向。
本文会从原理到实战,从入门到进阶,把ReAct的所有核心知识点讲透,哪怕你只有基础的Python能力和LLM常识,也能轻松跟上。
二、基础知识/背景铺垫
核心概念定义
在正式讲解ReAct之前,我们先明确几个必须掌握的基础概念:
- 大模型涌现能力:当LLM参数规模超过一定阈值(一般认为是10B以上),会突然拥有很多小模型没有的能力,比如复杂推理、工具调用、指令遵循,ReAct正是基于这些涌现能力才能实现。
- 思维链(Chain of Thought, CoT):2020年提出的技术,通过在提示词中引导模型生成中间推理步骤,而不是直接输出答案,大幅提升了模型在数学题、逻辑题等复杂任务上的准确率。但CoT的所有推理都基于模型的内部知识,一旦知识错误或者缺失,推理结果就会出错。
- 工具调用:让LLM按照固定格式输出要调用的工具名称和参数,由外部系统执行工具后把结果返回给LLM,从而突破LLM的能力边界。比如调用搜索工具获取实时信息,调用计算器解决数学问题,调用API操作业务系统。
- AI智能体(Agent):指能自主感知环境、做出决策、执行行动的智能系统,基于LLM的智能体一般包含四个核心模块:规划(思考)、记忆、行动、工具,ReAct就是当前最主流的智能体规划范式。
相关范式对比
为了更清晰地看到ReAct的优势,我们把它和其他主流的LLM范式做一个对比:
| 范式 | 核心逻辑 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 标准LLM生成 | 直接根据输入和内部知识输出答案 | 速度快、成本低 | 幻觉率高、无实时知识、无法交互环境 | 简单常识问答、创作类任务 |
| 思维链(CoT) | 引导模型生成中间推理步骤,再输出答案 | 复杂推理能力强、逻辑可解释 | 仍依赖内部知识、无法修正错误推理 | 数学题、逻辑推理题等知识覆盖内的复杂任务 |
| Toolformer | 微调模型学会在需要时调用固定工具 | 工具调用自动化 | 微调成本高、工具扩展难、无显式推理 | 固定工具集的简单调用场景 |
| ReAct | 交替生成推理步骤和行动,根据观测修正推理 | 幻觉率低、支持实时知识、可交互环境、逻辑可追溯 | 多轮调用成本高、速度慢、依赖提示词设计 | 多步骤复杂任务、需要外部工具/知识的任务、交互类任务 |
ReAct核心实体关系
ReAct系统的核心实体和交互关系可以用下面的ER图表示:
从图中可以看到,ReAct的核心是由LLM驱动的循环结构:推理模块生成思考,决定要做什么行动;行动模块调用工具和环境交互;观测模块把工具返回的结果整理后送回给推理模块,开启下一轮循环,直到满足停止条件,输出最终结果。
行业发展时间线
ReAct的发展不是一蹴而就的,是过去几年LLM技术逐步演进的结果,我们整理了关键的时间节点:
| 时间 | 事件 | 核心贡 |
|---|