Agents
智能代理:AI的终极目标 — Chip Huyen
📄 huyenchip.com 📅 2025-01-07 ✍️ Chip Huyen 📖 《AI Engineering》节选

🎯 核心结论

一句话概括

Agent 是能够感知环境并作用于环境的任何事物。在 AI 时代,基础模型是 Agent 的"大脑",负责处理任务、规划行动序列、判断任务是否完成。Agent 的成功取决于两个核心因素:工具库(Tool Inventory)规划能力(Planning)。工具让 Agent 超越模型本身的局限,规划让 Agent 将复杂任务分解为可执行的步骤。

Agent 的本质特征

  • 环境(Environment):Agent 运行的场景(游戏、互联网、道路系统)
  • 传感器(Sensors):感知环境的方式(文本输入、API 返回、网页内容)
  • 执行器(Actuators):作用于环境的方式(生成文本、调用工具、执行代码)
  • AI 大脑:基础模型,负责推理、规划、决策
"The study and design of rational agents."
—— Stuart Russell & Peter Norvig, 《Artificial Intelligence: A Modern Approach》(1995)

🤖 Agent 概述

Agent 与环境的依赖关系

💡 环境与工具的双向制约

  • 环境决定可用工具:如果环境是国际象棋,唯一可能的动作就是合法的 chess moves
  • 工具限制可运行环境:如果机器人唯一的动作是游泳,它就被限制在水环境中

日常中的 Agent

应用 环境 工具
ChatGPT 对话界面 Web 搜索、Python 执行、图像生成
RAG 系统 文档库 文本检索器、图像检索器、SQL 执行器
SWE-agent 计算机终端 + 文件系统 浏览仓库、搜索文件、查看文件、编辑行
自动驾驶 道路系统及周边 转向、加速、刹车、传感器融合

为什么 Agent 需要更强大的模型?

📉 复合错误(Compound Mistakes)

如果模型每步准确率 95%,10 步后准确率降至 60%,100 步后仅 0.6%。

⚠️ 更高风险(Higher Stakes)

Agent 能执行更有影响力的任务,但任何失败都可能带来更严重后果。

⚠️ Agent 的成本抱怨

"Agent 只会烧光你的 API 额度。"但如果 Agent 能自主运行,它可以节省人类时间,使成本物有所值。

🛠️ 工具(Tools)

工具的核心价值

没有外部工具的 Agent 能力极其有限——LLM 只能生成文本,图像生成器只能生成图像。外部工具让 Agent 的能力呈指数级扩展。

工具三大类别

1. 知识增强(Knowledge Augmentation)

工具类型 功能 示例
文本检索器 从文档库检索相关信息 RAG 系统的核心组件
图像检索器 检索相关图像 产品图片搜索
SQL 执行器 查询结构化数据库 获取销售数据
人员搜索 查找组织内部人员 按姓名/邮箱搜索
库存 API 返回产品库存状态 实时库存查询
Slack/邮件读取 读取内部通讯 获取历史讨论
Web 浏览 访问互联网获取最新信息 搜索 API、新闻 API、GitHub API

💡 Web 浏览的双刃剑

Web 浏览防止模型"过时"(stale)——训练数据截止后的事件也能获取。但它也让 Agent 暴露于互联网的"污水池"。选择互联网 API 时需谨慎。

2. 能力扩展(Capability Extension)

工具 解决的模型局限 效果
计算器 数学计算差 199,999 ÷ 292 瞬间准确
日历/时区转换器 时间计算易错 精确处理跨时区
单位转换器 单位换算 lbs ↔ kg 等
代码解释器 代码理解与执行 数据分析、实验运行
翻译器 多语言能力不足 翻译模型不擅长的语言对

工具让文本模型变成多模态

  • 文本模型 + DALL-E = 可生成文本和图像(如 ChatGPT)
  • 文本模型 + 代码解释器 = 可生成图表和图形
  • 文本模型 + LaTeX 编译器 = 可渲染数学公式
  • 文本模型 + 图像描述工具 = 可"理解"图像
  • 文本模型 + 转录工具 = 可"理解"音频
  • 文本模型 + OCR = 可读取 PDF

3. 写操作(Write Actions)

📖 读操作示例

  • 检索数据表
  • 读取邮件
  • 查询银行余额

✏️ 写操作示例

  • 修改/删除数据表
  • 回复邮件
  • 发起银行转账
  • 下订单
  • 更新数据库

⚠️ 写操作的安全风险

"就像你不应该给实习生删除生产数据库的权限一样,你也不应该允许不可靠的 AI 发起银行转账。"

