LLM应用的可观测性:追踪、成本、延迟与质量漂移
高级12 分钟阅读企业AI

LLM应用的可观测性:追踪、成本、延迟与质量漂移

LLM应用有其独特的故障方式,传统可观测性无法捕捉。本文介绍追踪多步骤流程、跟踪单次调用相差可达100倍的成本、监控质量漂移,以及在生产规模下调试幻觉的模式。

您应该能够做到的事情

LLM可观测性不是多加几行日志的传统APM。它专为多步骤追踪、token级成本归因、提示词版本跟踪、质量漂移检测而设计,还要记录传统系统绝不会记录的输入/输出细节。

AI Expert Team发布日期: 2026年5月15日
仅在此浏览器中保存。
本文内容

LLM应用的故障方式不同于传统软件。普通缺陷会产生堆栈跟踪;LLM的“缺陷”则可能是质量漂移,往往要等用户投诉时你才会发现。普通延迟问题是某个端点响应缓慢;LLM延迟问题则可能是一段长达30秒的推理轨迹,用户只能盯着加载动画等待。

传统可观测性工具(Datadog、New Relic、Sentry)能告诉你API调用在8.4秒内成功完成,使用了12,847个输入token。它无法告诉你响应是否优质、模型是否产生幻觉、是否调用了错误的工具,或者质量是否自上周以来发生了漂移。

生产环境中的LLM系统需要不同的可观测性技术栈,或者至少要在传统技术栈之上增加额外层次。本文介绍其独特之处、需要插桩的内容,以及行之有效的模式。

LLM可观测性有何不同

LLM系统有一些传统可观测性无法处理的典型特征:

单元级非确定性。 同一输入在不同调用中会产生不同输出。仅检查状态码,无法回答“这次运行是否正确”。

质量是首要指标。 延迟和成本固然重要,但质量最重要,也最难衡量。

多步骤追踪。 一次用户查询可能触发5–50次LLM调用(智能体循环、RAG检索、结构化提取、反思)。每次调用都是更大追踪的一部分。

token级成本差异。 根据提示词大小、输出长度和模型,单次调用的成本可能从€0.001到€1.00不等。汇总成本需要归因到每次调用。

随时间漂移。 模型会更新,提示词会演进,输入分布会变化,质量也会随之波动;你需要看到这种变化。

敏感载荷。 输入和输出通常是最有价值的诊断数据,却也是最敏感的数据。日志记录规范至关重要。

长时间异步流程。 智能体运行可能持续数分钟,还有后台批处理任务和流式响应。传统的请求/响应可观测性并不适用。

这些不是理论上的担忧。每个运行生产级LLM系统的团队都会遇到。

可观测性技术栈

完整的LLM可观测性技术栈包含以下层次:

1. 调用级插桩。 记录每次LLM调用:输入、输出、延迟、成本、模型和状态。

2. 追踪级插桩。 将多次调用的工作流串联成追踪。你可以看到一次用户请求的完整调用链。

3. 应用级指标。 按功能、用户和租户聚合。

4. 质量监控。 对抽样流量或全部流量进行自动化质量评估。

5. 用户反馈采集。 显式信号(赞/踩)和隐式信号(重新生成、放弃)。

6. 告警。 针对成本激增、延迟恶化、质量下降和错误率上升的实时告警。

7. 调试工具。 发生故障时,你可以找到追踪、查看输入和输出,并了解实际发生了什么。

下面逐一介绍。

调用级插桩

每次LLM调用都应生成一条包含以下内容的日志记录:

{
  "call_id": "uuid",
  "timestamp": "2026-05-15T14:23:45Z",
  "trace_id": "uuid",  // 用于归入追踪
  "span_id": "uuid",   // 用于父子关系
  "feature": "summarize_document",
  "prompt_version": "v3.2",
  "model": "claude-4-sonnet",
  "provider": "anthropic",
  "input_messages": [...],
  "output_message": "...",
  "input_tokens": 1842,
  "output_tokens": 384,
  "total_tokens": 2226,
  "cost_usd": 0.0084,
  "latency_ms": 2340,
  "first_token_ms": 1240,  // 流式传输
  "status": "success",
  "error": null,
  "user_id": "user_123",
  "tenant_id": "tenant_45",
  "metadata": {
    "session_id": "...",
    "experiment_arm": "v3_test"
  }
}

这是最低要求。全部采集。

关键实现选择如下:

日志记录在哪里。 可选方案包括:

  • 专用可观测性工具(Helicone、LangSmith、Phoenix、Braintrust、Arize)。
  • 带LLM扩展的通用可观测性平台(Datadog LLM Observability、Sentry)。
  • 自建日志/数据库。

