Andi Partovi: 为什么每个 AI Agent 都需要一个模拟沙盒
Andi Partovi: 为什么每个 AI Agent 都需要一个模拟沙盒
向基于自主行动的 Agent 演进
AI Agent 的开发正在从简单的基于知识的聊天机器人,演进为受监督的副驾驶(co-pilots),并最终向自主的、基于行动的 Agent 演进。虽然 co-pilots 通常是为人类审批而起草内容,但基于行动的 Agent 拥有发送电子邮件、修改数据库和执行支付的权限。这种自主性的增加显著提高了运营风险,因为生产环境中的错误可能会导致严重的后果,包括数据丢失或法律责任。
为什么传统的评估方式无法适用于 AI Agent
传统的软件工程测试——例如单元测试、断言和“黄金数据集”(静态输入-输出对)——对于自主 Agent 来说是不够的,主要由于以下四个因素:
1. 非确定性
Agent 可以针对相同的输入产生不同的输出。因此,测试必须在大规模范围内通过重复进行,以确定特定输出的统计可能性,而不是依赖于单次成功的运行。
2. 交互性
许多 Agent 在与外部系统的多轮对话中运行。例如,一个通过电子邮件与供应商进行谈判的采购 Agent,需要一个能够发送和接收电子邮件并与实时数据库进行交互的系统。静态数据集无法捕捉这些动态工作流。
3. 动态标注
在 Agent 系统中,“正确”的答案往往取决于运行时的上下文。如果一个 Agent 因为身份验证工具返回了错误而拒绝了一笔交易,那么这种拒绝就是正确的行动,即使最初的测试预期是交易完成。因此,评估必须在追踪(trace)之后进行,而不是通过预定义的标签。
4. 不可预测的用户行为
面向用户的 Agent 面临对抗性输入、超出范围的请求以及试图操纵 Agent 违反策略的尝试。这些边缘情况很少被捕捉在传统的评估集中。
解决方案:模拟驱动开发
为了弥补“演示效果良好”与“大规模运行良好”之间的差距,开发者需要一个模拟环境——一个为 AI Agent 准备的高保真“黑客帝国(Matrix)”。模拟环境通过提供相同的工具、服务和用户类型来模拟生产环境,但不会产生失败带来的现实世界后果。
POMDP 框架
从理论角度来看,AI Agent 运行在部分可观测马尔可夫决策过程(Partially Observable Markov Decision Process, POMDP)中。与国际象棋(完全可观测的 MDP)不同,AI Agent 并不了解环境的全貌或用户的意图。它通过“行动-奖励”系统进行交互:Agent 执行一个动作,环境状态发生变化,Agent 接收到一个奖励(正向或负向),该奖励可能是即时的或延迟的。
稳健模拟环境的组成部分
构建一个有效的模拟环境需要四个核心组件:
- 被测 Agent (Agents Under Test): 正在被评估的特定 AI Agent。
- 模拟工具与服务 (Simulated Tools and Services): 数据库、日历或通信平台(例如 Slack, SharePoint)的 Mock 版本,其行为与真实版本一致。
- 模拟参与者 (Simulated Actors): 由 LLM 驱动的角色(personas),它们与 Agent 交互。为了有效,这些参与者不能仅仅是“乐于助人且有礼貌”的,而必须能够模拟挫败、难以理解或反复无常的人类,以测试 Agent 的稳健性。
- 测试场景 (Test Scenarios): 详尽的脚本,规定了模拟如何运行,专门设计用于发现开发者可能未曾预见的失败模式和边缘情况。
评估与改进 Agent
在模拟中进行的评估应该结合使用 LLM 评判员(judges)和客观验证。通过 Python 脚本进行的客观验证通常是最有效的方法,因为模拟环境提供了验证特定状态变化(例如数据库中的余额减少)是否实际发生的“地面真值(ground truth)”。
除了测试之外,模拟环境还可以用于通过以下方式迭代改进 Agent:
- 提示词工程 (Prompt Engineering): 根据在模拟中发现的失败模式来优化提示词。
- 数据生成 (Data Generation): 创建高质量数据用于监督微调 (SFT) 或强化学习 (RL),从而将新的、稳健的行为直接嵌入到模型中。