什么是 Agent?与大模型有什么本质不同
P0 · agent_architecture
🏷 标签:agent, llm, architecture
1️⃣ 考察意图
面试官想考察你是否真正理解 Agent 作为“系统”与 LLM 作为“组件”的架构级差异,而非仅仅背诵定义。这是典型的“概念辨析+系统设计”题,刁钻点在于:很多人把 Agent 等同于“会调用工具的 LLM”,但本质区别在于循环推理(Loop)和状态管理。答好了能展示你对自主系统、工具编排和记忆机制的工程理解,而非停留在“Agent = LLM + 工具”的浅层认知。
2️⃣ 标准答
Agent 是一个自主系统,具备感知(Perception)、规划(Planning)、执行(Execution)和记忆(Memory)四大模块,能通过循环推理完成复杂任务。大模型(LLM)是 Agent 的核心推理引擎,但两者有本质不同。
1. 架构层级不同
- LLM:单次生成模型,输入 prompt → 输出 token,无状态、无循环。例如 GPT-4 回答“帮我订餐”只会生成文本建议,不会实际调用 API。
- Agent:封装了 LLM 的完整系统,包含:感知层:解析用户意图、环境状态(如当前时间、位置)。
- 规划层:将任务分解为子步骤(如 ReAct 模式:Thought → Action → Observation)。
- 执行层:调用工具(搜索、计算器、数据库)并处理结果。
- 记忆层:短期记忆(对话历史)和长期记忆(向量数据库存储的经验)。
- 循环控制:根据执行结果决定下一步,直到任务完成。
2. 核心差异:循环推理 vs 单次生成
- LLM 是一次性的:给定输入,输出一次,结束。即使有 Chain-of-Thought,也只是在单次生成中模拟推理,没有真正的“决策-反馈-调整”循环。
- Agent 是迭代的:每个步骤的输出会作为下一步的输入,形成完整流程。例如 AutoGPT 在写代码时,会先搜索文档 → 生成代码 → 运行测试 → 发现错误 → 修改代码 → 再次测试,直到通过。这个循环依赖状态机(State Machine)或图执行引擎(如 LangGraph)来管理。
3. 工程取舍:工具调用的可靠性
- 坑:LLM 生成的工具调用参数可能格式错误(如 JSON 语法错误)或逻辑错误(如调用搜索 API 时传入不存在的参数)。
- 解法:引入结构化输出(如 OpenAI 的 Function Calling 或 JSON Mode),配合重试机制(Retry with exponential backoff)和验证层(如 Pydantic 校验参数 schema)。实际落地中,我们会在 Agent 框架里加一个“工具调用验证器”,对 LLM 输出做正则匹配和类型检查,失败则重新生成。
4. 记忆管理的差异
- LLM 只有上下文窗口(Context Window),超出则遗忘。
- Agent 有分层记忆:短期记忆(对话历史,用滑动窗口截断)、长期记忆(向量数据库存储关键信息,如 ChromaDB 或 FAISS)、工作记忆(当前任务状态,如已完成的步骤)。例如在客服 Agent 中,用户的历史订单信息会从长期记忆检索,而当前对话的上下文则保留在短期记忆。
5. 实际落地案例
- LLM 单独使用:用户问“今天天气如何?”,LLM 回答“我无法获取实时数据,请查天气 App”。
- Agent 系统:用户问“今天天气如何?”,Agent 的规划层决定调用天气 API → 执行层调用
get_weather(location=“北京”)→ 感知层解析返回的 JSON → 生成回答“北京今天 25°C,晴”。整个过程涉及工具调用、结果解析和循环决策。
总结:Agent 是系统级的自主体,LLM 是组件级的推理引擎。本质区别在于 Agent 有循环、记忆和工具执行能力,而 LLM 只是单次文本生成。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从架构层级、循环推理和记忆管理三个层面回答。架构上,Agent 是包含感知、规划、执行、记忆的完整系统,LLM 只是其中的推理引擎;核心区别在于 Agent 有循环推理,能根据执行结果迭代调整,而 LLM 是单次生成;记忆上,Agent 有分层记忆管理,LLM 只有上下文窗口。总结一句:Agent 是能自主行动的‘机器人’,LLM 是它的‘大脑’。”
4️⃣ 高频追问 & 应对
追问 1:Agent 的循环推理如何避免陷入死循环?
应对策略:引入最大步骤限制(如 max_iterations=10)和终止条件(如任务完成标志)。实际工程中,我们会用超时机制(timeout=30s)和状态机(State Machine)来管理循环,每个步骤记录当前状态,如果连续 N 步无进展(如重复调用同一工具),则强制终止并返回部分结果。另外,可以加一个观察器(Observer)监控循环日志,检测到模式重复时触发中断。
追问 2:Agent 的工具调用失败时,如何保证鲁棒性?
应对策略:采用重试+降级策略。第一次失败后,重试 2 次(指数退避,如 1s、2s 间隔);如果仍失败,降级为“告知用户工具不可用”或“尝试替代工具”(如搜索 API 失败,改用缓存数据)。实际项目中,我们会在 Agent 框架里加一个工具注册表(Tool Registry),每个工具定义 fallback 链,例如“天气 API 失败 → 调用备用天气 API → 最后用静态数据”。
追问 3:Agent 的记忆管理如何解决上下文窗口限制?
应对策略:使用滑动窗口(保留最近 N 轮对话)和摘要压缩(Summarization,每 M 轮对历史做一次摘要)。长期记忆用向量检索(如 FAISS 检索相关片段),工作记忆用键值存储(如 Redis 存储当前任务状态)。实际落地中,我们会在 Agent 的短期记忆里设置 token 预算(如 4096 tokens),超出后自动丢弃最早对话,同时将关键信息写入长期记忆。
5️⃣ 避坑 · 常见错误答法
- ❌ “Agent 就是大模型加上工具调用能力。” → ✅ “Agent 是系统级架构,包含循环推理、分层记忆和状态管理,工具调用只是执行层的一部分。本质区别在于 Agent 有自主决策循环,而 LLM 只是被动生成。”
- ❌ “Agent 和大模型本质一样,只是多了个 API 调用。” → ✅ “本质不同在于 Agent 有感知-规划-执行-记忆的完整流程,LLM 是单次推理。Agent 依赖 LLM 但增加了状态管理和迭代能力,两者是系统与组件的关系。”
- ❌ “Agent 可以完全替代大模型。” → ✅ “Agent 依赖大模型作为推理引擎,没有 LLM 的 Agent 无法进行复杂推理;但 LLM 单独使用无法自主完成任务。两者是互补关系,不是替代关系。”
6️⃣ 简历呼应
- 如果你有 RAG 项目:从“RAG 是 Agent 的简化版”切入,说明 RAG 只有检索+生成,而 Agent 增加了规划、工具调用和循环推理。可以举例:你的 RAG 系统只能回答静态知识,而 Agent 能调用搜索 API 获取实时信息。
- 如果你只做过传统 NLP:用“规则系统 vs 机器学习”类比,传统 NLP 的 pipeline(分词→NER→分类)是静态的,Agent 的循环推理是动态的。强调你对状态机和工具调用的理解。
- 如果你是校招无项目:聚焦论文复现,如 ReAct 或 AutoGPT 的论文,说明你理解 Thought-Action-Observation 循环,并可以展示一个简单的 Python demo(如用 OpenAI API + 搜索工具完成多步任务)。
7️⃣ 延伸阅读
- 论文:ReAct: Synergizing Reasoning and Acting in Language Models (Yao et al., 2023)
- 论文:Toolformer: Language Models Can Teach Themselves to Use Tools (Schick et al., 2023)
- 工具:LangGraph - 用于构建 Agent 循环推理的图执行引擎
- 博客:OpenAI Function Calling 官方文档 - 结构化工具调用的最佳实践
- 论文:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (Wei et al., 2022) - 理解单次推理与循环推理的边界