跳到内容

18.3 评估、缓存与生产运行

AI 系统的输出具有随机性,模型、提示、检索索引和工具都在变化。没有可重复的评估集和生产结果观测,团队无法区分真实改进、样本波动和隐藏回归。

从任务和失败分类开始

每个评估任务包含输入、环境、成功标准和允许的操作。数据集应覆盖:

  • 高频正常请求;
  • 业务关键但低频的场景;
  • 边界、歧义、缺失信息和拒答;
  • 已发生的生产事故与用户反馈;
  • 权限越界、prompt injection 和危险工具调用;
  • 长流程中的恢复、取消和重复执行。

评估集要有独立维护集,避免团队针对公开用例过拟合。

先评价结果,再评价轨迹

Agent 最终说“退款完成”,不代表退款记录真的存在。优先检查环境中的结果:数据库状态、生成文件、单元测试、发送记录或账户余额。

然后评价轨迹:

  • 是否选择了合适工具;
  • 是否违反权限和顺序约束;
  • 是否产生多余或危险调用;
  • 是否在结果未知时正确暂停;
  • 是否满足步数、延迟和费用预算。

只匹配最终文本会漏掉“答案看似正确但执行错了”的问题。

组合不同 grader

优先级通常是:

  1. 确定性检查:schema、测试、状态查询、精确规则;
  2. 参考答案或结构化事实比较;
  3. 人工评分;
  4. 经人工校准的模型评分。

LLM judge 适合评价风格、覆盖度和部分开放质量,但需要清楚 rubric、盲化候选顺序、定期与人工一致性校准。不要让同一模糊提示同时生成答案和证明自己正确。

模型输出有方差,关键任务应运行多个 trial,并报告通过率和置信区间,而不是只挑一次最好结果。

回归评估与在线观测互补

离线评估用于比较候选版本,在线观测用于发现真实分布和环境问题。生产至少记录:

  • 模型、提示、工具和索引版本;
  • 总延迟、首 token 延迟、token 与费用;
  • 工具调用、错误、审批、循环步数和停止原因;
  • 检索来源、引用和权限过滤结果;
  • 最终业务结果、用户纠正和升级人工比例。

日志需要脱敏和保留期限。完整 prompt、检索片段和工具结果可能包含个人信息与密钥。

区分四类缓存

缓存复用什么主要风险
Prompt / prefix cache相同前缀的模型计算供应商语义、命中不可控
精确响应缓存完全相同请求的结果模型/数据版本和随机性
语义响应缓存相似请求的结果相似不等于同权限、同意图
检索缓存查询对应的候选片段索引更新、删除和 ACL 变化

语义缓存不能只用向量距离决定复用。租户、用户权限、语言、时间范围、模型/提示版本、知识版本和工具可用性都可能进入缓存键或校验条件。

“上下文缓存”是计算优化,不是长期记忆;“语义响应缓存”也不等同于 Cache-Augmented Generation。术语必须对应真实机制,才能正确讨论一致性与失效。

缓存只服务于可接受的新鲜度

先定义数据新鲜度和错误复用成本:

  • 静态产品说明可以缓存较久;
  • 库存、价格和权限需要短 TTL 或不缓存;
  • 医疗、法律、财务等高风险回答不应仅因语义相似直接复用;
  • 源文档删除或权限变化应能主动失效相关缓存。

缓存命中也要进入评估和观测。否则成本下降可能掩盖陈旧答案上升。

发布门禁

一次模型、提示、工具或索引变更应经过:

text
离线回归 → 安全评估 → 影子流量 → 小比例发布 → 在线指标 → 扩大或回退

回退必须包含模型/提示版本、工具 schema、索引和缓存,而不只是应用镜像。

参考资料

Built with VitePress | Software Systems Atlas