对大多数团队而言,选择专用工具即可。它们提供专门用于检查LLM调用的UI。与自行构建相比,学习成本并不高。

对较大的团队,可以混合使用:通过专用工具获得LLM专属UI,同时将数据输送到中央可观测性平台,以便进行跨系统关联。

如何插桩。 可选方案包括:

  • 位于应用与LLM提供商之间的代理(Helicone的模式)。
  • 应用代码中的封装SDK。
  • 每次调用LLM时手动使用的包装类。

代理最容易使用,但会增加延迟。SDK很简洁,但需要集成。手动封装最灵活,却也最容易遗漏。

一种务实的做法是:在应用调用LLM的边界处使用SDK封装。只需在一处插桩,其他调用都会经过这里。

记录什么。 一些实际注意事项:

  • 截断非常长的输入/输出,但要记录发生过截断。
  • 对PII进行哈希或脱敏(如有需要,可通过安全查询取回原文)。
  • 即使在错误路径中,也不要记录凭据。
  • 对流式传输,同时记录首token延迟和总延迟。

追踪级插桩

一次用户操作往往涉及多次LLM调用。没有追踪级插桩,你会得到上千条调用日志,却无法知道哪些调用属于同一次用户操作。

实现方式如下:

生成追踪ID。 在用户请求开始时生成唯一追踪ID,并将其传递给后续所有调用。

父子Span。 在一次追踪中,每次调用都有Span ID,以及可选的父Span ID,由此形成展示调用层级的树。

操作命名。 每个Span都有名称(summarize_documentextract_entitiestool_call:search)。追踪会显示完整的操作链。

UI中的追踪视图如下:

追踪abc-123(总计12.3s)
├─ classify_intent (450ms) [gpt-5-mini]
├─ retrieve_documents (1.2s) [embedding + search]
├─ generate_response (8.5s) [claude-4-sonnet]
│   ├─ tool_call: search_internal (320ms)
│   ├─ tool_call: lookup_customer (180ms)
│   └─ generate_final_text (7.5s)
└─ judge_response_quality (2.1s) [claude-4-haiku]

现在你可以看到系统实际为这次用户请求做了什么,也能在上下文中找到缓慢、昂贵或失败的调用。

在这方面表现出色的工具包括LangSmith、Phoenix(Arize),以及经过自定义集成的Helicone。还可以使用通用可观测性工具(Datadog、OpenTelemetry)进行跨系统追踪。

应用级指标

除单次调用外,还应汇总以下指标:

按功能。

  • 调用量。
  • 平均延迟。
  • p50、p95、p99延迟。
  • 每个请求的平均成本。
  • 错误率。
  • 质量分数(如有衡量)。

按用户/租户。

  • 每位用户每天的调用次数。
  • 每位用户的成本。
  • 重度用户/滥用模式。

按模型。

  • 各模型的调用量。
  • 各模型的成本占比。
  • 各模型的错误率。
  • 各模型的质量(如有衡量)。

按功能 × 模型。

  • 哪些功能使用哪些模型?
  • 哪些地方可以路由到更便宜的模型?

这些仪表板会推动运营决策:哪些功能成本高、哪些响应慢,以及哪些需要优化。

质量监控

最困难的一层是自动化质量评估。

对于评估(已在其他文章中介绍),你会在定义好的数据集上运行。对于在线质量监控,则要评估生产流量。

可采用以下方法:

对样本使用LLM裁判。 例如,对1%的生产流量进行抽样。针对每个样本运行裁判LLM,按相关维度对响应评分。持续跟踪分数,并在下降时告警。

隐式信号。 跟踪重新生成、放弃、错误率、完成耗时和后续消息频率。这些信号较弱,但成本低,可用作先行指标。

显式用户反馈。 赞/踩、“这是否有帮助?”按钮和明确举报。信号最强,但数量最少。

模式检测。 自动标记特定的不良模式(“I cannot help with that”“I’m just an AI”、反复拒绝)。这能立即捕获一部分回归。

典型设置如下:

  • 对1%的生产调用进行抽样。
  • 对每个样本运行LLM裁判,按多个维度评分。
  • 汇总为各功能的每日分数。
  • 如果任一功能的分数环比上周下降>10%,则发出告警。

这确实会产生成本,但范围可控(1%的流量 × 小型裁判模型,对大多数团队而言可以承受)。

成本可观测性

LLM成本可能失控。一个缺陷——失控的重试循环,或某项功能消耗的token比预期多10倍——就可能在任何人察觉之前产生10倍账单。

成本可观测性包括以下层次:

单次调用成本。 在记录日志时计算每次调用的成本,并可立即聚合。

