Arize-ai/openinference · 上手攻略

  • 仓库:arize-ai/openinference
  • 链接:https://github.com/Arize-ai/openinference
  • 分类:AI 观测 / MLOps / 可观测性
  • 作者:Jay
  • 更新:2026-09-04

这是什么

OpenInference 是一个基于 OpenTelemetry 标准的 AI 应用追踪(tracing)工具集,由 Arize 团队维护。它定义了 LLM 调用、向量检索、工具使用等场景的语义约定(semantic conventions),并提供各主流 AI 框架的插桩(instrumentation)库,让 AI 应用能像传统微服务一样输出标准化的 trace 数据,接入任何 OpenTelemetry 兼容的后端(Prometheus、Grafana、Jaeger 等)。

本质上,它解决的是"LLM 应用黑盒"问题——模型在跑、但不知道调用了什么 prompt、消耗了多少 token、检索到了哪些文档、最终怎么生成回复。

解决什么问题

AI 应用的可观测性长期缺失。传统软件有结构化日志、Metrics、Traces,但 LLM 应用缺乏统一标准。OpenInference 填补了这个空白:

  • 语义统一:定义 gen_ai.* 语义约定(类似于 HTTP 的 span 约定),让不同框架的 trace 可以互操作。
  • 插桩覆盖广:支持 OpenAI、Anthropic、LlamaIndex、LangChain、DSPy、AWS Bedrock、Mistral、Azure OpenAI 等 20+ 框架,无需改动业务代码即可接入。
  • 零 Lock-in:输出的是标准 OpenTelemetry 格式,可接任意兼容后端,不强制绑定 Arize 自身服务。
  • 下游支持:原生支持 Arize Phoenix(本地可观测面板)和 Arize AX(生产级监控 SaaS)。

快速安装

# Python SDK 基础包
pip install openinference-instrumentation
pip install openinference-semantic-conventions

# OpenAI 插桩(最常用)
pip install openinference-instrumentation-openai

# LlamaIndex 插桩
pip install openinference-instrumentation-llama-index

# LangChain 插桩
pip install openinference-instrumentation-langchain

⚠️ 版本注意:插桩包与 opentelemetry-sdk 版本需匹配。官方推荐 opentelemetry-sdk >= 1.16.0,Python 版本 ≥ 3.9。安装前建议 pip show opentelemetry-api 确认版本。

核心用法

1. 最简接入(OpenAI SDK)

from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from openinference.instrumentation.openai import OpenAIInstrumentor

# 初始化 OTLP 导出到 Phoenix 或任意 OTel 后端
trace.set_tracer_provider(TracerProvider())
tracer_provider = trace.get_tracer_provider()
tracer_provider.add_span_processor(
    BatchSpanProcessor(OTLPSpanExporter(endpoint="http://localhost:6006/v1/traces"))
)

# 一行接入,自动追踪所有 openai.ChatCompletion 调用
OpenAIInstrumentor().instrument()

然后正常调用 OpenAI API,trace 数据会自动输出。

2. LlamaIndex 接入(带 RAG)

from opentelemetry import trace
from openinference.instrumentation.llama_index import LlamaIndexInstrumentor

trace.set_tracer_provider(TracerProvider())

LlamaIndexInstrumentor().instrument()

# 正常用法,所有 query_engine / chat_engine 调用均被追踪
query_engine = index.as_query_engine()
response = query_engine.query("...")
# → 包含 retrieve 步骤 + LLM 调用 + 完整 span 树

3. 使用 Phoenix 本地查看 traces

# 安装 Phoenix
pip install arize-phoenix

# 启动(自动开 6006 端口 Web UI)
 phoenix serve

在 Phoenix UI 中可以直观看到:输入 → Embedding → Vector DB 检索 → LLM 调用 → 输出的完整链路,以及每个环节的 latency、token 消耗等。

4. 关键语义约定(gen_ai.*)

Span 属性 含义
gen_ai.system 模型名称,如 openai/gpt-4o
gen_ai.request.max_tokens 最大生成长度
gen_ai.response.id 模型返回的 message ID
gen_ai.token_type input / output / complete
gen_ai.usage.output_tokens 输出 token 数
gen_ai.usage.total_tokens 总 token 数

⚠️ 注意:属性名在不同版本 openinference-semantic-conventions 中可能略有变化,建议查看 spec 目录 确认最新版本约定。

典型适用场景

  1. RAG 应用调试:LLM 回答质量差时,trace 可以直接看到向量检索召回了多少文档、top-k 是哪几条,快速定位是检索问题还是生成问题。
  2. 多模型 A/B 测试:同一 query 同时调用 GPT-4o 和 Claude 3.5,trace 对比两者 latency、token 消耗、回复质量的差异。
  3. Agent 链路追踪:CrewAI、LangChain Agent 的多步推理链路,每个 tool_call 的输入输出都可以追踪,排查"Agent 为什么会调用这个工具"。
  4. 生产环境可观测性:接 Prometheus + Grafana,设置 token 消耗异常告警或 P99 latency 看板。
  5. 微调数据收集:通过 trace 自动收集 (prompt, response) 对,无需额外日志埋点。

坑与注意

  1. OTLP 端点配置:本地开发用 http://localhost:6006/v1/traces,连接 Phoenix;生产环境需换成实际的 OTel Collector 地址,且 HTTPS 端点需配置正确的 header 认证。
  2. BatchSpanProcessor 是异步的:应用退出时 trace 可能未完全导出,调试时可以在退出前 span_processor.shutdown() 确保数据完整。
  3. 敏感数据脱敏:trace 中默认记录完整 prompt / response,需检查是否包含敏感信息。Arize 提供了数据脱敏方案,建议生产环境配置。
  4. 插桩版本与框架版本匹配:插桩包更新频繁,某些新版本框架可能暂不支持,参见 PyPI 各包 release 页面 确认兼容性。
  5. 上下文传播(Context Propagation):跨服务的 trace 连续性需要 W3C TraceContext 或 B3 格式配置,若 trace 断在半途,先查 propagators 配置。
  6. Phoenix vs 云端:Phoenix 是本地轻量版,适合开发调试;Arize AX 是云服务,支持 SLA 和协作功能,两者 trace schema 兼容但仪表盘不同。

与同类对比

特性 OpenInference LangSmith Weights & Biases LLM Monitoring
标准化程度 OpenTelemetry 原生,厂商中立 专有格式,LangChain 原生 专有格式
框架覆盖 20+ 框架(OpenAI/LlamaIndex/LangChain/DSPy 等) 主要是 LangChain + OpenAI 主要对接训练/微调
后端灵活性 任意 OTel 后端 必须用 LangSmith 云 必须用 W&B 云
本地开发支持 ✅ Phoenix 完全本地 ❌ 必须联网 ❌ 必须联网
开源 ✅ 完全开源 ❌ 闭源 SaaS ❌ 闭源 SaaS
Agent 追踪 ✅ MCP / CrewAI / Agno 等 ✅ 支持 有限

OpenInference 的核心优势是开放标准 + 本地可用,不绑定任何商业服务,适合重视数据主权或在私有环境部署的团队。LangSmith 在 LangChain 生态内集成更深,但 lock-in 风险高。

一句话推荐结论

如果你在构建 AI 应用(尤其是 RAG 或 Agent),且希望追踪调用链路、排查问题、监控 token 消耗,OpenInference 是目前最开放、最轻量的选择——一行代码接入,不锁死商业后端,本地 Phoenix 开发体验也很好。


⚠️ 本攻略基于 GitHub README 及公开文档撰写,pip 包版本号未做运行时验证,建议 pip install 后以实际版本为准。