AI 基建
0%
第十一部分 · 实践与运营 · 第 87 章

评测与可观测性

作者Changkun Ou
阅读时长约 12 分钟

一个在公开榜单上排名靠前的模型,落到自己的产品里仍然可能表现糟糕。基准测试衡量的是固定数据集上的通用能力,而实际应用跑的是一条特定的提示词,叠加自有的检索上下文,运行在一个智能体循环里,面对的是逐周漂移的真实用户输入。弥合这个差距的学科有两半,到 2026 年年中,它们已基本融合为同一个工具品类。实践问题在于,如何选择并接好这套工具,同时不把公开基准上的质量误认为产品里的行为。

2026-06-21T23:29:49.327790 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/ 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 观测埋点深度 0.2 0.4 0.6 0.8 问题发现能力 离线评测 线上遥测
图 87.1. 埋点逐步深入时问题发现率如何变化的示意图。离线评测捕捉已知失败模式;线上遥测改变那些只在生产出现的失败的发现斜率。理想化曲线,非实测。

在技术栈中,这一层承接第七部分定义的测量理论。第 47 章 抽象地衡量模型,第 48 章 判断一个差距是否站得住,第 49 章 定义人的标签,第 50 章 讲模型评判者,第 51 章 讲有据性,第 52 章 讲多步轨迹,第 53 章 则把这一切变成发布闸门。这里衡量的是正在运行的系统。它消费服务层(第 82 章)和模型网关(gateway)第 88 章),并产出反馈信号回流给智能体(第 85 章)与微调(第 84 章):评测数据集会变成偏好数据,而智能体轨迹正是故障真正浮出水面的地方。

截至 2026 年年中

这是一份带日期的快照(2026 年 6 月)。在这个品类里,价格、版本号、收购与「最适合」的论断变动很快,而 2026 年又是整合密集的一年。请把下文每一个具体金额与排名都视为带出处的指示性参考,而非永恒事实,在长期投入前重新核实当前数值与路线图。优先抓住耐久的部分:品类、权衡,以及接线方式。

循环的两半

**评测(Evaluation)**问的是「输出好不好?」,对照自己定义的标准。它既离线运行(在精挑细选的数据集上、在 CI 里、上线之前),也在线运行(从生产流量中采样、持续打分)。工作的基本单位是一个分数。分数有三类,通常混着用:

  • 确定性断言:正则、JSON-schema 校验、精确匹配、延迟或成本预算。便宜、快,是第一层检查。
  • 基于参考的指标:BLEU、ROUGE,以及它们在检索领域的近亲,如上下文精确率、上下文召回率、忠实度。
  • LLM 作为裁判:用第二个模型按评分细则给第一个模型打分。这是大规模为开放式质量打分的可扩展办法,第 50 章 的主体内容讲的正是如何做这件事而不至于自欺。

可观测性(observability)问的是「到底发生了什么?」它捕获一条轨迹(trace):一个请求在系统中流动时的完整树形结构,每一次 LLM 调用、检索、工具调用、嵌套的智能体步骤,每个 span 上都挂着输入、输出、计时、token 计数与成本。没有它,就只能靠读扁平日志来调试一个非确定性的分布式系统。

这两半之所以相连,是因为评测的对象,正是所观测到的那条轨迹。一条生产轨迹会变成一个测试用例。一个裁判在采样的 span 上运行,产出在线分数。仪表盘里抓到的一次回归,会变成离线套件里的一个固定用例。这个循环先观测、再打分、再筛选、再重测,正是「持续评测一个 LLM 应用」的实践内核,本章后续围绕它展开(图 87.2)。

user 用户 / CI 流量 app LLM 应用 智能体 + 检索 user->app obs 可观测性 Langfuse / Phoenix app->obs OTel GenAI spans gw 模型网关 app->gw 模型调用 eval 评测 / 裁判 Promptfoo / DeepEval obs->eval 采样轨迹 providers 提供商 / vLLM gw->providers gw->eval 裁判调用 受限虚拟密钥 gate 仪表盘 / CI 关卡 eval->gate 分数 ds 离线数据集 回归套件 eval->ds 提升失败轨迹 ds->app 为下次发布把关
图 87.2. 持续评测循环。观测生产轨迹,由裁判与断言为采样的 span 打分,将故障筛选进回归数据集,该数据集再为下一次发布把关。每个组件都调用模型网关,而非直连提供商。

