模型 / 数据集
traceloop/openllmetry avatar
traceloop/openllmetry

OpenLLMetry:用 OpenTelemetry 标准给你的 LLM 应用上探针

Open-source observability for your GenAI or LLM application, based on OpenTelemetry

7,430 个 Star1,078 个 ForkPythonApache-2.0

秒懂

它是什么?
OpenLLMetry 是一组基于 OpenTelemetry 的 Python 扩展,用于给 LLM 应用和向量数据库调用生成标准 trace。它把可观测性数据输出为通用格式,能接入 Datadog、Honeycomb 等现有后端,但需要你自己权衡 SDK 与裸 instrumentations 的选择。
适合谁用?
如果你的团队已经在用 OpenTelemetry,并且希望 LLM 调用(如 OpenAI、Anthropic)的追踪数据能流入现有监控后端,OpenLLMetry 是值得考虑的选择。它适合那些不想被专有厂商锁定、需要标准 trace 格式的 Python 服务。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 37 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么:LLM 调用链路里的黑盒

传统监控工具能看数据库查询和 API 延迟,但面对 LLM 应用时往往抓瞎。一次 OpenAI 调用内部发生了什么,prompt 是什么,token 消耗多少,向量检索返回了什么,这些信息不会自动出现在标准日志里。OpenLLMetry 的目标就是把这些内容变成 OpenTelemetry 的 span,让 LLM 应用的调用链跟普通服务一样可以追踪。它的目标用户是已经在用或打算用 OpenTelemetry 的 Python 开发者,尤其是那些同时调用多个模型提供商和向量数据库的应用。它的定位不是做一个独立的监控面板,而是数据采集层,输出标准格式,由你选择后端去存储和展示。

工作机制:标准 OTel 之上的自定义 instrumentations

OpenLLMetry 的仓库包含两类东西。一类是标准 OpenTelemetry instrumentations,覆盖 LLM 提供商和向量数据库,比如 OpenAI、Anthropic、Bedrock,以及 Chroma、Pinecone、Qdrant 和 Weaviate。另一类是 Traceloop SDK,它封装了这些 instrumentations,让你用两行代码启动追踪。关键点在于,SDK 输出的仍然是标准 OpenTelemetry 数据,不是私有格式。这意味着你可以在已有 OTel instrumented 的应用里只添加单个 instrumentation,而不必引入整个 SDK。README 明确说,如果你已经有 OpenTelemetry,可以直接加任何 instrumentation。这种模块化设计让 OpenLLMetry 既能作为全家桶使用,也能按需摘取。

快速启动:两行代码与一个 batch 选项

安装和初始化非常简单。用 pip 安装 SDK:pip install traceloop-sdk。然后在代码里加入两行:from traceloop.sdk import Traceloop,然后调用 Traceloop.init()。这之后,你的 LLM 调用就会生成 trace。如果你在本地调试,想立刻看到 span 而不是等批处理发送,可以传参 disable_batch=True,像这样:Traceloop.init(disable_batch=True)。这个参数很实用,因为默认的批处理发送会延迟数据上报,本地开发时容易让人误以为没生效。文档还提到,你可以通过环境变量或代码配置导出目标,例如连接到 OpenTelemetry Collector、Datadog 或 Honeycomb。具体导出配置需要查阅各集成页面的说明,README 只给出了列表和链接。

支持的目标与集成范围:列表很长,但注意边界

README 列出了一大串支持且经过测试的导出目的地,从 Traceloop 自家服务到 Datadog、Honeycomb、New Relic、Sentry 等,总数超过二十个。这看起来覆盖面很广,但要注意两点。第一,这些是导出目标,也就是 trace 数据可以发往哪里,不是说你自动就能获得这些平台的完整 LLM 可视化功能,具体效果取决于平台如何解析 OTel 语义约定。第二,instrumentations 的覆盖范围是有限的,README 明确列出的提供商包括 Aleph Alpha、Anthropic、Bedrock,但列表被截断了,你无法从这份材料确认是否支持你用的每一个模型。如果你的提供商不在列表里,你可能需要自己写 instrumentation,或者等待社区贡献。另外,向量数据库的支持也集中在几个主流选项,小众数据库未必覆盖。

