智能体(Agent)总览
先说结论
AI 智能体是指以 LLM 为核心决策引擎,能够感知环境、规划任务、调用工具、根据反馈自主调整的自主系统,实现了从"只能说话"到"能做事"的关键跃迁。
QUESTION 面试高频:什么是 AI Agent?和普通 LLM 有什么区别? 普通 LLM 是"被动应答"——用户问什么回答什么,没有行动能力。Agent 的核心区别在于自主性:它能自主规划任务步骤、选择和调用工具、观察执行结果、根据反馈调整策略。如果说 LLM 是"大脑",Agent 就是"大脑 + 手脚 + 感官"。
Agent 核心架构
ReAct 循环
Agent 的基本范式是 ReAct(Reasoning + Acting) 循环:
用户目标
↓
Thought(推理):分析当前状态,决定下一步
↓
Action(行动):调用工具或执行操作
↓
Observation(观察):获取工具返回结果
↓
Thought → Action → Observation ... (循环直到完成)
↓
Answer(回答):返回最终结果
QUESTION 面试高频:ReAct 框架的核心思想是什么? ReAct 的核心是将**推理(Reasoning)和行动(Acting)**交织进行。传统做法要么是纯推理(Chain-of-Thought),要么是纯行动(端到端工具调用)。ReAct 让模型在每一步都先"想清楚"再"动手",既有可解释性又能处理复杂任务。
Agent 系统组件
| 组件 | 功能 | 常见实现 |
|---|---|---|
| LLM 核心 | 推理、规划、决策 | GPT-4o, Claude, Qwen |
| 工具集 | 与外部世界交互 | 搜索、数据库、API、代码执行 |
| 记忆系统 | 短期/长期记忆 | 对话历史、向量存储、知识图谱 |
| 规划模块 | 任务分解和步骤规划 | ReAct, Plan-and-Execute, Tree-of-Thought |
| 反馈循环 | 观察结果、调整策略 | Self-Reflection, Self-Correction |
Agent 分类
| 类型 | 特点 | 代表系统 | 适用场景 |
|---|---|---|---|
| 单一 Agent | 一个 LLM + 工具集 | AutoGPT, BabyAGI | 个人助手、自动化任务 |
| 多 Agent 协作 | 多个 Agent 分工协作 | AutoGen, CrewAI | 复杂任务、角色分工 |
| 层级 Agent | 管理者 Agent 分配子任务 | LangGraph Supervisor | 企业工作流 |
| ** Swarm** | 轻量级 Agent 间 Handoff | OpenAI Swarm/Agents SDK | 客服路由、专家系统 |
QUESTION 面试高频:Agent 的规划能力如何实现? 三种主要方式:单步规划(ReAct)——每步只规划一个行动,适合简单任务;多步规划(Plan-and-Execute)——先制定完整计划再逐步执行,适合复杂任务但缺乏灵活性;动态规划(Tree-of-Thought)——维护多棵搜索树,允许回溯和调整,适合需要探索的任务。实践中通常结合使用:先用 Plan-and-Execute 制定大纲,再用 ReAct 执行每一步。
主流 Agent 框架对比
| 维度 | LangChain/LangGraph | LlamaIndex | OpenAI Agents SDK |
|---|---|---|---|
| 核心定位 | 通用 LLM 应用框架 | 数据索引与 RAG 专家 | OpenAI 原生智能体编排 |
| 编排方式 | 图结构 + LCEL | 查询引擎管道 | Handoff 机制 |
| 状态管理 | StateGraph 持久化 | 上下文管理 | Context 对象 |
| 多智能体 | LangGraph 多节点 | 子问题查询引擎 | Handoffs |
| 学习曲线 | 陡峭 | 中等 | 平缓 |
| 模型支持 | 100+ 提供商 | 多提供商 | 仅 OpenAI |
Agent 关键能力
1. 工具调用(Tool Use)
Agent 通过 Function Calling 与外部工具交互:
# 工具定义
tools = [
{
"name": "search_web",
"description": "搜索互联网获取信息",
"parameters": {
"query": {"type": "string", "description": "搜索关键词"},
"num_results": {"type": "integer", "description": "返回结果数量"}
}
}
]
2. 记忆系统
| 记忆类型 | 说明 | 实现方式 |
|---|---|---|
| 短期记忆 | 当前对话上下文 | 对话历史窗口 |
| 工作记忆 | 当前任务状态 | Scratchpad/状态变量 |
| 长期记忆 | 跨会话知识积累 | 向量存储 + 检索 |
| 情景记忆 | 过往交互经验 | 交互日志 + 总结 |
3. 规划与推理
| 方法 | 说明 | 适用场景 |
|---|---|---|
| ReAct | 推理-行动交替循环 | 通用场景 |
| Plan-and-Execute | 先规划后执行 | 复杂多步任务 |
| Reflexion | 带自我反思的 ReAct | 需要自我纠错的场景 |
| LATS | 语言 Agent 树搜索 | 需要探索和回溯的场景 |
| ADAPT | 自适应规划与执行 | 动态变化的环境 |
Agent 安全与控制
QUESTION 面试高频:Agent 系统有哪些安全风险?
| 风险 | 说明 | 缓解措施 |
|---|---|---|
| Prompt 注入 | 恶意输入操纵 Agent 行为 | 输入验证、权限隔离 |
| 工具滥用 | Agent 调用不应调用的工具 | 工具权限控制、审批流程 |
| 权限提升 | Agent 获取超出预期的权限 | 最小权限原则 |
| 成本失控 | Agent 循环调用消耗大量 Token | 最大步数限制、Token 预算 |
| 信息泄露 | Agent 泄露敏感信息到外部工具 | 数据脱敏、输出过滤 |
| 间接注入 | 通过工具返回内容注入恶意指令 | 工具输出净化 |
安全最佳实践
- 人工审批(Human-in-the-Loop):涉及写入/删除/支付等操作必须人工确认
- 最大步数限制:设置 Agent 循环上限(通常 10-20 步)
- Token 预算:为每次任务设定 Token 消耗上限
- 工具权限分级:只读工具放开,写操作工具需要审批
- 沙箱执行:代码执行类工具必须在沙箱中运行
工程落地时我会怎么做
- 从 ReAct 开始:先用简单的 ReAct 循环验证可行性,再引入复杂规划
- 工具设计优先:工具描述的质量直接决定 Agent 的表现
- 设置护栏:最大步数、Token 预算、人工审批一道都不能少
- 可观测性:记录完整的 Thought-Action-Observation 轨迹
- 评估 Agent 表现:端到端任务成功率比单步准确率更重要
- 成本控制:监控每次任务的 Token 消耗,设置预算上限
如果要对外讲,可以怎么概括
"Agent 是 LLM 从'只能说话'到'能做事'的关键跃迁。核心架构是 ReAct 循环——Thought-Action-Observation 交替进行,让模型在每一步都先'想清楚'再'动手'。Agent 的关键能力包括工具调用(Function Calling)、记忆系统(短期/长期记忆)和规划推理(Plan-and-Execute)。在框架选择上,复杂多智能体选 LangGraph,数据密集型选 LlamaIndex,轻量级 OpenAI 专用选 Agents SDK。但最重要的是安全和控制——Agent 失控的代价远大于普通 LLM,必须设置护栏:最大步数限制、Token 预算、人工审批,以及工具权限分级。我的实践经验是:从简单开始,工具设计比框架选择更重要,可观测性是上线的前提。"
最后记几条
- ReAct 是 Agent 的基本范式:推理 + 行动交替循环
- 工具描述质量决定 Agent 上限:模型对工具的理解完全依赖描述
- 安全护栏是 Agent 的生命线:最大步数、Token 预算、人工审批缺一不可
- 框架选择不如架构设计重要:核心逻辑保持框架无关
- Agent 评估看端到端任务成功率:而非单步工具调用准确率
参考资料
- Yao, S. et al. "ReAct: Synergizing Reasoning and Acting in Language Models" (ICLR 2023)
- Shinn, N. et al. "Reflexion: Language Agents with Verbal Reinforcement Learning" (NeurIPS 2023)
- Significant Gravitas, "AutoGPT" (2023)
- OpenAI Agents SDK: https://github.com/openai/openai-agents-python
- Wu, Q. et al. "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation" (2023)