预算告警。 按功能/租户设置每日、每周和每月预算。达到阈值(50%、75%、90%、100%)时告警。

异常检测。 每日成本是正常水平的5倍?告警。单次调用成本是正常水平的100倍?告警。

成本归因。 按功能、租户和用户归因成本,找出主要消耗者。

预测。 根据当前趋势,月底账单将达到多少?

一个实用的仪表板视图是在单个面板中按功能拆分,展示今日成本、本周剩余时间预计成本与上周成本的对比。

实用建议:尽可能设置硬性限制。某项功能预计成本为每天€X,就应在达到10X时自动停用。成本失控的速度很快,而限制可以及时拦截。

延迟可观测性

LLM延迟比典型API更复杂:

总延迟。 从发出请求到获得最终响应。

首token时间(TTFT)。 对于流式传输,用户何时能看到第一个字符?这决定了聊天UX中大部分的感知延迟。

末token时间(TTLT)。 响应需要多久才能全部完成?

每秒token数。 输出速率。不同模型的流式输出速度不同。

工具调用延迟。 在智能体流程中,工具调用和LLM调用分别花费多少时间。

跟踪所有这些指标。不同的优化策略针对不同指标。

对于面向用户的聊天,TTFT最重要。迟迟不出现第一个token会让人觉得系统坏了;每秒token数较低只会让人觉得输出较慢。

对于批处理,总延迟很重要,而吞吐量更重要。

对于智能体,工具调用延迟往往占主导地位;如果工具很慢,优化LLM也无济于事。

错误可观测性

LLM特有的错误包括:

API错误。 速率限制、身份验证失败、服务器错误。与其他API相同。

验证错误。 结构化输出不符合Schema。按功能跟踪发生频率。

内容过滤错误。 提供商阻止了请求。跟踪这些错误以发现提示词问题。

工具错误。 特定工具发生故障。按工具跟踪。

质量错误。 裁判LLM将输出评为不佳。随时间跟踪。

幻觉信号。 检测可能的幻觉(模型声称了来源中不存在的内容)。很难自动检测,但可以近似判断。

成本错误。 调用成本远超预期,通常意味着存在缺陷。

每类错误都应有自己的仪表板,也都可以触发告警。

调试工具

发生故障时,你需要找到问题并理解原因。调试界面应包括:

追踪搜索。 通过追踪ID、用户ID或时间戳找到特定用户的请求。

调用检查器。 对任意调用查看完整请求、响应、参数、延迟和成本。

追踪时间线。 对复杂流程以可视化方式查看调用链。

重放能力。 能否用不同的提示词/模型重新运行历史调用,看看会发生什么?这对于验证修复至关重要。

差异视图。 并排比较两次调用——同一提示词的不同版本,或不同模型。

按内容搜索。 在历史调用语料中搜索特定模式(“显示模型说过 ‘I cannot help’ 的调用”)。

这些正是专用LLM可观测性工具提供的能力。自行构建的工作量很大,使用现成工具通常更便宜。

隐私与PII

LLM可观测性日志十分敏感。输入可能包含PII,输出也可能引用PII。有时无法避免记录它们,因为调试需要这些信息。

实践包括:

token化/哈希。 用token替换标识符。原始值可以通过单独的安全查询取回。大部分日志因此不再包含PII。

记录日志时脱敏。 在数据进入可观测性存储之前检测并脱敏PII。将特定模式(电子邮件地址、电话号码、SSN)替换为占位符。

租户隔离。 多租户可观测性数据按租户隔离。一个租户无法看到另一个租户的数据。

访问控制。 谁可以查看原始输入/输出?对访问行为进行记录。

保留策略。 删除超过X天的日志,或将其移至冷存储。在许多司法管辖区,PII的保留期限受法律限制。

被遗忘权。 当用户依据GDPR请求删除时,必须能够找到并删除其日志。

对于任何处理PII的系统,这些措施都不是可选项。应尽早做好;事后补救非常痛苦。

告警

以下阈值和信号值得发出告警:

成本。

  • 每日成本 > 正常水平的2倍。
  • 单次调用成本 > €5。
  • 每小时成本激增 > 5倍。

延迟。

  • p95延迟 > 基线的2倍。
  • 聊天UX的TTFT > 5s。
  • 工具调用超时增多。

错误率。

  • 错误率 > 1%(典型基线为0.1–0.5%)。
  • 特定错误类型激增(验证错误、速率限制)。

质量。

  • 任一功能的质量分数环比上周下降>10%。
  • 用户反馈负面率 > 基线。
  • 重新生成率 > 基线。

模式。

  • 特定不良短语出现得更频繁。
  • 输入分布突然变化。