关键防护:敏感操作需人工审批;不给 AI 直接执行 DELETE/UPDATE 的权限。

工具选择(Tool Selection)

研究 工具数量 发现
Toolformer 5 个工具 微调 GPT-J 学习使用工具
Chameleon 13 个工具 GPT-4 + 工具在 ScienceQA 提升 11.37%,TabMWP 提升 17%
Gorilla 1,645 个 API 探索大规模 API 选择

💡 工具选择的实验方法

  • A/B 对比:比较不同工具集下 Agent 的表现
  • 消融研究:移除某个工具,看性能下降多少
  • 错误分析:找出 Agent 频繁出错的工具
  • 使用分布:绘制工具调用分布,发现最常用和最不常用的工具

工具过渡(Tool Transition)与技能管理

Chameleon 提出研究工具过渡:工具 X 之后调用工具 Y 的概率。如果两个工具经常一起使用,可以合并为更大的工具。

Voyager 提出技能管理器(Skill Manager):Agent 创建的新技能(代码程序)成功后加入技能库,供后续任务复用。

🧠 规划(Planning)

规划的本质

查询:"How many companies without revenue have raised at least $1 billion?"
方案1: 先找所有无收入公司,再按融资额过滤
方案2: 先找所有融资≥$1B的公司,再按收入过滤
→ 方案2更高效(无收入公司远多于大额融资公司)

规划与执行的解耦

为什么需要解耦?

如果模型生成了 1000 步的计划但根本无法完成目标,没有监督的 Agent 可能运行数小时、浪费大量 API 调用后才被发现。

解耦流程

  1. Agent 先生成计划
  2. 计划被验证(启发式或 AI Judge)
  3. 验证通过后才执行

规划粒度(Planning Granularity)

粒度 示例 优缺点
细粒度 直接使用函数名:[fetch_top_products, generate_query, generate_response] 易执行,但工具 API 变更时需更新提示和示例
粗粒度 自然语言描述:"get current date → retrieve best-selling product → retrieve product info → generate response" 对工具变更鲁棒,但需要翻译器转换为可执行命令

控制流(Control Flow)

控制流类型 说明 示例
Sequential 任务 B 在任务 A 完成后执行 SQL 查询生成后才能执行 SQL
Parallel 任务 A 和 B 同时执行 检索 Top100 畅销品同时检索每个的价格
If Statement 根据前一步输出选择 B 或 C 查看 NVIDIA 财报后决定买入或卖出
For Loop 重复执行直到条件满足 不断生成随机数直到得到质数

Function Calling(函数调用)

# 函数调用流程 1. 创建工具清单:声明所有可用工具(函数名、参数、文档) 2. 指定每查询可用工具列表 3. 控制工具使用模式: - required: 模型必须使用至少一个工具 - none: 模型不应使用任何工具 - auto: 模型自行决定使用哪些工具 4. 模型自动生成工具调用及其参数 5. 执行函数,将结果反馈给模型 6. 模型基于工具输出生成最终响应

基础模型作为规划器:争议与可能性

"Auto-Regressive LLMs can't plan (and can't really reason)."
—— Yann LeCun, Meta Chief AI Scientist, 2023

❌ 反对观点

自回归模型只能生成向前的动作,无法回溯生成替代动作。规划需要搜索和回溯,因此自回归模型无法规划。

✅ 反驳观点

执行路径 A 后发现不理想,模型可以修订路径使用 B, effectively 回溯。模型也可以重新开始选择另一条路径。

💡 "Reasoning with Language Model is Planning with World Model"

LLM 包含大量世界信息,能够预测每个动作的结果。将结果预测纳入规划,可以生成连贯的计划。即使 AI 不能独立规划,它仍可以是规划器的一部分——通过搜索工具和状态跟踪系统辅助规划。

FM Planner vs RL Planner

维度 基础模型规划器(FM Agent) 强化学习规划器(RL Agent)
训练方式 提示或微调,时间/资源较少 RL 算法训练,耗时耗资源
灵活性 通用,跨任务迁移 针对特定环境优化
长期趋势 两者可能融合

🔍 反思与错误纠正(Reflection & Error Correction)

反思不是必需的,但对成功是必需的

"While reflection isn't strictly necessary for an agent to operate, it's necessary for an agent to succeed."

反思的四个关键时机

  1. 接收用户查询后:评估请求是否可行
  2. 初始计划生成后:评估计划是否合理
  3. 每步执行后:评估是否在正确轨道上
  4. 整个计划执行后:确定任务是否完成

ReAct 模式:推理与行动交错

