18.3 评估、缓存与生产运行
AI 系统的输出具有随机性,模型、提示、检索索引和工具都在变化。没有可重复的评估集和生产结果观测,团队无法区分真实改进、样本波动和隐藏回归。
从任务和失败分类开始
每个评估任务包含输入、环境、成功标准和允许的操作。数据集应覆盖:
- 高频正常请求;
- 业务关键但低频的场景;
- 边界、歧义、缺失信息和拒答;
- 已发生的生产事故与用户反馈;
- 权限越界、prompt injection 和危险工具调用;
- 长流程中的恢复、取消和重复执行。
保留不参与日常调参的评估集,并按任务类型分层报告,避免团队针对已知用例过拟合。每次 trial 都从隔离、可恢复的环境起点开始;上一次留下的退款记录、文件或缓存,可能让下一次看起来莫名其妙地聪明。
先评价结果,再评价轨迹
Agent 最终说“退款完成”,不代表退款记录真的存在。优先检查环境中的结果:数据库状态、生成文件、单元测试、发送记录或账户余额。
然后评价轨迹:
- 是否选择了合适工具;
- 是否违反权限和顺序约束;
- 是否产生多余或危险调用;
- 是否在结果未知时正确暂停;
- 是否满足步数、延迟和费用预算。
只匹配最终文本会漏掉“答案看似正确但执行错了”的问题。轨迹检查应约束必要的授权、依赖顺序和副作用,不必要求所有正确解法都走同一条工具路径。
组合不同 grader
优先级通常是:
- 确定性检查:schema、测试、状态查询、精确规则;
- 参考答案或结构化事实比较;
- 人工评分;
- 经人工校准的模型评分。
LLM judge 适合评价风格、覆盖度和部分开放质量,但需要清楚的 rubric、随机且盲化的候选展示、定期与人工一致性校准。不要让同一模糊提示同时生成答案和证明自己正确。
模型输出有方差,关键任务应运行多个 trial,并报告通过率、样本数和置信区间,而不是只挑一次最好结果。假设同一任务每次独立成功的概率为 90%,五次中至少成功一次的概率是 1 - 0.1^5 = 99.999%,五次全成功却只有 0.9^5 ≈ 59.0%。pass@5 与 pass^5 回答不同问题;相关试验或不同难度任务不能直接套用这个乘法。
回归评估与在线观测互补
离线评估用于比较候选版本,在线观测用于发现真实分布和环境问题。生产至少记录:
- 模型、提示、工具和索引版本;
- 总延迟、首 token 延迟、token 与费用;
- 工具调用、错误、审批、循环步数和停止原因;
- 检索来源、引用和权限过滤结果;
- 最终业务结果、用户纠正和升级人工比例。
日志需要脱敏和保留期限。完整 prompt、检索片段和工具结果可能包含个人信息与密钥。
区分四类缓存
| 缓存 | 复用什么 | 主要风险 |
|---|---|---|
| Prompt / prefix cache | 相同前缀的模型计算 | 供应商语义、命中不可控 |
| 精确响应缓存 | 完全相同请求的结果 | 模型/数据版本和随机性 |
| 语义响应缓存 | 相似请求的结果 | 相似不等于同权限、同意图 |
| 检索缓存 | 查询对应的候选片段 | 索引更新、删除和 ACL 变化 |
语义缓存不能只用向量距离决定复用。租户、用户权限、语言、时间范围、模型/提示版本、知识版本和工具可用性都可能进入缓存键或校验条件。
前缀缓存复用已计算的前缀状态,仍需处理新输入并生成答案,不会直接返回上一次完整响应;是否命中、保留多久和如何计费取决于供应商。响应缓存则跳过生成,直接复用应用保存的答案。两者的失效风险不同。
“上下文缓存”不是长期记忆。Cache-Augmented Generation 论文讨论把有限知识库预载到长上下文并复用计算缓存,以减少逐问检索;它也不等同于按语义相似度复用旧答案。知识超出上下文预算或频繁变化时,预载与重建成本仍要计算。
缓存只服务于可接受的新鲜度
先定义数据新鲜度和错误复用成本:
- 静态产品说明可以缓存较久;
- 库存和价格按新鲜度目标选择 TTL;权限需要符合撤销要求的重验,短 TTL 本身不是授权保证;
- 医疗、法律、财务等高风险回答不应仅因语义相似直接复用;
- 源文档删除或权限变化应能主动失效相关缓存。
例如管理员与普通成员都问“这个订单的退款进度”,文本完全一致,但可见字段可能不同。即使缓存键带有用户 ID,权限被撤销后仍需失效或重验;历史“退款成功”的缓存也不能替代当前操作状态查询。
缓存命中也要进入评估和观测。否则成本下降可能掩盖陈旧答案上升。
发布门禁
一次模型、提示、工具或索引变更应经过:
离线回归 → 安全评估 → 影子流量 → 小比例发布 → 在线指标 → 扩大或回退影子流量只能观察或写入隔离环境,不能再次发送真实邮件、退款或修改生产记录。用相同请求比较两套 Agent,不等于授权它们各执行一次。
回退需要协调模型/提示版本、工具 schema、索引和缓存,不能只切应用镜像。不要把已删除资料或已撤销权限随旧索引一并恢复;提供方已下线的模型版本也不能假设随时可用,需预先验证可用的替代方案。
参考资料
- OpenAI, Working with evals
- Chan et al., Cache-Augmented Generation
- Anthropic, Demystifying evals for AI agents
- OpenAI, Prompt caching