每条告警都应具体且可操作。“成本很高”没有帮助;“功能X在过去30分钟内的成本达到其预算的10倍——可能是客户Y的会话失控”才可操作。

多租户注意事项

对于B2B SaaS应用:

按租户提供指标。 每位客户都能看到自己的用量、成本和质量。

按租户提供告警。 根据各自的阈值告警。

按租户进行调试。 支持人员可以查看客户的追踪,但要有适当的访问控制。

按租户配置。 部分客户可能使用不同的模型、提示词或策略。可观测性层应反映这些差异。

这会增加复杂度,但对于规模化B2B至关重要。如果无法按租户查看追踪,客户支持就无法帮助调试“AI对我不起作用”。

工具生态(2026年)

截至本文撰写时,LLM可观测性工具的整体格局如下:

专用LLM可观测性工具:

  • Helicone。 基于代理;集成简单;仪表板强大。
  • LangSmith。 与LangChain生态紧密结合;深度追踪能力强。
  • Phoenix(Arize)。 对开源友好;质量监控能力强。
  • Braintrust。 将评估与可观测性很好地结合在一起。
  • PromptLayer。 以提示词为中心;版本跟踪能力强。
  • Weights & Biases Weave。 对机器学习团队友好;可与W&B的更广泛套件集成。

带LLM扩展的通用APM:

  • Datadog LLM Observability。 企业级;价格昂贵。
  • New Relic LLM Observability。 与之类似。
  • OpenTelemetry + 你选择的APM。 OTel提供GenAI语义约定;一次插桩即可在多种工具中查看。

自行构建:

  • 在Postgres表中为每次调用存一行,就足以让大多数团队走很远。
  • 添加简单UI用于搜索和展示。
  • 与现有日志基础设施集成。

正确选择取决于团队规模、系统规模、预算和现有工具。大多数团队从专用工具起步,随着规模增长再迁移到更全面的方案。

一套实用配置

对于从零开始的典型中型团队:

第1周: 选择工具(Helicone是常见且容易上手的选择)。集成到主要LLM调用路径,并确认调用已被记录。

第2周: 设置基础仪表板,展示各功能的成本、延迟和错误率。

第3周: 针对成本激增和错误率上升设置告警。

第4周: 添加追踪级插桩,串联多次调用流程中的Span。

第2个月: 实施质量抽样。选择几项功能,对1%的流量设置LLM-as-judge评分。

第3个月: 添加用户反馈采集,接入赞/踩或类似机制。

第4个月: 添加多租户支持、细粒度告警和调试工具。

这就是一套可用的可观测性技术栈。每一层都会增加能力,也都值得建设。跳过任何一层都会形成盲区。

缺少它会发生什么

以下是没有适当LLM可观测性的团队反复遇到的一些事故模式:

  • 某个缺陷导致一项功能在紧密循环中反复重试。一个周末累积了五位数的意外费用,直到月度账单到达才被发现。(这类故事的变体出现得十分频繁,具体数字已经不如模式本身重要。)

  • 一次模型更新悄然改变了行为,关键功能的质量下降。用户不断投诉,但工程团队以为只是“偶尔表现怪异”。两个月后才发现与模型变更有关。

  • 部署了新的提示词版本,却意外导致一项重要用户流程回归。由于没有按流程划分的指标,几周内都无人察觉。

  • 智能体系统开始循环,部分用户会话产生200多次LLM调用。由于没有追踪级插桩,花了数小时才找到这个循环。

  • 工具身份验证失败导致智能体陷入混乱。智能体不断“尝试各种办法”并持续产生费用。由于没有告警,这种情况持续了数小时。

  • 一次提示词注入导致AI泄露系统指令,并披露了PII。由于没有可观测性,团队无法轻松确定哪些用户受到了影响。

这些不是理论情形,它们确实会发生。可观测性可以预防其中大多数问题,或迅速发现它们。

在事故发生前完成插桩

LLM可观测性是一门独立学科。传统APM必不可少,但并不充分。调用级、追踪级、质量、成本、延迟、错误和调试这些专门层次缺一不可。

工具已经存在。选择一个,尽早集成,并投入建设能够抢在用户之前发现问题的仪表板、告警和流程。

这样做的团队:

  • 能在数小时而非数周内发现缺陷。
  • 能够可预测地管理成本,而非收到意外账单。
  • 能够长期保持质量,而非任其漂移。
  • 能系统地调试,而非靠猜测。

没有这样做的团队,最终会遭遇一次迫使他们采取行动的事故。与其事后补做,不如在事故发生前完成插桩。

继续阅读

通过下一篇文章继续沿着相同的学习路径进行学习。