Agent 原理
是什么
Agent(AI 智能体)是建立在 LLM 之上的自主行动系统。如果说 LLM 是”大脑”,那 Agent 就是拥有了身体、工具和自主决策能力的完整个体。
LLM 只能”说”,Agent 能”做”。LLM 回答问题,Agent 完成任务。
核心区别:
| 维度 | LLM | Agent |
|---|---|---|
| 输入 | 一段文本(Prompt) | 一个目标/任务 |
| 输出 | 一段文本回答 | 一个完成的任务结果 |
| 行为模式 | 一问一答,被动响应 | 自主规划,多步执行 |
| 能力边界 | 只能生成文本 | 能调用工具、读写文件、执行代码 |
为什么需要 Agent
LLM 的能力天花板
LLM 单独使用时有明确的能力边界:
- 不能执行动作:不能发邮件、不能改文件、不能查数据库
- 不能获取实时信息:不知道今天的天气、股价、最新新闻
- 不能持续运行:一次对话结束就”失忆”
- 复杂任务易出错:一步到位完成多步任务时容易遗漏或犯错
Agent 的解法
Agent 通过四个核心能力突破这些限制:
┌─────────┐
│ LLM │ ← 大脑(推理与决策)
│ (大脑) │
└────┬────┘
│
┌────────────┼────────────┐
↓ ↓ ↓
┌────────┐ ┌────────┐ ┌────────┐
│ 规划 │ │ 工具 │ │ 记忆 │
│Planning │ │Tools │ │Memory │
└────────┘ └────────┘ └────────┘
四大核心能力
1. 规划(Planning)
Agent 接收到一个复杂目标后,能自主将其分解为可执行的子步骤。
任务分解示例:
目标:部署一个博客网站到腾讯云
Agent 分解:
1. 检查本地代码是否构建成功
2. 连接腾讯云服务器(SSH)
3. 安装 Node.js 和 Nginx
4. 上传代码到服务器
5. 配置 Nginx 反向代理
6. 申请 SSL 证书并配置 HTTPS
7. 验证网站是否正常访问
规划策略:
- 顺序规划:按步骤依次执行,每步依赖上一步的结果
- 并行规划:识别可以并行的步骤,提高效率
- 动态规划:根据执行结果调整后续计划
2. 工具调用(Tool Use)
这是 Agent 区别于普通 LLM 的关键能力。Agent 可以调用外部工具来获取信息或执行操作。
Function Calling 机制:
// LLM 决定调用工具
{
"function": "search_web",
"arguments": {
"query": "Node.js 20 LTS 最新版本号"
}
}
// 工具返回结果
{
"result": "Node.js v20.18.1 (2024-11-20)"
}
// LLM 基于结果继续推理
"当前 Node.js 20 LTS 最新版本是 v20.18.1,发布于 2024 年 11 月 20 日。"常见工具类型:
| 类型 | 示例 |
|---|---|
| 信息检索 | 搜索引擎、RAG 检索、数据库查询 |
| 代码执行 | Python/JavaScript 解释器、Shell |
| 文件操作 | 读/写/删除文件、目录管理 |
| API 调用 | 天气、邮件、日历、第三方服务 |
| 浏览器 | 打开网页、截图、表单填写 |
工具调用的标准化协议参见 MCP 协议。
3. 记忆(Memory)
Agent 需要记住过去的交互和积累的知识:
短期记忆(对话上下文):
- 当前会话中的对话历史
- 存储方式:直接放在 Prompt 的上下文窗口中
- 限制:受上下文窗口大小约束
长期记忆(持久化存储):
- 跨会话的偏好、习惯、历史决策
- 存储方式:向量数据库、文件系统、数据库
- 检索方式:语义搜索最相关的记忆
会话 1:用户说"我用 React + TypeScript 开发"
→ Agent 存入长期记忆
会话 2:用户说"帮我写个组件"
→ Agent 检索长期记忆 → 自动使用 React + TypeScript
4. 反思(Reflection)
Agent 在执行过程中能评估自己的行为,发现错误并纠正:
目标:修复登录页面的 Bug
步骤 1:读取错误日志 → 发现 "TypeError: Cannot read property 'token'"
步骤 2:定位到 auth.js 第 42 行
步骤 3:修复代码 → 添加空值检查
步骤 4:运行测试 → ❌ 测试失败
反思:修复不完整,还有另一个调用点没处理
步骤 5:搜索所有调用点 → 发现 3 处需要修改
步骤 6:修复所有调用点
步骤 7:运行测试 → ✅ 全部通过
反思让 Agent 具备了自我纠错能力,而不是一条路走到黑。
核心推理模式
ReAct(Reasoning + Acting)
最经典的 Agent 推理框架,交替进行”思考”和”行动”:
思考 (Thought): 用户想知道项目的测试覆盖率,我需要运行测试命令
行动 (Action): 执行 `npm test -- --coverage`
观察 (Observation): 覆盖率报告显示 78.5%,3 个文件低于 60%
思考 (Thought): 覆盖率整体还行,但有 3 个文件需要关注
行动 (Action): 读取这 3 个文件的代码
观察 (Observation): 发现是工具函数文件,缺少边界条件测试
回答 (Answer): 项目测试覆盖率 78.5%。以下 3 个文件需要补充测试:...
Plan-and-Execute
先生成完整计划,再逐步执行:
计划阶段:
1. 分析用户需求
2. 设计数据库 Schema
3. 创建 API 路由
4. 编写前端页面
5. 编写测试
6. 部署
执行阶段:
→ 执行步骤 1... 完成
→ 执行步骤 2... 完成
→ 执行步骤 3... 遇到问题,修改计划
→ ...
优势:有全局规划能力。劣势:初始计划可能因信息不足而偏差。
自主 Agent(Autonomous Agent)
完全自主运行,有明确的停止条件:
while 任务未完成:
观察当前状态
推理下一步行动
执行行动
评估结果
if 满足停止条件:
break
代表:AutoGPT、Devin。风险:可能陷入死循环或偏离目标。
多 Agent 协作
复杂任务可以由多个专业化的 Agent 协作完成:
角色分工(Role Playing)
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 产品经理 │ → │ 开发工程师 │ → │ 测试工程师 │
│ Agent │ │ Agent │ │ Agent │
└──────────┘ └──────────┘ └──────────┘
分析需求 编写代码 测试验证
任务交接(Handoffs)
Agent 之间的任务流转机制:
- Agent A 完成自己的部分后,将结果和上下文交给 Agent B
- 每个 Agent 有自己的 System Prompt 和工具集
- 协调者(Orchestrator)负责路由和调度
主流多 Agent 框架
| 框架 | 开发方 | 特点 |
|---|---|---|
| LangGraph | LangChain | 基于图的状态管理,灵活 |
| CrewAI | CrewAI | 角色驱动,简单易用 |
| AutoGen | Microsoft | 多 Agent 对话,可编程 |
| Swarm | OpenAI | 轻量级 Handoff 协议 |
Agent 开发的核心挑战
| 挑战 | 说明 |
|---|---|
| 可靠性 | Agent 的每一步决策都可能出错,错误会累积放大 |
| 成本 | 每步都需要 LLM 推理,多步任务成本高 |
| 安全性 | Agent 能执行真实操作(删文件、发邮件),误操作后果严重 |
| 可观测性 | 复杂 Agent 的决策过程难以调试和追踪 |
| 幻觉传播 | 中间步骤的幻觉可能影响后续所有步骤 |
最佳实践
- 人在环中(Human-in-the-Loop):关键操作前请求用户确认
- 最小权限:Agent 只授予完成任务所需的最少工具和权限
- 幂等设计:工具调用应尽量可重试、可回滚
- 详细日志:记录每一步的思考、行动和结果,便于调试
- 超时和熔断:设置最大步数/时间,防止 Agent 陷入死循环
与 MCP 的关系
MCP(Model Context Protocol)是 Agent 工具调用的标准化协议:
- MCP 定义了 Agent 如何发现、描述和调用工具
- MCP Server 提供工具实现(文件操作、数据库查询、API 调用等)
- MCP Client(Agent)通过标准协议与 Server 通信
Agent(MCP Client)
↕ MCP 协议
MCP Server(文件系统)
MCP Server(数据库)
MCP Server(搜索引擎)
延伸阅读
- 01-LLM 原理:Agent 的”大脑”
- 04-Prompt Engineering:ReAct 等推理模式的 Prompt 设计
- 05-RAG 原理:Agent 的知识检索能力
- 02-MCP 协议:Agent 工具调用的标准协议