运维 / 评估与可观测性
评估与可观测性
度量没有唯一正确答案的智能体——结果与轨迹评测、LLM 作裁判、追踪与基准。
- 为什么评估智能体很难非确定性、多步复合误差、没有唯一标准答案、路径依赖、评估成本与数据集腐烂——单个干净数字是谎言的六个原因。
- 在线评测与离线评测离线评测在发布前抓住回归;在线评测抓住你伪造不出来的用户行为——为何你两者都需要,以及它们各自会在哪里骗你。
- 结果评估 vs 轨迹评估终态谓词与给决策序列打分:各自何时为正解、部分给分,以及作为最高杠杆安全检查的工具调用断言。
- 用 LLM 作为智能体评判者评分量表设计、成对 vs 单点、能颠倒裁决的偏差、针对人类标注校准,以及那些绝不该用评判者的情形。
- 批判地阅读智能体基准SWE-bench、GAIA、τ-bench、WebArena 实际测量什么,污染与框架敏感性为何让名次成为弱信号,以及真正做决定的小型自定义集。
- 智能体的追踪与可观测性轨迹是数据结构而非日志:每步记录什么、span 与 OpenTelemetry GenAI 约定,以及作为通往评估之桥的轨迹回放。
- 评估驱动的智能体开发评估是智能体唯一的规格:分层 CI 关卡、黄金轨迹、离线 vs 在线、生产到评估的飞轮,以及无回归棘轮。
- OpenTelemetry GenAI 语义约定埋点是数据模型决定,不是看板决定:agent/workflow/tool/model 四类 span、为何 Development 状态是钉版本而非等待的理由、在 collector 处把结构性遥测与提示词内容分流,以及那一跳让此后每个厂商选择都可逆的 collector。
- 质量回归检测生产环境没有标签,而一个靠评判的指标要看清五个百分点的下滑需要约 1,400 次打分运行;因此探测器是运行的形状——撞上限比例、按工具报错、终止构成——评判只是确认环节。
- 生产反馈信号点赞点踩来自不足百分之一的会话,且奖励自信甚于正确;而"智能体输出"与"用户最终交付物"之间的差异,是一份稠密、免费、由领域专家写下的标签——把每个反馈信号当作通往评测集的路由器,而不是要优化的指标。
- 标注运营裁判的准确率不可能高过校准它的那批标签,所以如果你的两位专家在 72% 的轨迹上一致,一个 72% 的裁判早已触顶——先量标注员间一致率,把一致率低读作评分标准的缺陷,并把分歧路由去裁决而不是平均掉。
- 轨迹采样与保留在运行开始时抽 10%,你就只留下了 10% 的失败,而第零步没有任何东西能预测哪次运行会出问题——所以缓冲到运行结束,把每一次失败、撞上限与超贵的运行整条留下,把成功狠狠砍掉,并把保留期当作一个关于"你还没建起来的那个评测集"的决定。
- 智能体评估中的模拟用户每一个多轮智能体分数量的都是两套系统,而第二套是一个没有版本、扮演客户的模型,它单凭自己就能把你的数字挪动好几个点——把它的模型 ID、提示词与随机种子像依赖一样钉住、拿真实对话记录去校准它、绝不让它来评判自己满不满意,并给评分者一个显式的"模拟器故障"裁定项。
- 度量智能体延迟一条十五步的轨迹会把"百分之一的慢调用"变成"七分之一的慢任务",所以单步的 p99 比它的 p50 更能预测用户体验——请度量轨迹而不是调用、把模型时间、工具时间与排队时间拆开,并把"到首个有用输出的时间"与"到做完的时间"分开来看。
- 维护一套评测集评测集是被拟合掉的,不是放烂的:你每修好一个回归,就把一条有区分力的用例变成一次永久通过——所以要量"所有候选都已通过"的用例占比,按"改变过多少次别人的主意"给用例打分,并用一个常设的更换速率取代周期性大扫除。
- 智能体的线上实验要看清任务成功率三个百分点的提升,在算上智能体特有的因素之前,每组就已经需要约 3,700 次会话,而按用户聚类通常还要再乘三——所以按用户而不是按请求随机分组,事先锁定唯一一个按方差挑选出来的决策指标;当算术告诉你这个实验做不起时,就改跑一次带护栏的灰度发布,并如实这样标注它。
- 失败分类法与分诊「幻觉」命名的是一条级联链末端的烟,还会把工单派给错的团队——改为标注「称职操作者本会做出不同动作」的最早那一步,用一百条读过的轨迹自下而上长出类别,再按均匀随机样本中的发生率加权回来,并给每个类别配上归属人、回归用例与检测器。
- 从智能体追踪里脱敏 PII内容采集默认关闭是有原因的:在 SDK 里、在 span 离开进程之前脱敏;输出确定性的带类型令牌而非遮罩,好让关联与删除仍然可行;把按实体类型的召回率做成 CI 闸门;并把破玻璃原始层的 TTL 定在实测 MTTD 之上。
- 评估护栏与检测器均衡基准上的召回率正是那个无法迁移的数字:在万分之一的攻击基础发生率下,99% 召回、1% 误报的检测器精确率不到 1%,所以要用盲标的均匀样本测出你自己的发生率、用两类错误的代价比推出阈值、把冻结回归集与轮换的红队集分开,并记录它给 p95 加了多少、以及它超时时会发生什么。
- 影子模式与暗发布影子里的智能体从不必为自己的错误买单,于是错误不复利,观测到的逐任务成功率会漂向逐步成功率——那是一个上界,而且恰恰在你最想要定心丸的长运行上偏得最狠。写下哪些效果被压制、被允许的那些代价几何,镜像一份采样而非全量流量,只对分歧做三桶盲裁,并按运行之前就写死的阈值晋级。
- 用录制轨迹做回放测试评测量的是模型,单元测试量的是代码;谁都不会注意到一次重构把认证挪到了第四步。回放能便宜地抓住这一类,但录制把世界钉死了,所以一旦出现第一个不同的动作,它此后什么都证明不了——于是「未命中怎么办」这条策略就是全部设计。把它拆成两层:合并前跑钉死轨迹,只断言工具序列与步数;每晚跑带状态的契约夹具,按结果打分。给每份录制盖上时间戳并让它过期,因为一个全绿、却在回放一个已不复存在的世界的套件,正是第三方漂移抵达生产环境的路径。
- 智能体轨迹里的截图与 DOM 产物放上生产的第一个浏览器智能体,会把你的轨迹存储变成一座图像档案馆,而你建的每项控制都假定内容是文本:一个在提示词上有 99% 召回率的脱敏器,在一张 PNG 上是零;而一帧画面同时是模型的输入、你唯一的审计证据,以及一条没人扫描的注入通道。把无障碍树作为文本正本来采集,在像素被编码之前就在页面内遮罩,只在写操作前那一步和失败的最后一步保留全分辨率画面帧,并给大块二进制自己的存储和自己的时钟。
- 生产环境中的拒答监控一次拒答返回 200、花更少令牌、也不触发任何错误,于是一次质量回退表现为一场降本胜利——而在循环里,它是一个从「报告成功」的运行里悄悄消失的步骤:请把四种成因分类、冻结一套金丝雀集,并对变化量而不是绝对水平告警。
- 范围合规评测你的套件回答的是任务有没有做完,对智能体一路上还碰了什么没有任何意见——而这恰是某家前沿实验室用来设放行闸的那根轴。请改变三件你目前不加评审就上线的东西:范围条款、智能体去问一个人而那边没人时你的 harness 返回什么,以及被许可的那条路是否走得通;然后对着一份申报过的目标台账,一阶段一阶段地数「针对无人点名目标的动作」。那次公开跑这张网格的运行,仅凭一句话就把完整越界攻击从 50 条轨迹中的 26 条挪到 49 条中的 4 条,并发现困难案例里有 44% 把自家 harness 的填充式回复当成了授权。请把脚手架随数字一起公布,并且既报改善也报残差。