2026 年的洗牌

2026 年年初的两起收购重塑了格局,也指明了大方向:独立的评测/可观测性工具,正在变成更大的数据或模型平台里的一个功能。

  • OpenAI 收购了 Promptfoo(2026 年 3 月 9 日宣布),并弃用自家托管的 Evals 产品(2026 年 10 月 31 日转为只读,11 月 30 日关停),引导用户转向 Promptfoo 与 Datasets。开源的 openai/evals 仓库保留,托管仪表盘则不再保留。
  • ClickHouse 收购了 Langfuse(2026 年 1 月 16 日,与 ClickHouse 4 亿美元 D 轮同步)。Langfuse 表示其开源与自托管承诺继续有效。

看谁归谁所有,并不是重点。这种动荡是真实的,所以要偏好那些数据与埋点都能带走的工具。下文 OpenTelemetry 就是这样的选择。

主要玩家

下表所有许可证、定价与收购方面的论断都截至 2026 年年中,出处见延伸阅读。定价是撰写时已公布的清单形态,变动频繁,所以请把确切金额视为指示性参考。裁判准确度与「最适合」的论断取决于具体工作负载,本处未做独立基准测试。

评测框架与套件

名称 是什么 许可 / 模式 最适合
lm-evaluation-harness(EleutherAI) 常见学术套件:60+ 标准基准、数百个子任务、可复现配置,许多榜单的后端 开源(MIT) 可复现地基准测试一个模型的原始能力
Inspect(UK AISI) 面向模型与智能体评测的框架:工具调用、多轮、模型评分;inspect_evals 内置 200+ 现成评测 开源(MIT) 安全与智能体评测、沙箱化工具调用任务
Promptfoo CLI + 配置驱动的评测与红队:断言、LLM 作为裁判、模型对比、RAG/智能体测试、50+ 漏洞类别 开源(MIT)+ 付费企业版;被 OpenAI 收购(2026 年 3 月) 无需 notebook 就能塞进 CI 的应用级评测与安全红队
DeepEval(Confident AI) pytest 原生的评测框架:50+ 指标(LLM 作为裁判、RAG、智能体、安全)、G-Eval(按评分细则驱动的打分)、DAG 指标(把检查组织成一张依赖图) 开源 + Confident AI 云 想要单元测试式 LLM 输出回归的团队
RAGAS 无参考的 RAG 指标:忠实度、答案相关性、上下文精确率/召回率 开源 快速为 RAG 流水线打分,常通过其他框架使用
MLflow 3 Evaluate MLflow 平台内的生成式评测 + 追踪 开源 已统一到 MLflow / Databricks 的 MLOps 团队

追踪与可观测性平台

名称 是什么 许可 / 模式 最适合
Langfuse 开源 LLM 工程平台:追踪、提示词管理、评测、数据集 MIT,可自托管;云端 Hobby 免费 / Core $29 / Pro $199 / 企业版 $2,499 每月,按 unit 计费 想要完全可自托管的开源可观测性 + 评测栈的团队
Opik(Comet) 开源追踪 + 评测平台:调用链、LLM 裁判指标、数据集、看板 Apache-2.0,可自托管;Comet 云 Langfuse 与 Phoenix 之外另一个独立、可自托管的开源选项
LangSmith(LangChain) 与框架无关的可观测性 + 评测 + 提示词平台;智能体运维 专有 SaaS;Developer 免费 / Plus $39/席位/月 / 企业版定制 处于 LangChain/LangGraph 生态内外、想要打磨完善的托管平台的团队
Arize Phoenix 构建在 OpenTelemetry 之上的开源可观测性 + 评测,经由 OpenInference 埋点 开源(ELv2 类);Arize AX 为商业云 想要 OTel 原生、厂商中立、本地零账号即可运行的追踪的团队
Braintrust 评测优先的商业平台:实验、打分、追踪、提示词 playground 专有 SaaS;Starter 免费 / Pro $249/月 / 企业版定制 想要评测、追踪与提示词 playground 紧密整合的产品团队
W&B Weave(Weights & Biases) W&B 生态内的 LLM 追踪、评测、提示词/版本跟踪 专有 SaaS 已在用 W&B 做实验跟踪的团队
Confident AI DeepEval 背后的云平台:数据集、追踪、监控 专有 SaaS 想要托管协作层的 DeepEval 用户