Thought 1: 分析当前状态和下一步计划 Act 1: 执行动作(调用工具/生成查询) Observation 1: 观察动作结果 Thought 2: 基于观察分析进展 Act 2: 执行下一步动作 Observation 2: 观察结果 ... Thought N: 确定任务已完成 Act N: Finish [最终响应]

Reflexion:分离评估与自我反思

🎭 Actor(执行者)

生成计划并执行动作

📊 Evaluator(评估者)

评估执行结果的质量

🪞 Self-Reflection(自我反思)

分析失败原因,提出改进方案

反思的实现方式

  • 自我批评提示:同一个 Agent 用 self-critique prompts
  • 专门评分器:独立模型输出具体分数
  • 多 Agent 设置:一个 Agent 规划和执行,另一个评估每一步

⚠️ 反思的成本

Thought、Observation 和 Action 可能消耗大量 token,增加成本和用户感知延迟,尤其是多步骤任务。ReAct 和 Reflexion 作者使用大量示例来引导 Agent 遵循格式,进一步增加了输入 token 成本。

❌ Agent 失败模式与评估

规划失败(Planning Failures)

失败模式 示例 检测方法
无效工具 生成包含 bing_search 的计划,但工具库中没有 检查工具名是否在清单中
有效工具,无效参数 lbs_to_kg 需要 1 个参数但传了 2 个 参数数量/类型验证
有效工具,错误参数值 应该用 120 但用了 100 语义验证、范围检查
目标失败 计划去越南而非印度;或预算超支 结果验证、约束检查
时间约束失败 截止日期后才完成资助申请 时间戳验证
反思错误 只分配了 40 人却坚称任务完成 独立验证器检查

规划评估指标

工具失败(Tool Failures)

🔧 工具本身错误

图像描述器返回错误描述,SQL 生成器生成错误查询

🔄 翻译错误

高层计划 → 可执行命令的翻译模块出错

❓ 缺失工具

Agent 在特定领域频繁失败,可能是因为缺少该领域的工具

效率评估(Efficiency)

指标 说明
平均步数 完成任务所需的平均步骤数
平均成本 完成任务的平均 API 成本
动作耗时 每个动作通常耗时?是否有特别耗时/昂贵的动作?

💡 AI vs 人类效率差异

"访问 100 个网页对人类可能效率低下(一次只能访问一个),但对 AI 来说微不足道(可以同时访问所有网页)。"

💡 提升 Agent 规划能力的技巧

技巧 说明
更好的系统提示 提供更多示例(few-shot prompting)
更好的工具描述 让模型更清楚理解工具功能和参数
重构函数 将复杂函数拆分为两个更简单的函数
使用更强的模型 更强的模型通常规划能力更好
微调规划模型 专门微调模型用于计划生成
人类参与 人类提供高层计划,Agent 扩展细节
风险操作审批 更新数据库/合并代码前需人工确认

📝 总结

Agent 的核心架构

┌─────────────────────────────────────────────────────────────┐ │ AI Agent 架构 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 用户任务 ──► [意图分类器] │ │ │ │ │ │ │ ▼ │ │ │ [计划生成器] ──► 生成计划 │ │ │ │ │ │ │ ▼ │ │ │ [计划验证器] ──► 验证计划合理性 │ │ │ │ │ │ │ ▼ │ │ │ [执行器] ──► 调用工具/执行动作 │ │ │ │ │ │ │ ▼ │ │ │ [反思/评估] ──► 评估结果,决定继续/重试/结束 │ │ │ │ │ │ │ └──────────────┐(未完成时循环) │ │ │ │ │ │ ▼ ▼ │ │ [最终响应] ◄──────────────── [任务完成] │ │ │ │ 工具库: 知识增强 | 能力扩展 | 读操作 | 写操作 │ │ 控制流: Sequential | Parallel | If | For Loop │ │ │ └─────────────────────────────────────────────────────────────┘

核心要点

  • Agent 定义:感知环境 + 作用于环境的系统,AI 是大脑
  • 工具三类别:知识增强、能力扩展、写操作
  • 规划核心:任务分解 + 计划验证 + 执行 + 反思循环
  • 控制流:Sequential、Parallel、If、For Loop
  • ReAct 模式:Thought → Act → Observation 交错
  • 失败模式:规划失败、工具失败、效率问题
  • 评估重点:计划有效性、工具调用正确性、任务完成率、效率指标
"While the concept of 'agents' sounds novel, they are built upon many concepts that have been used since the early days of LLMs, including self-critique, chain-of-thought, and structured outputs."
—— Chip Huyen