LLM 可观测性与评估看板


文档摘要

LLM 可观测性与评估看板 本节摘要:Langfuse 转向开源核心,Arize Phoenix 发布了 2026 GenAI 语义约定映射,Helicone 与 Braintrust 都押注每用户成本归因,Traceloop 的 OpenLLMetry 成了事实上的 SDK 插桩。生产形态是:ClickHouse 存轨迹、Postgres 存元数据、Next.js 做 UI,再加一小队评估作业(DeepEval、RAGAS、LLM-judge)跑在采样轨迹上。本节要求你自建一个,从至少四个 SDK 家族摄取,并在 5 分钟内抓住一个注入的回归。你会学到 OTLP 摄取、尾采样(tail sampling)、漂移检测(PSI/KL),以及把 LLM-judge 当作评估器。

LLM 可观测性与评估看板

本节摘要:Langfuse 转向开源核心,Arize Phoenix 发布了 2026 GenAI 语义约定映射,Helicone 与 Braintrust 都押注每用户成本归因,Traceloop 的 OpenLLMetry 成了事实上的 SDK 插桩。生产形态是:ClickHouse 存轨迹、Postgres 存元数据、Next.js 做 UI,再加一小队评估作业(DeepEval、RAGAS、LLM-judge)跑在采样轨迹上。本节要求你自建一个,从至少四个 SDK 家族摄取,并在 5 分钟内抓住一个注入的回归。你会学到 OTLP 摄取、尾采样(tail sampling)、漂移检测(PSI/KL),以及把 LLM-judge 当作评估器。

对应原课程:Phase 19 · Lesson 11 · llm-observability-dashboard(原英文 phases/19-capstone-projects/11-llm-observability-dashboard/docs/en.md)。

学习目标

阅读完本节,你应当能够:

  1. 用 OpenTelemetry SDK + GenAI 语义约定给 OpenAI/Anthropic/Google/LangChain/LlamaIndex/vLLM 六家插桩。
  2. 搭 OpenTelemetry Collector:OTLP HTTP 接收、尾采样(100% 错误 + 10% 成功)、导出到 ClickHouse 与 S3。
  3. 设计 ClickHouse spans 表(镜像 gen_ai.* 字段),Postgres 存元数据。
  4. 跑批评估作业(DeepEval 忠实度/毒性、RAGAS、自定义 LLM-judge),把 eval span 回链到父轨迹。
  5. 用 PSI/KL 在提示嵌入上做每周漂移检测,超阈值告警。
  6. 在注入回归(1% 概率泄漏假 SSN)上度量 MTTR,目标 < 5 分钟。

一、问题与直觉

2026 年每个跑生产流量的 AI 团队都在模型旁备着一个可观测性平面。成本归因、幻觉检测、漂移监控、越狱信号、SLO 仪表盘、PII 泄漏告警。开源参考——Langfuse、Phoenix、OpenLLMetry——都收敛到了 OpenTelemetry GenAI 语义约定作为摄取 schema。你现在可以用一个 SDK 给 OpenAI、Anthropic、Google、LangChain、LlamaIndex、vLLM 插桩,发出兼容的 span。

你要构建一个自建仪表盘,从至少四个 SDK 家族摄取,跑一小套评估作业,检测漂移,告警。度量线:给定一个故意注入的回归(一个开始产出 PII 的提示),仪表盘在 5 分钟内抓住它并告警。

二、从零实现

摄取是 OTLP HTTP。SDK 产出 GenAI-semconv span:gen_ai.systemgen_ai.request.modelgen_ai.usage.input_tokensgen_ai.response.idllm.promptsllm.completions。span 进 ClickHouse 做列式分析,元数据(用户、会话、应用)进 Postgres。

评估作为批作业跑在采样轨迹上。DeepEval 打忠实度、毒性、答案相关性。RAGAS 在轨迹带检索上下文时打检索指标。自定义 LLM-judge 跑领域检查(PII 泄漏、越策响应)。评估运行写回同一个 ClickHouse,作为回链到父轨迹的 eval span。

尾采样控成本(错的全留,成功的采样):