底层基座

名称 是什么 许可 / 模式 最适合
OpenTelemetry GenAI 语义约定 面向 LLM/智能体 span 与指标的厂商中立规范(gen_ai.* 属性),隶属 CNCF OTel 开放标准(Apache 2.0) 不必重新埋点就能切换后端的线缆格式
OpenInference(Arize) OTel 对齐的约定 + 跨提供商、智能体框架、RAG 库的即插即用自动埋点 开源 在规范稳定之前,今天就能用的实用自动埋点

截至 2026 年年中,OTel GenAI 规范在很大程度上仍是实验性的(「Development」稳定级别),不过核心属性(gen_ai.systemgen_ai.request.model、token 计数)正在趋稳。可以用 OTEL_SEMCONV_STABILITY_OPT_IN 选用最新版本。OpenInference 跑在规范之前,并能向任意 OTel 后端(Datadog、Grafana、Jaeger)输出,这正是它当下成为实用之选的原因。

如何选择

第一刀切在能力评测应用评测之间,因为它们是由不同工具完成的不同任务。

下层约束

服务层决定了评测套件的形态。因为评测与裁判都指向模型网关第 88 章)而非直连提供商,两个模型之间的 A/B 就成了一条路由规则而非一次代码改动,裁判凭据也成了自带预算的受限虚拟密钥而非裸的提供商密钥。在 第 82 章 选定的网关,正是让持续在线评测运维起来很便宜的原因。

当衡量的是一个模型时,选能力套件:对比检查点、验证微调(第 84 章),或复现一个榜单数字。任务偏智能体、用工具、带安全色彩时用 Inspect,经典学术基准用 lm-evaluation-harness

当衡量的是自己的系统时,选应用评测工具:这条提示词、这条 RAG 流水线、这个智能体,对照对产品要紧的标准。在应用评测内部,有四条轴决定选型:

选这个 何时
CI 原生 vs 平台原生 Promptfoo(配置/CLI)或 DeepEval(pytest) 评测必须住在仓库里、零外部账号就能为合并把关
BraintrustLangSmith 想要托管 UI 让非工程师可视化地筛选数据集、对比运行
自托管 vs 托管 LangfusePhoenix 数据驻留、成本管控或厂商中立要紧,且有能力运维基础设施
LangSmithBraintrustConfident AI 宁愿不自己运维,愿为打磨付费
OTel 原生 vs 专有 SDK Phoenix / OpenInference 想要一套能瞄准多后端、避免锁定的埋点
LangSmithBraintrust 开箱更顺滑,代价是把代码耦合到单一厂商
红队是否在范围内? Promptfoo 需要最深的内置对抗扫描(OWASP LLM Top 10、越狱、PII、提示注入)

LLM 作为裁判:成本对信任

裁判大约比人工评审便宜 500 到 5000 倍,且能逼近人与人之间的一致度,但只有在校准过之后。一个没校准过的裁判,会信心十足地打分,也同样信心十足地出错,外部却很难看出来。截至 2026 年年中,第 50 章 深入展开的共识做法是:

  • **对照人工标注样本验证。**报告 Cohen's kappa(即对偶然一致做过校正后的一致度),先达到 0.80.8 左右,再信任裁判去为任何东西把关。
  • **控制位置偏差。**同时对 A/B 与 B/A 两种顺序打分,只统计一致的胜出。
  • **控制冗长偏差与自偏好偏差。**永远不要把同一个模型家族同时用作生成者和裁判。
  • 使用显式的、按标准分离的评分细则(G-Eval 风格)。把硬规则拆成一个检查的 DAG,而非一条含糊的提示词。

