ReAct-Agent 理论浅记
ReAct-Agent 理论浅记
由于之前工作主要从实际落地去设计 Agent 流程,少了很多理论架构的学习,因此特地查漏补缺。
1. ReAct 理论框架
ReAct,最早由 Google Research 团队提出的一种 Reason + Act 的范式,其核心目的是在大语言模型中将“推理(Reasoning)”与“行动(Acting)”结合起来,以解决大型语言模型在复杂推理任务中容易产生幻觉和缺乏实时信息的问题。
ReAct 的核心在于一个不断迭代的循环过程:Thought(思考)→ Action(行动)→ Observation(观察)。
在这个过程中,LLM 交替生成文本推理轨迹(Reasoning traces)和具体行动(Actions)。推理可以帮助模型分解任务、制定和调整计划;行动则通过调用工具与外部环境交互获取观察反馈,从而为下一步推理提供事实依据。
2. 架构演进:LangChain 到 LangGraph
基于这一理论框架,发展出了 LangChain 结构。
但早期的 LangChain 是一个典型的线性循环,很难做到“如果工具报错,先执行容错分支”、“在执行敏感动作前让渡控制权给人类(人工审批)”或者“让多个 Agent 协同作业”。因此,进一步演进并发展出了 LangGraph。
3. 核心分层组件
在实际的生态中,一般可以归纳为以下核心分层组件:
1. langchain-core 定义统一接口规范:
- 统一输入输出:所有的组件(LLM、Prompt、Tool、Parser)都必须实现
Runnable接口,支持统一的.invoke()(同步)、.ainvoke()(异步)和.stream()(流式输出)方法。 - LCEL (LangChain Expression Language):提供了声明式的拼装能力。通过管道符
|,可以把基础组件直接串联。例如chain = prompt | model | parser。
2. langchain-community
对接第三方插件:外部工具(如 Google 搜索、数据库执行器)包装后的输出全部对齐 langchain-core 定义的 BaseTool 或 BaseChatModel 标准接口,供上层 Agent 调用。
3. langchain 与 智能体编排 LangGraph 这两者在实际业务中紧密配合,共同构成了应用开发的主战场:
- langchain:负责组装业务逻辑的“标准模块”。包含常见的文本切分、向量化、高级检索(RAG)路由策略,以及提供标准的 Agent 构建器(如
create_tool_calling_agent,专门用来把 Prompt 和支持工具调用的模型组合起来)。 - LangGraph:现在 LangChain 生态中负责 Agent 和 ReAct 范式落地的绝对核心。现在的 LangChain 已经将所有复杂的、状态化的智能体逻辑全部移交给了 LangGraph。
- 状态化管理(State):架构的核心是一个只读的、可追踪的全局 State 对象(通常是消息列表
messages)。 - 图驱动(Nodes & Edges):
- Nodes(节点):大模型(负责 Thought/推理)和 Tools(负责 Act/执行)被定义为图的节点。
- Edges(边):定义节点之间的流转方向。通过 Conditional Edge(条件边)来做分支路由——大模型输出包含工具调用,就路由到 Tools 节点;没有工具调用,就路由到结束节点。
- 状态化管理(State):架构的核心是一个只读的、可追踪的全局 State 对象(通常是消息列表
4. 监控与运维层:LangSmith 负责整个底层流转的追踪、调试与评估。
总结:
对于我日常的开发接触来看,最多的精力还是在 langchain 与 LangGraph 的业务逻辑与图结构编排上进行,底层的外部工具则需要根据公司的实际业务需求来进行挑选与集成。