可靠性与路由2026年6月22日Flatkey Team

AI 可观测性平台:作用与选型指南(2026)

AI 可观测性平台会记录提示词、Token、成本、智能体步骤和质量评分。本文对比 Langfuse、LangSmith、Arize、Datadog、Helicone、Braintrust 和 Logfire 的功能与 2026 年 10 月价格,并附 OpenTelemetry 代码。

AI 可观测性平台:作用与选型指南(2026)

AI 可观测性平台:作用与选型指南(2026)

AI 可观测性平台会记录应用中的每一次模型调用、智能体步骤和工具调用(提示词、响应、Token、成本、延迟和错误),帮助你在生产环境中排查问题、评估质量并控制支出。 截至 2026 年 10 月,主流选择包括 Langfuse、LangSmith、Arize(Phoenix 和 AX)、Datadog LLM Observability、Helicone、Braintrust 和 Pydantic Logfire,其中大多数都支持 OpenTelemetry 链路追踪。选型时主要看三点:数据必须存放在哪里、如何评估质量,以及每条 trace 要付多少钱。

本文介绍什么是 AI 可观测性、应采集哪些信号、主流平台在功能和公开价格上的对比,以及如何用不到 30 行代码为应用接入埋点。价格均取自各厂商官方定价页,查询日期为 2026 年 10 月 24 日。

什么是 AI 可观测性?

AI 可观测性是指从 AI 系统中采集 trace、指标、日志和质量评分,让你随时能回答三个问题:模型做了什么?答案好不好?花了多少钱? 它在传统应用监控(关注可用性和延迟)的基础上,加入了只对大语言模型有意义的信号:

  • 输入与输出: 提示词、检索到的上下文以及生成的答案。
  • Token 用量与成本: 按请求、用户和功能统计的输入、输出和缓存 Token。
  • 智能体 trace: 多步骤运行中的每个推理步骤、工具调用和重试。
  • 质量: 评估器评分、用户反馈,以及幻觉或策略违规标记。
  • 模型与供应商元数据: 由哪个模型回答、走了哪条路由、使用了哪些参数。

传统监控只告诉你一个请求花了 9 秒。AI 可观测性则会告诉你:之所以花了 9 秒,是因为智能体调用了三次搜索工具,第二次模型调用遇到 429,而回退模型生成的答案没有通过你的事实依据(groundedness)检查。

监控、可观测性与评估的区别

实践 回答的问题 典型产出
监控 系统是否在线、是否在阈值内? 仪表盘、延迟和错误率告警
可观测性 这个具体请求为什么会这样表现? 包含提示词、工具调用、Token 和元数据的 trace
评估 输出是否正确、安全、有用? 来自测试、LLM 评审或人工审核的评分

现代 AI 可观测性平台会把这三者结合起来。NIST AI 风险管理框架也强调要对已部署的 AI 系统进行持续测量和监控,这也是越来越多治理团队要求保留这些记录的原因。

开放标准:OpenTelemetry GenAI 语义约定

采集 AI 遥测数据已不再需要绑定某个厂商的 SDK。OpenTelemetry 定义了生成式 AI 语义约定,为模型调用规定了标准属性名。截至 2026 年 10 月,这些约定由专门的 semantic-conventions-genai 仓库维护,状态仍为 "Development",因此部分名称可能还会变化。

属性 含义
gen_ai.operation.name 操作类型,如 chat 或 embeddings(必填)
gen_ai.provider.name 供应商,如 openai 或 anthropic(必填)
gen_ai.request.model 代码中请求的模型
gen_ai.response.model 实际作答的模型
gen_ai.usage.input_tokens / gen_ai.usage.output_tokens Token 数量
gen_ai.response.finish_reasons 生成停止的原因
gen_ai.conversation.id 将同一对话的多轮归为一组

用这些属性埋点一次,就能把同一份 trace 发送到 Langfuse、Arize Phoenix、Datadog、Logfire、Grafana Tempo 或任何兼容 OTLP 的后端。跨服务的上下文传播遵循 W3C Trace Context 标准。

AI 可观测性平台对比

