Agent 基础与框架
Agent(智能体)让大模型从「会说」走向「会做」,是当前最有商业价值、面试最热的方向。本文深入讲清 Agent 的定义与自主性、四大核心组件、ReAct 等经典范式、控制循环、可靠性工程与主流框架。进阶范式与多 Agent 见 多 Agent,工作流对比见 AI 工作流 vs Agent。
一、什么是 LLM Agent?
Agent 是以 LLM 为「大脑」,能够自主感知、规划、调用工具、执行多步任务以达成目标的系统。它不止一问一答,而是能在循环中思考 → 行动 → 观察反馈 → 调整,直到完成目标。
经典公式:
$$\textbf{Agent} = \textbf{LLM} + \textbf{规划(Planning)} + \textbf{记忆(Memory)} + \textbf{工具(Tools)}$$
自主性是关键:Agent 的流程由模型在运行时动态决定,而非开发者写死(后者是「工作流」,详见 AI 工作流 vs Agent)。自主性越高越灵活,但也越不可控、越贵、越难调试。
二、四大核心组件
2.1 规划(Planning)
把复杂目标拆解为可执行的子任务并决定顺序:
- 任务分解:CoT、思维树(ToT)、Plan-and-Execute(先规划全局再逐步执行)。
- 自我反思(Reflection):根据执行结果反思、纠错、调整计划(Reflexion、Self-Refine)。
详见 多 Agent 与进阶范式。
2.2 记忆(Memory)
- 短期记忆:当前任务/对话的上下文(受窗口限制,即工作记忆)。
- 长期记忆:把历史信息存入外部存储(向量库等),需要时检索回来——本质是 RAG。
详见 Agent 记忆系统。
2.3 工具使用(Tool Use)
通过 Function Calling 调用外部工具(搜索、计算器、代码执行、数据库、API),突破模型自身能力边界。工具的接入正越来越多地走 MCP 标准。
2.4 行动(Action)
执行工具调用、获取真实结果(Observation),进入下一轮循环。
三、经典范式:ReAct
ReAct(Reasoning + Acting) 是最经典的 Agent 范式,让模型在 Thought(思考)→ Action(行动/调用工具)→ Observation(观察结果) 的循环中推进,直到得出最终答案:
Question: 北京今天适合穿什么?
Thought: 我需要先查北京今天的天气
Action: get_weather("北京")
Observation: 北京今天 5℃,有风
Thought: 气温较低有风,应建议保暖
Action: Finish("建议穿厚外套+围巾,注意防风")为什么 ReAct 有效? 它把「推理」和「行动」交织:推理指导该采取什么行动、行动带回真实反馈再修正推理。相比只推理(易脱离现实、幻觉)或只行动(无规划),ReAct 边想边做、根据真实 Observation 纠偏,显著减少幻觉、提升可靠性。
四、Agent 的控制循环
一个 Agent 本质是一个循环(Agent Loop):
┌─────────────────────────────────────────┐
│ ┌──────┐ ┌────────┐ ┌────────────┐ │
└─▶│ 思考 │──▶│ 选择行动│──▶│ 执行工具 │──┐
│(LLM) │ │/调用工具 │ │(外部环境) │ │
└──────┘ └────────┘ └─────┬──────┘ │
▲ │ Observation
└──────────────────────────┘
终止条件:得出答案 / 达最大步数 / 超时 / 出错控制流要点:每轮把「历史思考+行动+观察」拼进上下文(这正是 上下文工程 的用武之地),并设置明确的终止条件防止失控。
五、规划范式概览
| 范式 | 特点 |
|---|---|
| ReAct | 边想边做、每步动态决策,灵活但可能短视 |
| Plan-and-Execute | 先制定完整计划再执行,全局性好、token 效率高,但依赖计划质量 |
| Reflexion | 执行后反思、生成改进意见再重试,适合有明确反馈的任务 |
| Tree of Thoughts | 树状探索多条推理路径 + 评估剪枝,质量高成本高 |
深入见 多 Agent 与进阶范式。
六、可靠性工程(落地核心难点)
Agent 落地最大的挑战是可靠性——多步累积误差、容易跑偏。实战手段:
- 缩小任务范围:把开放任务收敛成更确定的子任务(能用工作流就别全自主)。
- 明确工具定义:清晰的工具描述、参数 Schema、约束,减少误用(见 结构化输出)。
- 反思与重试:失败时让模型反思错误、带错误信息重试。
- 人类介入(Human-in-the-loop):关键写操作(转账、删除、发邮件)前人工确认。
- 结构化约束:用状态机/图(如 LangGraph)约束可达路径,而非完全自由循环。
- 防失控:设最大步数、超时、循环检测、成本上限。
- 可观测:追踪每一步的思考、行动、观察,便于排查(见 LangSmith)。
- 安全:防 Prompt 注入、最小权限、沙箱执行。
七、主流框架
| 框架 | 定位 |
|---|---|
| LangChain / LangGraph | 生态最全;LangGraph 用图编排有状态、可循环、带分支的 Agent,可控性强 |
| LlamaIndex | 偏数据/RAG 与 Agent 结合 |
| AutoGen(微软) | 可对话 Agent,擅长群聊式多 Agent 与代码执行 |
| CrewAI | 角色 + 任务 + 流程,上手快,角色扮演式分工 |
| MetaGPT | 模拟软件公司角色,SOP 标准化流程 |
| OpenAI Agents SDK | OpenAI 官方的轻量 Agent 编排 |
八、Agent 评估
Agent 比单轮 LLM 更难评估,常关注:任务完成率/成功率、每步动作的正确性、工具调用准确率、完成所需步数与成本、鲁棒性。基准如 GAIA、AgentBench、τ-bench、SWE-bench(编码 Agent)。详见 评测基准。
九、高频追问
Q:Agent 和普通 LLM 调用最大的区别? Agent 具备自主性:能多步规划、循环执行、调用工具、利用反馈与记忆,流程在运行时动态决定;普通调用是单轮、静态、无工具无状态。
Q:Agent 由哪几部分组成? LLM(大脑)+ 规划(拆解任务)+ 记忆(短期上下文/长期外部存储)+ 工具(突破能力边界)+ 行动(执行并观察)。
Q:ReAct 是什么?为什么有效? Reasoning+Acting,在「思考→行动→观察」循环中推进。把推理和行动交织、根据真实反馈纠偏,相比纯推理(易幻觉)或纯行动(无规划)更可靠、更少幻觉。
Q:ReAct 和 Plan-and-Execute 的区别? ReAct 边想边做、每步动态决策,灵活但短视;Plan-and-Execute 先规划再执行,全局性好、token 省,但依赖初始计划质量。两者常结合。
Q:Agent 落地的主要难点? 可靠性(多步累积误差、跑偏)、规划能力不足、工具调用出错、长任务成本与延迟、可控性与安全(尤其写操作)。
Q:如何提升 Agent 可靠性? 缩小任务范围、明确工具定义与约束、加反思/重试、关键操作人工确认、用图/状态机约束自由度、设最大步数与超时、可观测追踪、安全护栏。
Q:怎么防止 Agent 陷入死循环? 设最大迭代步数与超时、明确终止条件、检测重复的「思考-行动」模式强制跳出、用 LangGraph 等约束可达路径。
Q:什么时候用 Agent,什么时候用工作流? 流程能事先确定就用工作流(可控、便宜、好调试);只有当步骤/路径依赖运行时反馈、无法预先编排时才用 Agent。详见 AI 工作流 vs Agent。
Q:Agent 怎么评估? 看任务成功率、动作正确率、工具调用准确率、步数与成本、鲁棒性;用 GAIA/AgentBench/τ-bench/SWE-bench 等基准,并结合真实场景的 bad case 分析。
Q:单 Agent 解决不了的复杂任务怎么办? 拆成多 Agent 协作(Supervisor/Pipeline/群聊等),各司其职;但要权衡协调成本和误差累积,详见 多 Agent。