SAMPLING_POLICY = { "error_traces": 1.00, # 错误轨迹 100% 留 "success_traces": 0.10, # 成功轨迹 10% 采样 "toxic_gt_0.5": 1.00, # 毒性 > 0.5 全留(分层) }

漂移检测盯着嵌入空间分布随时间的变化(提示嵌入上的 PSI 或 KL 散度)加评估分趋势。告警喂 Prometheus Alertmanager,再到 Slack/PagerDuty。UI 是 Next.js 15 配 Recharts。

三、架构与技术栈

  • 摄取:OpenTelemetry SDK + GenAI 语义约定;OTLP HTTP 传输。
  • Collector:OpenTelemetry Collector 配尾采样处理器(控成本)。
  • 存储:ClickHouse 存 span,Postgres 存元数据,S3 存原始事件归档。
  • 评估:DeepEval、RAGAS 0.2、Arize Phoenix evaluator 包、自定义 LLM-judge。
  • 漂移:每周在池化提示嵌入(sentence-transformers)上算 PSI/KL。
  • 告警:Prometheus Alertmanager → Slack/PagerDuty。
  • UI:Next.js 15 App Router + Recharts + server actions。
  • 开箱支持:OpenAI、Anthropic、Google GenAI、LangChain、LlamaIndex、vLLM。

四、可复用产物

outputs/skill-llm-observability.md 是交付物。给定一个 LLM 应用,仪表盘摄取它的轨迹、跑评估、漂移告警,并在 Next.js 里展示每用户成本分解。评分量表:

权重 标准 度量方式
25 轨迹 schema 覆盖 产出规范 GenAI span 的 SDK 家族数(目标 6+)
20 评估正确性 DeepEval/RAGAS 分 vs 人工标注集
20 仪表盘 UX 注入回归的 MTTR(目标 < 5 分钟)
20 成本/规模 1k span/秒持续摄取无积压
15 告警 + 漂移检测 Prometheus/Alertmanager 链路端到端打通
100

一次典型摄取:

$ curl -X POST https://my-otel-collector/v1/traces -d @trace.json [collector] accepted 1 trace, 3 spans [clickhouse] inserted 3 spans (app=chat, user=u_42) [eval] DeepEval faithfulness 0.82, toxicity 0.03 [drift] weekly PSI 0.08 (below 0.2 threshold) [ui] live at https://obs.example.com

五、框架对比

Langfuse 是开源核心参考,UI 最完整;Arize Phoenix 漂移支持最强;OpenLLMetry(Traceloop)是自动插桩 SDK 家族的事实标准。本节的差异化在于「自建」:ClickHouse 做列式 span 存储(比 Postgres 在聚合查询上快一个量级),尾采样控成本,LLM-judge 做领域评估。尾采样的关键设计是「错的全留 + 成功采样 + 高毒性全留」三层——既控成本又不丢关键信号,练习会让你度量采样偏差。

六、练习

  1. 加 Haystack:给 Haystack 框架加自定义插桩,验证规范 span 落 ClickHouse 且 gen_ai.* 属性忠实。
  2. 换评估器:在同一批轨迹上把 DeepEval 换成 Phoenix evaluators,度量两个评估引擎的分数漂移。
  3. 细化漂移:把漂移检测器改成按 app-id 算 PSI 而非全局,展示每应用漂移轨迹。
  4. 用户影响页:加一个「用户影响」页——每用户成本与每用户失败率,配 sparkline。
  5. 尾采样策略:建一个保留毒性 > 0.5 的 100% + 其余 10% 分层采样的尾采样策略,度量引入的采样偏差。

本节要点回顾

  1. 形态收敛:ClickHouse span + Postgres 元数据 + Next.js UI + 评估作业,GenAI semconv 为摄取 schema。
  2. OTLP 摄取:一个 SDK 插桩六家(OpenAI/Anthropic/Google/LangChain/LlamaIndex/vLLM)。
  3. 尾采样控成本:错的全留、成功采样、高毒性全留三层。
  4. LLM-judge 当评估器:忠实度/毒性/PII,eval span 回链父轨迹。
  5. 漂移检测:提示嵌入上 PSI/KL,> 0.2 告警,每周跑。
  6. MTTR 是度量线:注入回归到 Slack 告警 < 5 分钟。

下一节,我们进入「视频理解流水线」——构建一个能按场景切片、检索、带时间戳作答的视频 QA 系统。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U