改变人类标注里「好」的基率,看着原始一致度居高不下、而 Cohen's kappa 却塌掉,这正是为什么「裁判 90% 的时候都同意」几乎什么也证明不了。

import numpy as np

# 一个几乎总是说「好」的偷懒裁判,对照人工标注来评分。
# 原始一致度看着很漂亮,但 Cohen's kappa 校正了偶然因素后就塌掉了。
def kappa(m):
    m = np.array(m, float); n = m.sum()
    po = np.trace(m) / n                       # 原始一致度
    pe = (m.sum(0) * m.sum(1)).sum() / n**2    # 偶然预期下的一致度
    return po, (po - pe) / (1 - pe)

n = 1000
for good_rate in [0.70, 0.80, 0.90, 0.95]:
    good = int(n * good_rate); bad = n - good
    caught = int(bad * 0.20)                    # 裁判只标出 20% 的坏答案
    miss = int(good * 0.02)                     # 并错误地标出 2% 的好答案
    cm = [[caught, miss], [bad - caught, good - miss]]
    po, k = kappa(cm)
    verdict = "trust" if k >= 0.8 else "do NOT trust"
    print(f"human good={good_rate:.0%}  agreement={po:.2f}  kappa={k:.2f}  -> {verdict}")
图 87.3. 两个裁判给同一批条目打分,准确率保持固定。把基率拖向几乎全是「好」,会出现原始一致度居高不下、而 Cohen's κ 却塌掉的情形,因为当几乎一切都是「好」时,一致大多来自偶然。这正是为什么一个九成时候都同意的裁判,仍可能几乎什么都没说明。示意性。

一个合理的默认选择

对一个典型团队,正在交付一两个 LLM 功能、想要一个持续评测循环而又无需组建平台团队,这套默认栈开源优先、可自托管、OTel 原生、由 CI 把关,且日后升级到托管平台有一条干净的路径。

任务 默认之选 托管替代
可观测性 / 追踪 Langfuse(自托管或免费/Core 云) LangSmith(Plus)或 Braintrust
CI 中的应用评测 Promptfoo(断言、对比、红队)+ DeepEval(pytest 指标) Braintrust / LangSmith 评测模块
模型 / 能力评测 Inspect(智能体、安全)或 lm-evaluation-harness(学术) 托管榜单
埋点 OpenTelemetry GenAIOpenInference 自动埋点 专有 SDK

选择这套默认时有两点提醒。其一是动荡:Promptfoo 现归 OpenAI,Langfuse 现归 ClickHouse,长期投入前请重新确认路线图与许可证。其二是别加用不上的厂商。已统一到 Databricks 的团队应优先 MLflow 3 Evaluate,在 Weights & Biases 上的团队应优先 Weave,而不是再栓上一个新平台。

接线

循环经由模型网关(第 88 章)闭合:被测应用、评测与裁判都调用网关,绝不直连提供商。

一份最小的 Promptfoo 配置如下,指向网关,并在 LLM 裁判前面放了一个确定性守卫。把它存为 promptfooconfig.yaml,运行 npx promptfoo@latest eval

# promptfooconfig.yaml
providers:
  - id: openai:chat:gpt-5            # resolved by the gateway, not OpenAI directly
    config:
      apiBaseUrl: https://gateway.internal/v1
      apiKey: ${GATEWAY_VKEY}        # scoped virtual key, budget-capped
prompts:
  - "Answer using only the context:\n{{context}}\n\nQ: {{question}}"
tests:
  - vars: { question: "...", context: "..." }
    assert:
      - type: is-json                # deterministic guard, runs first and free
      - type: llm-rubric             # LLM-as-judge, calibrated rubric
        value: "Answer is faithful to the context and cites it."
        provider: openai:chat:gpt-5-mini   # judge via gateway, different family

要为合并把关,在 CI 里跑这一条命令,遇到回归就让任务失败:

# CI step: fail the build if any eval assertion regresses
npx promptfoo@latest eval -c promptfooconfig.yaml --no-cache --output results.json
# exit code is non-zero when assertions fail, which fails the pipeline

