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 流水线具备可观测性、可调试性,并可在不同的监控后端之间移植。
相关
- 项目
- 项目
- 项目
- 项目
- 项目