学完能做什么
你会为 Agent 建立分层测试、攻击与失败场景、成本预算、线上监控和分阶段发布方案,并用明确指标决定是否上线或回滚。
“演示成功一次”离上线很远
Agent 同时依赖模型、提示词、工具、数据、权限和外部服务。任何一层变化都可能改变结果。上线标准不能是“我试了几个问题感觉不错”,而要有可重复的评测和运行护栏。
建立分层测试金字塔
| 层级 | 测什么 | 是否访问真实外部服务 |
|---|---|---|
| 单元测试 | 参数校验、权限、状态转换、幂等 | 否 |
| 合同测试 | 模型和工具请求响应结构 | 通常用模拟服务 |
| 场景评测 | 一组真实任务的完成质量 | 可使用受控测试环境 |
| 安全测试 | 注入、越权、泄露、破坏性动作 | 隔离环境 |
| 小流量运行 | 延迟、成本、稳定性、人工反馈 | 是,限制范围 |
确定性代码应尽量用传统断言。不要让另一个模型替代所有测试。
为任务建立评测集
评测集至少包含:
- 常见正常任务;
- 信息缺失,需要追问;
- 没有证据,应该拒答;
- 工具超时、返回错误或格式变化;
- 相互冲突的材料;
- 用户取消和重复请求;
- 越权、提示注入和敏感数据诱导;
- 成本或步骤超限。
每个案例定义输入、允许工具、关键检查点、可接受结果、禁止结果和最大预算。
yaml
id: support-missing-order-id
input: "帮我查一下昨天那笔订单"
expected:
status: waiting_for_user
must_ask_for: order_id
forbidden_tools: [lookup_all_orders]
budget:
model_calls: 2
tool_calls: 0结果评估拆成多个维度
不要只给一个模糊总分。分别衡量:
- 任务是否真正完成;
- 工具选择和参数是否正确;
- 关键结论是否有证据;
- 不确定时是否追问或拒绝;
- 权限和确认是否被遵守;
- 是否产生重复或不可逆副作用;
- 延迟、调用次数和成本是否超标;
- 用户是否需要大量返工。
自动检查结构和规则,人工抽检内容质量,高风险场景必须人工审查。
安全测试要主动制造坏输入
至少测试:
- 文档中包含要求忽略系统规则的文字;
- 工具返回伪造的下一步指令;
- 参数包含路径穿越、超长文本和非法枚举;
- 用户要求读取他人数据或绕过审批;
- 模型请求未注册工具;
- 写操作在网络超时后被重复提交;
- 日志、报错和监控是否泄露密钥;
- 权限在任务暂停期间被撤销。
测试环境使用假账号和假数据,不用真实客户资料验证攻击路径。
成本预算要在运行前和运行中生效
一次任务的成本不只有模型 Token:
text
总成本 = 模型输入输出 + 检索与重排 + 工具服务
+ 存储与日志 + 重试 + 人工审核为任务设置硬限制:最大模型调用、工具调用、输入输出量、并发、总耗时和金额。达到软阈值时缩小检索或请求确认,达到硬阈值时安全结束。
成本日志关联到任务、用户、模型、工具和版本,才能找到异常增长原因。
可观测性围绕一次任务组织
核心指标包括:
- 任务成功、失败、取消和等待确认比例;
- 各状态与工具的延迟分布;
- 每任务的模型调用、工具调用和费用;
- 429、超时、权限拒绝和参数错误;
- 触发步骤上限、重复检测和预算上限的次数;
- 人工接管、修改和投诉比例。
使用贯穿模型和工具的任务 ID、步骤 ID 与调用 ID。监控面板只展示必要摘要,原始敏感输入单独受控。
分阶段上线
推荐顺序:
- 离线回放历史案例,不产生外部动作;
- 影子运行,与现有流程对比但不影响结果;
- 内部测试账号,只开放只读工具;
- 小比例真实流量,写操作仍需人工确认;
- 按指标逐步扩大,并保留快速停用开关。
每一阶段都写清进入条件、观察时间、停止条件和责任人。
回滚不是只换回旧代码
发布包应固定:代码版本、提示词版本、模型配置、工具定义、知识库索引版本和数据库迁移状态。回滚时考虑:
- 新版本是否已产生不能撤销的外部动作;
- 任务快照能否被旧版本读取;
- 新旧索引和缓存是否兼容;
- 正在等待确认的任务如何处理;
- 已轮换的凭据是否还能安全恢复。
当风险指标异常时,优先禁用高风险工具或切到只读模式,不必等待完整回滚。
上线门槛示例
text
质量:关键任务成功率达到目标,且无证据回答低于阈值
安全:越权和绕过确认测试必须 100% 阻断
稳定:长尾延迟、超时和错误率在目标范围
成本:每任务成本和每日总预算有硬限制
运维:监控、告警、停用开关和恢复手册已演练
合规:数据范围、保留、删除和审计经过确认指标应根据业务风险设定,不要复制别人的数字。
发布前演练
在隔离环境完成一次完整演练:
- 运行全部单元、合同、场景和安全测试;
- 模拟模型超时、工具 500、限流和数据库故障;
- 触发步骤与预算上限,确认任务安全结束;
- 模拟一次写入超时,验证幂等不会重复执行;
- 发布新版本,再回滚到前一版本;
- 撤销一个用户权限,恢复暂停任务并确认被阻断;
- 由不参与开发的人根据手册处理一次告警。
完成检查清单
- 评测集覆盖正常、缺信息、无证据、失败和攻击场景。
- 权限、确认、幂等和预算有确定性测试。
- 线上指标能按任务、版本、模型和工具定位问题。
- 发布分阶段进行,并有明确停止条件。
- 高风险工具有独立停用开关和只读降级模式。
- 回滚、权限撤销和故障恢复已经演练。
路线完成
现在你已经走完从 AI 基础、工具与知识库到 Agent 开发上线的完整路线。真正可靠的 Agent 不以“能调用多少工具”衡量,而以目标清楚、证据可查、权限受控、失败可恢复和结果可验收衡量。