Agent 可观测性落地手册:用 Langfuse 做全链路追踪

结合真实落地经验,介绍如何用 Langfuse 搭建 Agent 追踪、评估与成本分析闭环。

AgentList Team · 2026年2月18日
Langfuse可观测性TracingLLMOps

Agent 一旦进入生产,最先暴露的问题通常是“看不见”:

  • 为什么同样请求有时成功有时失败?
  • Token 成本为何突然上涨?
  • 是检索问题还是推理问题?

可观测性不是锦上添花,而是生产可用性的基础。

最小可用观测模型

建议先建立三层数据:

  1. Trace:一次用户请求的完整链路
  2. Span:链路中的子步骤(检索、工具调用、重排、生成)
  3. Score:人工或自动评估结果(准确性、相关性、可执行性)

只要这三层打通,排障效率会有明显提升。

接入策略

1. 先追关键路径

首批只接三类节点:

  • 主模型调用
  • 检索器调用
  • 外部工具调用

不要一开始追踪所有细节,否则维护成本会反噬。

2. 统一会话与用户标识

  • session_id:同一会话连续请求
  • user_id:聚合用户维度行为
  • request_id:单次请求唯一编号

这让你可以从“异常用户反馈”快速定位到具体 trace。

3. 成本与延迟要分层看

至少拆分:

  • 模型推理耗时
  • 检索耗时
  • 外部 API 耗时
  • 总响应时间

很多团队优化模型参数后发现收益有限,真正瓶颈反而是工具层接口。

评估闭环

推荐两条线并行:

  • 在线轻评估:响应是否命中意图、是否触发重试
  • 离线深评估:抽样回放 + 人工标注

评估指标可从三项开始:

  • Answer Groundedness(是否有依据)
  • Task Completion(任务是否完成)
  • Tool Success Rate(工具调用成功率)

常见反模式

  • 只记录原始文本,不记录结构化上下文
  • 只盯整体延迟,不看步骤级耗时
  • 有追踪无告警,异常只能靠人盯仪表盘

总结

对 Agent 系统来说,观测能力不是可选插件,而是“质量系统”的核心。Langfuse 非常适合作为第一层统一追踪平台,再按需接 Phoenix 或内部评估流水线。


落地建议:先选一个业务场景做 2 周观测基线,再做优化迭代,避免“边改边猜”。

Trace 数据模型:trace / span / generation 的正确用法

Langfuse 的数据模型里有几个常见混淆:

  • trace:一次完整请求的生命周期,跨多个 span
  • span:trace 内的一个步骤(如 "检索"、"重排"、"工具调用")
  • generation:LLM 调用,是特殊的 span,带 token 计数和 prompt 模板信息
  • score:附着在 trace 或 span 上的评估分数

实操建议:

  • 每个 trace 必须有 user_id 或 session_id,否则 30 天后无法做用户级分析
  • generation 的 prompt 必须打版本号,否则 prompt 改动后无法回溯历史质量
  • score 用枚举类型("good" / "bad" / "neutral")而不是数字,便于下游过滤

评估集:从抽样到反馈循环

评估闭环最实用的模式:

  1. 抽样规则:每天从线上 trace 抽 5%(含成功和失败案例)
  2. 人工标注:3 个标注员按评分标准打分;分歧 case 进讨论池
  3. 统计聚合:周维度看趋势,重点关注恶化指标
  4. 反馈到 prompt:高频问题 case 写到 prompt 改动的 acceptance criteria

不要试图用 LLM 自动评分替代人工——LLM 评分与人工评分的相关系数通常 0.5-0.7,只能做"筛选",不能做"判定"。

成本治理的"反直觉"经验

几个被反复验证的成本规律:

  • 重试成本 > 模型升级:把重试率从 15% 降到 5%,省下的钱通常大于换更便宜模型
  • 长 prompt 边际成本递增:每多 1k token,单次成本增加 5-15%,但准确率提升通常 < 2%
  • 工具调用频次的"隐形税":每个工具调用 200-500ms 延迟 + 上下文膨胀,往往是体验瓶颈
  • 缓存命中率是最便宜的优化:同样的 query 不需要重新计算,缓存层可省 30-50% 成本

建议每月做一次"成本拆解",把账单按 trace 维度归因,会发现很多"看不见"的浪费。

告警策略:别让告警疲劳毁掉观测

常见错误是"什么异常都告警",最后没人看。生产告警设计原则:

  • Severity 分级:P0(线上阻断)→ 即时通知;P1(质量下降)→ 工单+日检;P2(成本异常)→ 周报
  • 基于对比的告警:成功率从 95% 跌到 90% 是 P1,从 90% 跌到 80% 是 P0
  • 抑制静默期:知道是 release 引发的,先静默 2 小时再评估
  • 聚合告警:5 个独立告警不如 1 个"P0 综合指标异常"

与 LangSmith / Phoenix 的取舍

三个主流工具的定位差异:

  • Langfuse:开源 + 自托管 + 多模型支持,适合作为统一观测层
  • LangSmith:LangChain 生态深度集成,但绑定较重
  • Phoenix (Arize):偏 evaluation 与 drift detection,适合实验阶段

多数团队的合理选择是 Langfuse 作为主观测平台,Phoenix 用于模型评估实验。不建议两个工具并行做同一件事——会重复埋点、增加维护成本。

落地的真实时间表

一个中型团队的 Langfuse 落地时间参考:

  • 第 1 周:接入主链路 3-5 个 span
  • 第 2-3 周:完成 score 标注机制,跑通第一轮评估
  • 第 4-6 周:上线成本仪表盘与告警
  • 第 7-8 周:开始迭代优化 prompt 和工具

不要试图"一次性接入所有功能",按 4 周一个阶段推进。观测能力的建设是马拉松,不是冲刺。