整个系统的心跳是提升步骤。一条来自 Langfuse 或 Phoenix、未通过在线裁判的生产轨迹,会被提升进上面的 tests: 集合,于是离线套件针对的是生产里真正看到的故障,而非设计时凭空想象的故障。没有这个提升步骤,手里就是两件互不相干的工具;有了它,才成为一个循环。

生产评测循环

这套循环只有在同时改变三条运维轴时才真正划算。可观测性把非确定性行为变成可调试的东西,从而提升能力;评测把「感觉更好」变成一道发布闸门。网关让在线裁判便宜到可以持续运行,而确定性断言在裁判调用发生之前就拦下成本低、也更该提前发现的故障。信任则落在校准与可携带性上:一个 LLM 裁判可信到何种程度,取决于它对照人类的校准,而 OTel 基座的作用,正是让轨迹与分数能从任何变更条款的厂商那里带走。只有这三者都成立,这套循环才值得搭建;而在 2026 年年中,工具终于成熟到让它们能够成立。

争议所在

不稳定的选择,是判断应自动化到什么程度。LLM 裁判让持续评测变得可行,也会带入模型偏差、漂移、提示敏感性和供应商依赖。人工审查仍然需要用来校准,却太慢、太贵,不可能压在每个请求上。实践答案应当分层:先用确定性检查,再用经过校准的模型裁判,再抽样人工复核,并在发布闸门里记录到底是哪一层支撑了这个决定。

