LLM 可观测性栈选型 本节摘要:2026 年的可观测市场裂成两类。开发平台(LangSmith、Langfuse、Comet Opik)把监控与评测、提示管理、会话回放打包在一起;网关/插桩工具(Helicone、SigNoz、OpenLLMetry、Phoenix)只专注遥测。Langfuse 是 MIT 核心加良好的开源平衡(云免费 5 万事件/月);Phoenix 在 Elastic License 2.
本节摘要:2026 年的可观测市场裂成两类。开发平台(LangSmith、Langfuse、Comet Opik)把监控与评测、提示管理、会话回放打包在一起;网关/插桩工具(Helicone、SigNoz、OpenLLMetry、Phoenix)只专注遥测。Langfuse 是 MIT 核心加良好的开源平衡(云免费 5 万事件/月);Phoenix 在 Elastic License 2.0 下原生 OpenTelemetry,擅长漂移/RAG 可视化,但不是持久生产后端;Arize AX 用零拷贝 Iceberg/Parquet 集成,宣称比单体可观测便宜 100 倍;LangSmith 在 LangChain/LangGraph 上领先,39 美元/用户/月,仅企业版可自托管;Helicone 是代理式,15~30 分钟搭建,10 万请求/月免费,但 Agent 多步追踪深度较弱。常见生产模式:网关(Helicone/Portkey)+ 评测平台(Phoenix/TruLens),用 OpenTelemetry 粘起来。
对应原课程:Phase 17 · Lesson 13 ·
13-llm-observability(原英文phases/17-infrastructure-and-production/13-llm-observability/docs/en.md)。
阅读完本节,你应当能够:
你上线了一个 LLM 特性。能用。但你对提示失败、工具循环、延迟回归、成本尖峰、提示缓存命中率毫无可见度。你搜「LLM observability」,得到八个工具,都声称在三个不同价位上解决同一个问题。
它们解决的不是同一个问题。 LangSmith 答「这次 LangGraph 运行为何失败?」;Phoenix 答「我的 RAG 管道漂移了吗?」;Helicone 答「哪个应用在烧 token?」;Langfuse 答「我能自托管整套吗?」——不同工具、不同受众。
选型涉及四条轴:技术栈(LangChain?裸 SDK?多厂商?)、许可容忍(只 MIT?Elastic 行?商业也行?)、预算(免费层?100 美元/月?1000 美元/月?)、自托管(必须?可有可无?绝不?)。
开发平台 把可观测与评测、提示管理、数据集版本化、会话回放打包。你能跑实验、看哪个提示奏效、对新提示做数据集回归。LangSmith、Langfuse、Comet Opik。
网关/遥测工具 给推理调用插桩——提示、响应、token、延迟、模型、成本。Helicone、SigNoz、OpenLLMetry、Phoenix。极简,可经 OpenTelemetry 与独立评测工具组合。
OPENAI_API_BASE 换成 Helicone 代理,15~30 分钟搭建。OpenTelemetry 在 2025 年末发布了 GenAI 语义约定(gen_ai.system、gen_ai.request.model、gen_ai.usage.input_tokens)。消费 OTel 的工具可互操作。正在涌现的生产模式:
在 Agent 框架内部插桩(比如加 LangSmith trace)会把你和那个框架耦合。在 HTTP/OpenAI-SDK 层插桩(经 OpenLLMetry 或你的网关)才是可移植的。
100 万请求/天以上,全 trace 留存比 LLM 调用本身还贵。按规则采样:100% 错误、100% 高成本、5% 成功。聚合永远留,原始只留长尾。
原课程 code/main.py 跨留存策略(100% 摄入、采样、采样 + 错误)模拟一个 100 万 trace 的日子,报告各策略下存储成本与丢失了什么。下面给最小可读的采样骨架。
def sample_traces(traces, error_keep=1.0, high_cost_keep=1.0, success_keep=0.05, high_cost_threshold=0.01): """按规则采样的最简策略。 traces: [{'is_error':bool, 'cost_usd':float, 'trace_id':...}, ...] 返回: (保留的 trace 数, 保留率, 丢失的错误数) """ import random kept, lost_errors = 0, 0 for t in traces: if t["is_error"]: keep = random.random() < error_keep elif t["cost_usd"] >= high_cost_threshold: keep = random.random() < high_cost_keep else: keep = random.random() < success_keep if keep: kept += 1 elif t["is_error"]: lost_errors += 1 rate = round(kept / len(traces), 3) return kept, rate, lost_errors # 模拟 100 万 trace:1% 错误, 0.1% 高成本(>0.01 美元) import random random.seed(0) traces = [{"is_error": random.random() < 0.01, "cost_usd": 0.002 if random.random() > 0.001 else 0.02} for _ in range(1_000_000)] kept, rate, lost = sample_traces(traces) print(f"保留 {kept} 条 ({rate*100:.1f}%), 丢失错误 {lost} 条") # 100% 错误 + 100% 高成本 + 5% 成功 → 大致省 95% 存储,却不丢任何错误
💡 采样的关键不是「省多少」,而是「丢什么」。100% 留错误与高成本、5% 留成功,是成本与诊断能力的最佳平衡——你永远不希望在故障复盘时发现关键 trace 被采样掉了。
| 工具 | 类别 | 许可 | 定价 | 命中 |
|---|---|---|---|---|
| Langfuse | 开发平台 | MIT 核心 | 云免费 5 万事件/月 | 自托管、守开源 |
| LangSmith | 开发平台 | 商业 | 39 美元/用户/月 | LangChain/LangGraph 深度 |
| Opik | 开发平台 | Apache 2.0 | 开源 | 已在 Comet 上的团队 |
| Phoenix | 遥测/评测 | Elastic 2.0 | 开源 | RAG 漂移、开发期 |
| Helicone | 网关/遥测 | MIT | 10 万请求/月免费 | 代理式、网关一体 |
| Arize AX | 规模可观测 | 商业 | 零拷贝数据湖 | >1000 万 trace/天 |
生产模式:网关(Helicone/Portkey)日常 + 评测平台(Phoenix/Langfuse)回归 + 数据湖(Arize AX/DuckDB)长期,全用 OpenTelemetry + GenAI 约定粘合。
本节产出 outputs/skill-observability-stack.md(原课程目录)。给定技术栈、规模、预算、许可姿态,它选出工具组合:
LangChain 团队选型:你的团队在 LangChain 上,要开源自托管可观测。选 Langfuse 还是 Opik,论证。
Arize 回本:500 万 trace/天,Datadog 报价 15 万美元/月。算 Arize AX 的回本。
OTel 约定:设计一套你组织应在每个 LLM 调用上强制要求的 OpenTelemetry GenAI 属性集。
Phoenix 够吗:论证 Phoenix 单独是否足以生产。何时不够?
代理开销:Helicone 代理开销 20 ms。在 P99 TTFT 300 ms 时可接受吗?SLA 100 ms 时呢?
下一节,我们看可观测性的「省钱版」——提示缓存与语义缓存:何时值得、何时是陷阱、命中率与合规如何权衡。