Agent 是人工智能向自主化迈进的核心形态。本文将深入探讨 Agent 的定义、核心能力、经典架构以及在实战中的设计挑战。
一、 基础问题
1. 什么是 Agent?和普通 LLM 的区别?
Agent 是能够感知环境、自主决策、执行动作并完成目标的智能系统。如果说 LLM 是“大脑”,那么 Agent 就是拥有“手脚”和“感官”的完整生命体。
特性对比
| 特性 | LLM | Agent |
|---|---|---|
| 能力 | 文本生成 | 规划 + 记忆 + 工具使用 |
| 交互 | 单轮/多轮对话 | 与环境持续交互 |
| 主动性 | 被动响应 | 主动规划执行 |
| 工具 | 无 | 可调用外部工具 |
2. Agent 核心能力
- 规划 (Planning):将复杂目标分解为可执行的子任务,并制定最优策略。
- 记忆 (Memory):
- 短期记忆:当前会话的上下文信息。
- 长期记忆:通过向量数据库等技术存储和检索历史知识。
- 工具使用 (Tool Use):能够识别何时需要外部信息,并精准调用 API、函数或搜索引擎。
二、 Agent 架构
1. ReAct 范式:推理与行动的交响
ReAct (Reasoning + Acting) 是目前 Agent 的主流核心范式,其特点是将推理和行动交替进行。
循环流程:Thought(思考) → Action(行动) → Observation(观察) → …
示例:
- Thought: 用户问是否需要带伞,我需要查询北京的天气。
- Action: 调用
weather_api(location="北京")。 - Observation: 北京今天晴天,25度。
- Thought: 既然是晴天,就不需要带伞。
- Final Answer: 不需要带伞。
优势:
- 推理过程透明、可追踪。
- 在执行出错时,能够根据观察反馈进行回溯和修正。
2. Plan & Execute 模式
与 ReAct 边思边行不同,这是一种两阶段模式:
- Plan 阶段:LLM 一次性制定完整的执行计划。
- Execute 阶段:按步骤执行,支持子任务并行。
| 模式 | 特点 | 适用场景 |
|---|---|---|
| ReAct | 边思考边执行 | 探索性、高不确定性任务 |
| Plan & Execute | 先规划后执行 | 确定性强、步骤清晰的任务 |
优化技巧:
- 计划重排:根据执行过程中的中间反馈动态调整后续计划。
- 并行加速:对无依赖关系的子任务进行并发处理。
3. 多 Agent 协作模式
| 模式 | 说明 | 示例 |
|---|---|---|
| 层级式 | 主 Agent 作为 Manager 分配任务给多个 Worker Agent | 项目经理 + 开发者 + 测试人员 |
| 平等协商 | 多个 Agent 通过对话平等交流,共同达成共识 | 委员会投票决策 |
| 流水线 | Agent 按顺序处理数据,前者的输出是后者的输入 | 数据清洗 → 特征分析 → 报告生成 |
| 竞争式 | 多个 Agent 生成不同方案,由裁判 Agent 投票选择 | 辩论赛模式 |
通信机制:
- 共享内存/消息队列。
- 定义标准化通信协议。
- 建立冲突解决与仲裁机制。
三、 工具调用 (Function Calling)
1. 原理与流程
LLM 根据用户输入和预定义的函数描述,输出结构化 JSON 展示调用意图。
流程:用户输入 + 函数定义 → LLM → 函数调用 JSON → 外部执行 → 结果返回 LLM。
2. Tool Schema 设计原则
- 命名清晰:采用“动词 + 名词”结构(如
search_hotel)。 - 参数明确:严格定义类型、必填项及详细描述。
- 原子化:一个工具只解决一个具体问题。
3. 防护策略
- 参数校验:使用 JSON Schema 进行严格格式验证。
- 沙箱执行:在隔离环境中运行代码工具。
- 人工确认 (HITL):涉及删除、转账等高风险操作时引入二次确认。
四、 上下文与存储管理
1. 窗口限制解决方案
- 滑动窗口:丢弃最早的对话,保留最近 N 轮。
- 摘要压缩:利用 LLM 周期性对历史对话进行总结。
- 向量检索 (RAG):将历史存入向量库,仅在需要时按语义检索相关片段。
2. 记忆分类
- Short-term:当前会话上下文(直接放入 Prompt)。
- Long-term:跨会话知识(向量数据库存储)。
- Working Memory:执行过程中的临时状态变量。
五、 实战:浏览器 Agent 设计
核心能力设计:
- 页面操作:点击、输入、滚动。
- 信息提取:智能识别 HTML 结构并提取关键内容。
- 导航控制:控制前进、后退及 URL 跳转。
防护机制(防止无限循环):
- 设定最大步数限制。
- 重复状态检测:识别并拦截陷入死循环的操作序列。
- 超时机制与人工介入接口。
留言板