Arize-ai/openinference

OpenTelemetry Instrumentation for AI Observability

什么是 OpenInference?

OpenInference 是一套标准和现成的插件,让您可以为任何 AI/LLM 应用程序添加 OpenTelemetry 风格的追踪功能。它定义了一项规范(一系列 markdown 文件),描述如何记录提示词流程、模型调用、向量数据库检索、工具使用等。该规范与格式无关,因此您可以将数据以 JSON、protobuf、DataFrames 或任何其他传输格式发送。

为何它很重要

  • LLM 应用程序的可观测性 – 正如 OpenTelemetry 让您深入了解微服务的延迟与错误,OpenInference 让您能洞察生成式 AI 流水线中的隐藏步骤(提示词构建、检索、工具调用、模型响应)。
  • 供应商中立 – 该规范适用于任何兼容 OpenTelemetry 的后端(例如 Jaeger、Prometheus、Grafana),并已内置于 Arize 的产品(Phoenix、AX)中,但也可在其他地方使用。
  • 广泛的语言支持 – 仓库提供了大量针对热门 LLM 框架与服务(OpenAI、Anthropic、LangChain、LlamaIndex、Bedrock、VertexAI 等)的 Python 检测包。

核心组件

组件 功能 使用方式
规范 (/spec) 定义追踪 LLM 调用、检索、工具使用等的语义惯例。 发送追踪数据时遵循 markdown 规范;库可为您自动生成。
语义惯例库 (openinference-semantic-conventions) 提供追踪负载应包含的常量名称与属性定义。 在您的检测代码中导入这些常量以确保合规。
检测工具 (openinference-instrumentation) 简化现有代码封装的辅助函数、装饰器与配置对象。 在您的 LLM 客户端调用周围加入装饰器或调用辅助函数。
框架专属插件 (例如 openinference-instrumentation-openai, ‑langchain, ‑llama-index, ‑anthropic, …) 自动检测热门 SDK,无需手动编写样板代码即可追踪每个请求/响应。 安装与您使用的 SDK 相符的包;它会在导入时自动修补 SDK。

入门指南 (Python 示例)

# 安装核心惯例与您所使用 SDK 的插件
pip install openinference-semantic-conventions openinference-instrumentation-openai
from openinference.instrumentation.openai import OpenAIInstrumentor
from openai import OpenAI

# 启用自动追踪
OpenAIInstrumentor().instrument()

client = OpenAI()
# 此调用现在将产生遵循 OpenInference 规范的 OpenTelemetry spans
response = client.chat.completions.create(model="gpt-4", messages=[{"role": "user", "content": "Hello"}])

产生的 spans 可以发送到任何 OpenTelemetry 收集器(例如 Jaeger、Zipkin)并在仪表板中可视化,让您掌握延迟、错误率、Token 使用量以及 LLM 工作流程的全貌。

谁应该使用它?

  • ML 工程师与数据科学家:正在构建生产级 LLM 服务并需要监控与调试的人员。
  • DevOps / SRE 团队:已经在使用 OpenTelemetry 并希望将可观测性扩展到 AI 工作负载的团队。
  • 产品团队:希望审计使用情况、检测异常或衡量不同模型供应商性能的团队。

TL;DR – OpenInference 是一项社区驱动的规范,加上丰富的 Python 插件生态系统,为生成式 AI 应用程序带来 OpenTelemetry 风格的追踪功能,使 LLM 流水线具备可观测性、可调试性,并可在不同的监控后端之间移植。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目