L6.2 Agent 与多步推理
三维坐标
layer: L6(应用架构)|level: Senior|pillar: 训推框架上一篇 RAG 解决了「让模型读到正确的知识」,但它本质仍是单轮的「检索 → 拼上下文 → 生成」。本文进入 Agent 领域——当一个任务需要多步推理、调用外部工具、并根据中间结果动态决策时,我们如何把一个「只会续写文本」的 LLM 组装成一个「能规划、能行动、能纠错」的 智能体,以及为此付出的可控性代价。
学习目标
- 前置知识:读过 L6.1 RAG(知道「检索 → 拼上下文 → 生成」的单轮范式与其局限);对 L4 推理层有基本认知(知道一次 LLM 调用就是一次 token 生成、有延迟与成本);会写基础 Python(函数、字典、循环)。无需任何 Agent 框架经验。
- 学完产出:① 能画出一个最小 Agent 的 ReAct 循环(Thought → Action → Observation → Reflection),并说清「反思边」为什么是 Agent 区别于一次性流水线的关键;② 能用「短期记忆 vs 长期记忆」「先规划后执行 vs 边走边规划」两组对照,讲清 Agent 跨轮状态管理的设计空间;③ 能设计一条带明确退出条件的 Fallback 降级链,并指出它在哪里会引入无限循环/雪崩;④ 能在「可控性 / 灵活性 / 成本 / 失败模式」四个维度上对比 DAG 与 Agentic 两种编排,并解释「能用 DAG 钉死的步骤绝不交给 Agent」这条黄金法则;⑤ 亲手跑一个最小 ReAct Agent,量化「单步 DAG 硬套多步任务」与「Agentic 自适应」的成功率差异。
- 阅读姿势:盯住一条主线——「Agent 工程的全部努力,都是在『让模型自主』与『让系统可控』之间找平衡点」。从 ReAct 的反思边、到 Fallback 的退出条件、再到 DAG 与 Agentic 的混合编排,本质都是同一件事:用结构约束自主性,让开放探索的自由度只发生在它真正必要的局部。
背景与现状
Agent(智能体) 的工程定义并不玄学:它是一个以 LLM 为决策核心、以「感知 → 决策 → 行动」循环驱动、能调用外部工具并消化反馈的程序。与单次问答相比,Agent 的三个本质区别是:
- 多步性:一个任务被拆成若干轮
thought → action → observation,而非一次生成完成。 - 工具性:模型不再「凭参数记忆瞎编」,而是通过 tool calling(工具调用) 把计算、检索、写文件等动作外包给确定性的程序。
- 状态性:跨轮维护 memory(记忆) 与 planning(规划),让后续决策能看到前面的进展。
从产业演进看,可以概括为三个阶段:
- 2022 前:思维链(Chain-of-Thought)让模型「把推理过程写出来」,但仍是纯文本、不接触外部世界。
- 2022–2023:ReAct(Reason + Act)范式确立——把「推理」和「调用工具行动」交织进同一个循环,Agent 第一次能查维基、做计算、查实时数据。开源端 LangChain、AutoGPT 引爆「让模型自己跑」的浪潮。
- 2023 至今:行业从「能跑」回落到「可控」。大家发现纯 Agentic(全自主)在生产环境成功率低、成本高、难调试,于是 DAG(静态工作流)与 Agentic(动态自主)的混合编排 成为主流——确定的步骤用 DAG 钉死,开放的探索才交给 Agent。
业界信号:ReAct 论文成为 Agent 领域引用量最高的奠基工作之一;而 LangGraph、Temporal、Dify 等框架不约而同回归「图(Graph)」抽象——这说明工程界的共识已是「用结构约束自主性」,而非放任模型自由发挥。
原理与架构
2.1 ReAct:推理与行动交织的反思循环
一个最小 Agent 的核心是一个循环,每一轮 LLM 输出三类内容之一:Thought(思考下一步)、Action(决定调哪个工具、传什么参数)、或 Final Answer(任务完成)。工具执行后的结果作为 Observation 喂回上下文,进入下一轮。当某一轮行动失败或观测异常时,Reflection(反思) 让模型审视自己的轨迹并修正策略——这正是 Agent 区别于「一次性流水线」的关键。
读这张图:循环的「智能」来自 LLM(蓝色:Thought/Action/Observation 消化),「确定性」来自工具(绿色),而「鲁棒性」来自反思边(橙色:当观测异常时不是硬着头皮往下走,而是回退重新规划)。没有反思边的 Agent,一旦中间一步出错就会一路错到底。