什么是 LangChain 中的 Agent?它和 Chain 有什么区别?
什么是 LangChain 中的 Agent?它和 Chain 有什么区别?
这道题考的是你对 LangChain 核心设计理念的理解——Chain 是静态执行链,Agent 是动态决策体。面试官想看你能不能说清楚什么时候用哪个,以及 Agent 背后的 ReAct 机制是怎么运转的。
我从四个方面来讲:Agent 是什么、Agent 的四大核心能力、Agent 和 Chain 的本质区别、ReAct 执行机制。
Agent 是什么——能"动手干活"的智能体
先说个反常识的观点:Agent 不是更厉害的 LLM,而是 LLM 的一种使用方式。
普通 LLM 干的事很简单:接收输入,生成输出。输入是"今天天气怎么样",输出是"今天晴天,25度"。它不会去查天气,不会调用任何外部服务,就是单纯地"回答问题"。
Agent 不一样。Agent = LLM + Tools + Decision-making Logic。
翻译成人话就是:Agent 在用 LLM 当大脑,但这个大脑不止会回答问题,它还会决定要不要调用工具、调用什么工具、调用完之后下一步干什么。
举个例子。假设你问普通 LLM:"帮我查一下今晚北京有哪些值得看的电影,然后帮我订票"。
普通 LLM 只能回答:"抱歉,我无法访问实时信息,无法帮你查电影和订票。"
但 Agent 会怎么做?它会先拆解任务——"用户要查电影,还要订票,这是两个子任务"。然后它会调用搜索引擎 API 查今晚的电影,调用电影院 API 查座位,调用支付 API 完成订票。整个过程中,它不是在"回答问题",而是在"完成任务"。
把 Agent 想象成一个私人助理。普通 LLM 是百科全书,问什么答什么。Agent 是会查地图、打电话、发邮件的助理,你交代一件事,它想办法把这件事办成。
这就是 Agent 和普通 LLM 的本质区别:Agent 不只是生成文本,它会采取行动。
Agent 的四大核心能力
一个完整的 Agent 不是简单调用一次工具就完事了,它需要四种能力协同工作。
规划能力是第一位的。Agent 拿到一个复杂任务,得能把它拆成小步骤,然后按顺序执行。这靠的是 ReAct 框架(后面会单独讲)。简单说就是:先想清楚怎么做,再动手,做完检查结果,不对就调整。
记忆能力分两种。一种是短期记忆,就是当前对话的上下文,你说了什么、Agent 做了什么都在这里。另一种是长期记忆,用向量数据库存储,Agent 可以从历史经验里检索相关信息。比如你之前让它订过某家电影院的票,下次它可能就记得这家电影院的位置和偏好。
工具使用能力是 Agent 的手脚。Agent 需要知道有哪些工具可以用,什么时候该用搜索,什么时候该用计算器,什么时候该查数据库。这些工具可以是 REST API、Python 函数、搜索引擎,或者任何外部系统。
协作能力是高级玩法,叫 Multi-Agent。就是多个 Agent 配合工作,一个 Agent 负责规划,一个 Agent 负责搜索,一个 Agent 负责总结,各司其职。
你可以把 Agent 想象成一个项目经理。它接到任务后,先规划执行步骤,然后分配工作,执行过程中根据反馈调整计划,最后交付结果。普通 LLM 更像是流水线上的工人,分配什么任务就干什么,不会主动规划。
Agent vs Chain——本质区别是什么
这是面试的核心问题,必须能说清楚。
Chain 是一个预设好的执行链路。你可以理解为一条工厂流水线:输入原材料,按固定顺序经过 A 步骤、B 步骤、C 步骤,最后输出成品。每个步骤做什么、先后顺序都是提前定好的,运行过程中不会改变。
最常见的是 LLMChain,包含 Prompt Template + LLM + Output Parser 三部分。你输入一个问题,Prompt Template 格式化问题,LLM 处理,Output Parser 解析结果。就是这么简单直接的线性流程。
Agent 是一个动态决策中心。它不是按固定流程走,而是让 LLM 自己在运行时决定下一步做什么。LLM 会思考:"用户这个问题,我需要调用什么工具?搜索还是计算?调用完之后结果是什么?接下来还需要做什么?"
两种方式的区别,用一个场景来说明:
假设任务是"帮我分析一下这家公司今年的财务状况"。
用 Chain 的话,执行流程是固定的:输入公司名称 → 调用财务分析 Chain → 输出分析报告。Chain 不知道中间可能需要先查财务数据,可能需要调用计算器算比率,可能需要搜索行业对比信息——这些都在 Chain 的设计阶段就定死了。
用 Agent 的话,流程是动态的:LLM 思考"需要先查财务数据",调用搜索工具 → LLM 思考"查到了数据,需要计算几个关键比率",调用计算器 → LLM 思考"数据不够,需要搜索行业背景",再次调用搜索 → 最后整合所有信息输出报告。每一步做什么,由 LLM 根据当前状态决定。
那到底什么时候用哪个?
用 Chain 的场景:流程明确、步骤固定、不需要动态决策。比如简单的问答、文本转换、格式规范化。Chain 的好处是稳定、可预测、成本可控——你写好 Chain,测试通过,上线运行,基本不会出幺蛾子。
用 Agent 的场景:流程不确定、需要根据输入动态决定调用什么工具、任务涉及多轮交互。比如研究型任务(查资料+分析+总结)、复杂客服(理解意图+查订单+解决问题)、自动化工作流(多个工具配合完成目标)。
面试的时候可以这么回答:Chain 适合确定性高的场景,是"我知道怎么做,按流程走就行";Agent 适合不确定性高的场景,是"我不确定每一步怎么走,让 AI 自己判断"。
还有一个实际经验要说:能简单解决的事,优先用 Chain。Agent 虽然灵活,但它的缺点也很明显——LLM 每次都要做决策,成本高;执行路径不固定,调试困难;可能出现无限循环,需要设置迭代上限。很多时候 Chain 加上适当的条件分支,就能解决 80% 的问题,上 Agent 是杀鸡用牛刀。
ReAct 执行机制——Agent 怎么"思考-行动-观察"
ReAct 是 Agent 最核心的执行框架,全称是 Reasoning + Acting。翻译过来就是"推理 + 行动"。
它的核心循环是三个步骤:Thought → Action → Observation。
Thought:LLM 思考当前状态,决定下一步做什么。比如"用户想知道这部电影有没有余票,我需要调用电影院的查询 API"。
Action:执行决定好的动作。可以是调用工具、查数据库、发 API 请求,或者直接输出文本。
Observation:观察行动的结果。比如收到了 API 返回的余票信息。
然后循环回到 Thought,用新的观察结果继续思考下一步,直到任务完成或者达到最大迭代次数。
用人话说就是:先想后做,检查结果,不对就调整。这不就是我们人解决问题的方式吗?
看一个具体例子。用户说:"帮我查一下《消失的她》今晚北京有什么场次,选最便宜的,买一张。"
Agent 的执行过程:
- Thought:用户要查电影场次,需要调用电影查询工具。
- Action:调用猫眼/淘票票 API,查询《消失的她》今晚北京场次。
- Observation:返回了 5 家电影院、8 场次的信息。
- Thought:需要选出最便宜的场次,我来比较一下价格。
- Action:分析返回数据,找出最低价 39.9 元,位置在朝阳区某影院。
- Observation:找到最便宜场次。
- Thought:用户要买一张票,需要调用购票 API。
- Action:调用购票 API,确认用户信息,完成下单。
- Observation:购票成功,返回电子票信息。
- Thought:任务完成,返回结果给用户。
- Action:输出购票成功信息,包含电影名、时间、座位、影院地址。
这就是一个完整的 ReAct 循环。整个过程不是写死的流程,而是 LLM 根据每一步的结果动态决定下一步。
面试要知道的几个细节:
Agent 输出不是普通文本,而是带有结构化标记的"工具调用代码"。LangChain 会解析这个输出,识别出要调用的工具名称和参数,然后实际执行,执行结果再传回给 LLM,继续下一轮思考。
ReAct 循环需要设置最大迭代次数。想象一下,如果 LLM 卡在某个逻辑里一直循环调用工具,不仅浪费钱,还可能崩溃。通常设置 5-10 次迭代比较合理,超过就强制停止。
不同 Agent 类型适合不同场景。ReAct Agent 适合需要推理的任务;Zero-shot Agent 适合简单的一次性工具调用;Conversational Agent 适合对话场景,专注于保持上下文连贯。
面试怎么答
基础版:
Agent 是能感知环境、调用工具、自主完成复杂任务的大语言模型智能体,核心公式是 Agent = LLM + Tools + Decision-making Logic。它和 Chain 的本质区别在于:Chain 是静态的预设流程,按固定链路顺序执行;Agent 是动态的自主决策,由 LLM 在运行时决定下一步做什么。Agent 的执行靠 ReAct 框架驱动,通过"思考→行动→观察"的循环迭代完成任务。生产实践中,流程固定用 Chain,流程不确定、需要动态交互用 Agent。
加分版:
除了基础概念,可以补充 Agent 的四大核心能力:规划(任务拆解和自我反思)、记忆(短期上下文 + 长期向量存储)、工具使用(动态选择外部 API)、协作(Multi-Agent 多智能体交互)。还可以提到 LangGraph 对 Agent 的增强——Chain 的执行模型是 DAG 有向无环图,无法表达循环逻辑,LangGraph 补上了这一点,让 Agent 的复杂流程控制成为可能。
实际经验方面可以说:Agent 成本比 Chain 高,因为每次都要 LLM 做决策;稳定性比 Chain 低,执行路径不固定,调试困难;所以能简单解决的事优先用 Chain,Agent 是处理"真的需要动态决策"这种复杂场景的武器。另外 Agent 要设置迭代上限和熔断机制,防止无限循环。
一句话总结
Chain 是写好剧本的静态流水线,Agent 是能自主决策的动态指挥官,ReAct 是让 Agent"先想后做、做完检查、不对调整"的执行框架。