一个真正的局限:标准与便利之间的拉扯

OpenLLMetry 的卖点是基于 OpenTelemetry,但这也带来一个现实问题。OpenTelemetry 的通用 trace 模型并不天然了解 LLM 特有的概念,比如 prompt、completion、token 用量、embedding 向量。OpenLLMetry 需要把这些信息编码成 span 属性和事件,而不同后端对这些属性的渲染方式各不相同。README 提到,其语义约定已经贡献给 OpenTelemetry 社区,正在讨论中,这说明标准尚未完全固化。这意味着,如果你依赖某个后端对 LLM span 的特定展示,升级 OpenLLMetry 或 OpenTelemetry 版本时,属性名或结构可能会变化,导致可视化面板出现不一致。这是一个需要接受的权衡:标准格式让你不被厂商锁定,但也意味着你不会得到像专有 SDK 那样为 LLM 优化的开箱即用体验。

替代方案:Langfuse 与裸 OTel 的区别

如果你不需要标准 OTel 输出,Langfuse 是一个常见的替代选择。Langfuse 提供自己的 SDK 和托管后端,专门为 LLM 应用设计了 trace 视图、评估和 prompt 管理,开箱即用,不需要自己搭 Collector 或配置导出。但代价是数据格式是 Langfuse 私有的,迁移到其他工具时需要额外工作。另一个极端是直接用 OpenTelemetry 的 Python 贡献库,但那些库不包含 LLM 特定的语义,你可能要自己写 span 装饰器。OpenLLMetry 正好站在中间:它给你 LLM 相关的 instrumentations,同时保持标准输出。如果你的团队已经有 OTel 基础设施,OpenLLMetry 比 Langfuse 更顺滑;如果你从零开始且只关心 LLM,Langfuse 可能更快见到效果。

维护与许可:活跃但依赖单一厂商

仓库的最近推送是 2026 年 8 月,版本号 0.62.3,说明迭代很频繁。版本号停留在 0.x,意味着 API 可能还没到稳定状态,升级时需要注意 breaking changes。许可协议是 Apache-2.0,这是宽松许可,允许商用、修改和再分发,只要保留版权声明。不过,项目由 Traceloop 公司维护,而 Traceloop 同时提供商业托管服务。这种模式在开源项目里很常见,但你需要留意:开源版本的功能是否会被商业版区别对待,以及社区 PR 的接纳速度。从 README 看,项目欢迎 PR,也有 Slack 社区,但维护方向大概率由 Traceloop 的商业需求主导。如果你对厂商中立有硬性要求,可能需要自己 fork 并维护。

编辑结论

如果你的团队已经在用 OpenTelemetry,并且希望 LLM 调用(如 OpenAI、Anthropic)的追踪数据能流入现有监控后端,OpenLLMetry 是值得考虑的选择。它适合那些不想被专有厂商锁定、需要标准 trace 格式的 Python 服务。但如果你只需要一个快速可视化面板,不关心标准格式,直接使用 Traceloop 的托管服务或 Langfuse 这类一体化工具会更省事。在采用前,先确认你要用的模型提供商和向量数据库是否在支持列表内(例如 Aleph Alpha、Bedrock 等),并检查你现有的 OpenTelemetry Collector 配置能否接收新增的 span 属性。另外,注意该项目由 Traceloop 维护,其商业产品与开源 SDK 共用同一代码库,你需要评估对厂商的依赖程度,但 Apache-2.0 许可允许你自由分支和修改。

官方来源

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. traceloop/openllmetry on GitHub
社区笔记

社区笔记