平台 部署方式 优势 公开入门价格(2026 年 10 月)
Langfuse 开源(自托管)或云服务 链路追踪、提示词管理、评估;核心代码 MIT 许可 Hobby 免费(每月 5 万 units);Core 每月 29 美元;Pro 每月 199 美元
LangSmith 云、混合部署,Enterprise 可自托管 与 LangChain、LangGraph 深度集成,支持评估 Developer 每席位 0 美元(5k 基础 trace);Plus 每席位 39 美元
Arize Phoenix 与 AX Phoenix 开源;AX 云服务 原生 OTel 追踪、评估、漂移分析 Phoenix 自托管免费;AX Pro 每月 50 美元(5 万 span)
Datadog LLM Observability 云(Datadog 的一部分) 将 LLM trace 与 APM、日志和基础设施关联 按用量计费;需向 Datadog 询价
Helicone 云或自托管 基于代理的日志记录,一行配置即可接入,支持缓存 Hobby 免费(1 万次请求);Pro 每月 79 美元;Team 每月 799 美元
Braintrust 云 以评估为先的工作流、实验和打分 Starter 0 美元(处理 1 GB,1 万次评分);Pro 每月 249 美元
Pydantic Logfire 云 通用 OTel 可观测性,对 Python 和智能体追踪支持出色 Personal 免费(每月 1000 万条记录);Team 每月 49 美元

如何解读这张表:

  • 数据必须留在自己的环境中? 从 Langfuse 或 Arize Phoenix 开始,两者都可以自托管。
  • 已经在付费使用 Datadog? 它的 LLM Observability 产品能让 AI trace 与现有 APM 和日志放在一起。
  • 基于 LangChain 或 LangGraph 构建? LangSmith 的接入成本最低。
  • 评估是首要任务? Braintrust 和 LangSmith 在实验和打分工作流上领先。
  • 不想改代码? Helicone 这类代理式工具,或 AI 网关自带的日志,可以在网络层捕获流量。

选择 AI 可观测性平台时要看什么

试用时可以参考这份清单:

  1. OpenTelemetry 支持。 能否接收带 gen_ai.* 属性的 OTLP trace?能否把数据再导出?
  2. 智能体与工具追踪。 是否会为每个步骤、工具调用和重试展示嵌套 span,而不只是最终的模型调用?
  3. 成本追踪。 能否根据 Token 和你的真实价格计算每个请求的成本,包括缓存 Token 和批处理折扣?
  4. 评估。 能否对生产 trace 运行自动化检查(LLM 评审、正则、参考答案),并在分数下降时告警?
  5. 隐私控制。 能否对提示词脱敏或哈希、设置保留期限,并限制谁能看到原始内容?
  6. 计费单位。 厂商可能按 trace、span、"unit"、GB 或席位计费。比较之前,先按各单位估算你的月用量。
  7. 自托管。 如果涉及受监管数据,确认是否有自托管选项以及运行成本。

用 OpenTelemetry 为 Python 中的 LLM 调用埋点

下面的示例用标准 GenAI 属性记录一次 chat completion,并导出到任意 OTLP 端点(Langfuse、Phoenix、Logfire 或本地 collector)。它通过 OpenAI 兼容端点调用模型,因此同一段代码适用于 GPT、Claude、Gemini 或 DeepSeek。

pip install openai opentelemetry-sdk opentelemetry-exporter-otlp
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318"   # your collector or vendor endpoint
export FLATKEY_API_KEY="sk-..."
import os, time
from openai import OpenAI
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter

provider = TracerProvider()
provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
trace.set_tracer_provider(provider)
tracer = trace.get_tracer("support-bot")

client = OpenAI(api_key=os.environ["FLATKEY_API_KEY"],
                base_url="https://router.flatkey.ai/v1")

def answer(question: str, model: str = "claude-sonnet-5-5") -> str:
    with tracer.start_as_current_span(f"chat {model}") as span:
        span.set_attribute("gen_ai.operation.name", "chat")
        span.set_attribute("gen_ai.provider.name", "flatkey")
        span.set_attribute("gen_ai.request.model", model)
        t0 = time.time()
        r = client.chat.completions.create(
            model=model, max_tokens=300,
            messages=[{"role": "user", "content": question}])
        span.set_attribute("gen_ai.response.model", r.model)
        span.set_attribute("gen_ai.usage.input_tokens", r.usage.prompt_tokens)
        span.set_attribute("gen_ai.usage.output_tokens", r.usage.completion_tokens)
        span.set_attribute("gen_ai.response.finish_reasons", [r.choices[0].finish_reason])
        span.set_attribute("app.latency_ms", int((time.time() - t0) * 1000))
        return r.choices[0].message.content

print(answer("How do I reset my password?"))
provider.shutdown()  # flush spans before exit

在 Node.js 中,用 @opentelemetry/sdk-node 的做法相同:

import OpenAI from "openai";
import { trace } from "@opentelemetry/api";

const tracer = trace.getTracer("support-bot");
const client = new OpenAI({ apiKey: process.env.FLATKEY_API_KEY, baseURL: "https://router.flatkey.ai/v1" });