延伸阅读

  • EleutherAI, “lm-evaluation-harness,” n.d.. github.com
    LM Evaluation Harness 是 EleutherAI 开源的标准化少样本评测框架,支持对大语言模型进行跨多基准测试的统一评测。
  • UK AI Safety Institute, “Inspect AI,” n.d.. inspect.aisi.org.uk
    Inspect 是 AISI 发布的开源框架,用于设计和运行大语言模型(LLM)评测任务。
  • UK AI Safety Institute, “Inspect evals suite,” n.d.. ukgovernmentbeis.github.io
    Inspect Evals 是面向 Inspect AI 框架的社区贡献大语言模型评测任务注册表,收录 140 项评测,由 UK AISI、Arcadia Impact 与 Vector Institute 联合维护。
  • Promptfoo, “Promptfoo documentation,” n.d.. promptfoo.dev
    Promptfoo 是一个开源 CLI 与库,通过自动化测试用例、基准评测和漏洞扫描对大语言模型应用进行评估与红队测试,支持 50 余个模型提供商。
  • Promptfoo, “Promptfoo red-teaming,” n.d.. promptfoo.dev
    Promptfoo 是一个开源 LLM 红队工具,通过系统性生成对抗输入,在部署前检测策略违规、提示注入、越狱及信息泄露等漏洞。
  • Promptfoo, “Promptfoo blog: OpenAI acquisition” (OpenAI 收购(2026 年 3 月 9 日)), 2026. promptfoo.dev
    Promptfoo(开源大语言模型评测与红队工具)宣布被 OpenAI 收购,开源项目将继续维护。
  • OpenAI, “OpenAI Evals OSS repo,” n.d.. github.com
    OpenAI Evals 是一个用于评测大语言模型(LLM)及其系统的开源框架,并提供基准测试的开放注册表。
  • OpenAI, “Hosted Evals deprecation timeline,” n.d.. developers.openai.com
    OpenAI API 废弃声明页面列出了计划下线的模型(如 gpt-5-2025-08-07、o3-2025-04-16)的推荐替代版本,以及 Evals 平台的关停时间表。
  • Confident AI, “DeepEval,” n.d.. deepeval.com
    DeepEval 是一个开源的大语言模型(LLM)评测框架,支持对 LLM 输出进行单元测试、端到端评测、合成数据集生成,以及通过 Python 集成到 CI/CD 流程中。
  • Confident AI, “Confident AI,” n.d.. confident-ai.com
    Confident AI 是基于开源 DeepEval 框架构建的云平台,提供大语言模型(LLM)评测、可观测性与 AI 质量治理功能。
  • Confident AI, “RAGAS” (经 DeepEval), n.d.. deepeval.com
    DeepEval 的 RAGAS 指标对四项子指标(答案相关性、忠实度、上下文精确率、上下文召回率)取平均值,对检索增强生成(RAG)流水线的生成器和检索器进行整体评分。
  • MLflow, “MLflow GenAI eval,” n.d.. mlflow.org
    MLflow 经典机器学习评测文档介绍 mlflow.models.evaluate() API,提供分类和回归模型的自动化指标、可视化及自定义评分器。
  • Langfuse, “Langfuse,” n.d.. langfuse.com
    Langfuse 是面向大语言模型应用的开源可观测性与追踪平台,提供追踪捕获、延迟监控、成本跟踪与问题调试功能。
  • Langfuse, “Langfuse pricing,” n.d.. langfuse.com
    Langfuse 定价页面介绍其开源大语言模型可观测性平台(涵盖追踪、提示词管理、评估与指标)的分级套餐(Hobby、Core、Pro、Enterprise)。
  • ClickHouse, “ClickHouse acquires Langfuse” (ClickHouse 收购(2026 年 1 月 16 日)), 2026. clickhouse.com
    ClickHouse 收购了开源大语言模型可观测性平台 Langfuse,将其 LLM 可观测性、评测与提示词管理能力与 ClickHouse 的分析数据库结合,以支持生产级 AI 质量监控。
  • Comet, “Opik” (Apache-2.0 的追踪 + 评测平台;可自托管), n.d.. github.com
  • LangChain, “LangSmith,” n.d.. langchain.com
    LangSmith 是一个面向 LLM 应用与智能体的商业可观测性平台,提供追踪、实时监控、故障调试以及成本和延迟跟踪。
  • LangChain, “LangChain pricing,” n.d.. langchain.com
    LangSmith 定价页面列出了 LangChain 大语言模型可观测性与评测平台的订阅套餐,涵盖从个人开发者到企业用户的各级方案。
  • Arize, “Arize Phoenix,” n.d.. arize.com
    Arize Phoenix 是基于 OpenTelemetry 构建的开源 AI 可观测性与评测平台,为大语言模型(LLM)应用提供链路追踪、基于 LLM 的评测、提示词管理和实验跟踪功能。
  • Braintrust, “Braintrust,” n.d.. braintrust.dev
    Braintrust 是一个 AI 可观测性平台,用于追踪生产环境中的大语言模型(LLM)应用、运行评测(evals)并在问题触达用户前捕获回归。
  • Braintrust, “Braintrust pricing,” n.d.. braintrust.dev
  • Weights & Biases, “W&B Weave,” n.d.. wandb.ai
    W&B Weave 是面向生产智能体的可观测性平台,将多轮、多智能体系统的行为组织为会话与轮次追踪,并提供评测与监控工具以提升可靠性。
  • OpenTelemetry, “OpenTelemetry GenAI semantic conventions,” n.d.. github.com
    OpenTelemetry 官方生成式 AI 语义约定,定义了用于追踪大语言模型调用的标准化 span 属性,涵盖模型名称、词元用量及请求元数据。
  • OpenTelemetry, “GenAI observability overview,” 2026. opentelemetry.io
    OpenTelemetry 生成式 AI 语义约定规范了 LLM 操作的记录方式,涵盖模型名称、词元计数、提示词、补全内容及工具调用。
  • Confident AI, “LLM-as-a-judge” (LLM 作为裁判的实践(2026)), 2026. deepeval.com
    DeepEval 2026 指南介绍了模型作为评判者(LLM-as-a-Judge)的评测技术,包括 G-Eval、DAG 指标和 QAG 风格指标,用于对大语言模型输出进行评分、分类或成对比较。
  • Confident AI, “Why LLM-as-a-judge is the best LLM evaluation method,” 2026. confident-ai.com
    Confident AI 的模型作为评判者(model-as-judge)指南,介绍单输出与成对比较评分、G-Eval、基于 DAG 的评测框架及提示技巧,用于可扩展的大语言模型(LLM)评测。

评论

登录后评论