Agent

1. 什么是 Agent

Agent 不是“会聊天的模型”,而是一个能够围绕目标持续执行、多步决策、调用工具并根据结果调整行为的系统。

简单说:

  • 普通 LLM 应用:你问一句,它答一句。
  • Agent:你给一个目标,它自己拆解步骤、执行、观察结果、继续推进。

2. Agent 的典型组成

2.1 模型

负责:

  • 理解任务
  • 做局部推理
  • 决定下一步动作
  • 生成最终输出

2.2 工具

负责把“语言能力”扩展为“行动能力”。

常见工具包括:

  • 搜索
  • 数据库查询
  • 代码执行
  • 文件读写
  • API 调用
  • 浏览器操作

2.3 记忆

通常分为两类:

  • 短期记忆:当前会话中的上下文、状态、计划、已完成步骤
  • 长期记忆:用户偏好、历史任务、可复用知识

2.4 控制循环

典型循环:

  1. 感知当前状态
  2. 决定下一步动作
  3. 调用工具或生成结果
  4. 读取反馈
  5. 判断是否继续

3. Agent 与 Workflow 的区别

两者容易混淆。

Workflow

  • 路径基本预先定义
  • 每一步做什么比较固定
  • 更容易预测、调试和评测

Agent

  • 路径由模型动态决定
  • 更灵活,但不稳定性更高
  • 更依赖工具质量、上下文质量和终止条件设计

经验上:

  • 稳定业务优先用 workflow。
  • 任务开放度高、路径不固定时再引入 agent。

4. Agent 的常见工作模式

ReAct

交替进行推理与行动:

Thought -> Act -> Observation -> Thought -> ...

适合需要边查边做的任务。

Plan-and-Execute

先生成计划,再逐步执行。

优点:

  • 更容易审查
  • 更适合长任务

缺点:

  • 计划可能过时
  • 中途遇到新信息时需要重规划

Reflect / Self-Critique

先给出结果,再自我检查并修正。

适合:

  • 复杂写作
  • 代码生成
  • 多约束任务

5. Agent 失败的典型原因

  • 目标定义不清
  • 工具描述不清或工具返回不稳定
  • 上下文窗口被无关信息占满
  • 缺少终止条件,导致循环失控
  • 缺少权限边界,导致误操作风险
  • 缺少评测,问题长期隐藏

6. 工程上必须设计的护栏

6.1 明确目标与完成条件

不要只说“帮我处理这个问题”,要定义:

  • 成功标准
  • 输出格式
  • 禁止行为
  • 可用工具范围

6.2 限制动作空间

不要默认给全部工具权限。

常用做法:

  • 按任务白名单开放工具
  • 限制写操作
  • 高风险动作要求人工确认

6.3 设计终止条件

例如:

  • 达到任务目标
  • 连续若干次无进展
  • 达到最大步数
  • 关键工具连续失败

6.4 记录过程

至少应记录:

  • 输入
  • 计划
  • 工具调用
  • 结果
  • 错误
  • 最终输出

否则无法排查失败路径。

7. 什么时候适合用 Agent

适合:

  • 多步任务
  • 工具依赖强
  • 路径不固定
  • 需要根据中间结果调整后续步骤

不适合:

  • 单轮简单问答
  • 固定流程表单处理
  • 高风险且无需灵活性的业务路径

8. 一个最小 Agent 心智模型

目标
  -> 规划
  -> 选择工具
  -> 执行动作
  -> 观察结果
  -> 更新状态
  -> 继续 / 终止

9. 评价一个 Agent 是否“好用”

不要只看“聪不聪明”,更该看:

  • 任务成功率
  • 工具调用成功率
  • 平均步数
  • 延迟
  • 成本
  • 是否容易失控
  • 是否容易调试

10. 一句话总结

Agent 本质上是“带工具、带状态、带控制循环的 LLM 系统”。