export async function answer(question, model = "gpt-6.1-sol") {
  return tracer.startActiveSpan(`chat ${model}`, async (span) => {
    span.setAttributes({ "gen_ai.operation.name": "chat", "gen_ai.request.model": model });
    const r = await client.chat.completions.create({ model, messages: [{ role: "user", content: question }] });
    span.setAttributes({
      "gen_ai.response.model": r.model,
      "gen_ai.usage.input_tokens": r.usage.prompt_tokens,
      "gen_ai.usage.output_tokens": r.usage.completion_tokens,
    });
    span.end();
    return r.choices[0].message.content;
  });
}

除非隐私政策允许,否则不要把提示词和响应正文放进 span 属性;很多团队改为记录哈希值或脱敏副本。我们的请求体日志指南介绍了常见的脱敏模式。

AI 网关本身也是可观测性数据源

如果你的应用通过 AI 网关或路由器调用模型,网关本来就能看到每个请求,因此它是成本最低的起点。即使某些服务还没有埋点,网关也能采集到数据。以 Flatkey 为例,其用量日志会记录每次调用的时间戳、模型、输入 Token、输出 Token、成本、脱敏 API Key 和状态,可导出为 CSV 或 JSON,并支持月度支出上限和按分组配额(Flatkey 用量文档,2026 年 10 月)。

实用的方案是把两层结合起来:

层级 最擅长观察的内容 使用示例
网关日志 每次模型调用、成本、状态、供应商错误、回退 按 Key 或团队统计支出、429 和 5xx 比例、供应商故障
应用 trace 业务上下文、智能体步骤、检索、工具调用 某个用户的请求为什么失败或回答不佳
评估 长期的答案质量 在修改提示词或更换模型后发现质量回退

用共享的请求 ID 把两者关联起来:在每次模型调用中把 trace ID 作为请求头或元数据字段发送,这样就能从网关日志的一行跳转到完整的应用 trace。我们推荐的指标集见 LLM API 可观测性:指标、trace 与成本,图表布局可参考 AI 网关 KPI 仪表盘。

生产环境中真正重要的指标

指标 为什么重要 告警思路
各模型 p50 / p95 延迟 用户能感受到长尾延迟 p95 连续 10 分钟超过 SLO
首 Token 时间(TTFT) 流式输出体验 某个供应商的 TTFT 持续上升
按状态统计的错误率(429、5xx、超时) 供应商或配额问题 429 比例超过 2%
回退率 隐藏的可靠性问题 回退次数环比翻倍
每请求和每用户成本 预算控制 日支出超出预测
每请求 Token 数 提示词膨胀和失控的智能体 智能体运行超过 Token 上限
评估分数 质量回退 部署后分数下降

按团队和环境归因成本,财务问题才有答案;成本归因指南和按环境追踪成本介绍了打标签的方案。落地计划可参考 AI 可观测性实施清单。

常见问题

什么是 AI 可观测性?

AI 可观测性是从 AI 应用中采集 trace、指标、日志和质量评分,让你看清模型或智能体做了什么、结果好不好、花了多少钱。它在传统监控之上加入了提示词、Token、工具调用和评估。

最好的 AI 可观测性平台是哪个?

没有唯一最好的平台。Langfuse 和 Arize Phoenix 适合需要开源和自托管的团队,LangSmith 适合 LangChain 用户,Datadog 适合已经在用 Datadog 的团队,Braintrust 适合以评估为主的工作流。建议用你自己的 trace 试用两个方案。

有免费的 AI 可观测性平台吗?

有。截至 2026 年 10 月,Langfuse Hobby(每月 5 万 units)、LangSmith Developer(5k 基础 trace)、Helicone Hobby(1 万次请求)、Braintrust Starter 和 Logfire Personal(1000 万条记录)都是免费的,Langfuse 和 Arize Phoenix 还可以零许可费自托管。

LLM 监控和 AI 可观测性有什么区别?

监控关注预先设定的阈值,比如延迟和错误率。可观测性则让你能深入调查任何单个请求,包括提示词、工具调用、Token 用量和质量评分。

AI 可观测性支持 OpenTelemetry 吗?

支持。OpenTelemetry 的 GenAI 语义约定定义了 gen_ai.request.model、gen_ai.usage.input_tokens 等标准属性,大多数平台都接受 OTLP trace。截至 2026 年 10 月,这些约定仍处于 Development 状态。

什么是生成式 AI 可观测性?

它是同一套实践在生成式模型上的应用:采集提示词、输出、Token 成本、智能体步骤和评估结果,帮助团队在生产环境中调试和改进生成式 AI 功能。

资料来源