logfire
Pydantic 团队出品的 AI 可观测性平台,零侵入式埋点、全链路追踪、SQL 查询生产数据
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Pydantic 团队出品的 AI 可观测性平台,零侵入式埋点、全链路追踪、SQL 查询生产数据
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2024年,随着 ChatGPT 引发的 AI 应用浪潮涌向生产环境,一个长期被忽视的问题终于浮出水面:LLM 应用的调试和监控,远比传统软件复杂得多。
传统后端应用的 bug,开发者可以通过日志、堆栈trace、metrics 精确定位。但 LLM 应用呢?你只知道模型输出了错误结果,却无法判断是 prompt 没写好、context 窗口太小、RAG 检索到了错误文档,还是模型本身产生了幻觉。传统的 APM(应用性能监控)工具只能看到 HTTP 层,看不到 LLM 调用内部发生了什么。
正是在这样的背景下,Pydantic 团队——对,就是那个凭借 Pydantic 数据验证库深刻改变 Python 生态的团队——推出了了一款名为 Logfire 的可观测性平台。与 Pydantic 一脉相承的设计哲学是:让强大的工具也能简单易用。
图1:FastAPI 应用集成 Logfire 后的 trace 视图,可清晰看到请求链路中的各环节耗时与数据
Pydantic Logfire 由 Pydantic 团队开发维护,2024年4月正式开源其 Python SDK。截至2026年7月,GitHub 已收获超过 4300 颗星,fork 数超过 250,社区活跃度在同类 AI 可观测性工具中位居前列。 项目定位非常明确:既是一款通用 Python 可观测性工具(traces、metrics、logs),又是一款专为 AI 应用设计的 LLM 可观测性平台。这种"通用能力 + AI 专精"的双重定位,是 Logfire 与 LangSmith、Honeycomb 等竞品的核心差异。 团队背景方面,Pydantic 创始人 Samuel Colvin 亲自参与项目核心开发,团队成员还包括 Pydantic 核心贡献者 David Montague、Marcelo Trylesinski 等,代码质量有充分保障。项目采用 MIT 许可证,完全开源。
Logfire 的底层技术栈建立在 OpenTelemetry(OTel) 之上。这是一个由 CNCF 托管的可观测性框架标准,提供了 traces(调用链)、metrics(指标)和 logs(日志)的统一规范。 选择 OpenTelemetry 意味着 Logfire 天然具备以下优势:
从仓库结构来看,Logfire Python SDK 的代码组织非常清晰:
| 目录/文件 | 职责 |
|---|---|
logfire/__init__.py | 对外暴露的公共 API:logfire.configure()、logfire.span()、logfire.info() 等 |
logfire/_internal/main.py | 核心 Logfire 和 LogfireSpan 类实现 |
logfire/_internal/config.py | 配置管理:Token 认证、项目绑定 |
logfire/_internal/tracer.py | ProxyTracerProvider:负责创建 span、管理采样策略 |
logfire/_internal/metrics.py | ProxyMeterProvider:处理指标(counter、histogram、gauge) |
logfire/_internal/exporters/ | OTLP Exporter(发送到 Logfire 平台)、Console Exporter(本地调试)、Test Exporter(单元测试) |
logfire/_internal/auto_trace/ | AST 重写引擎,实现零侵入式自动埋点 |
logfire/integrations/ | 公共集成 API:FastAPI、Flask、SQLAlchemy、Redis、Pydantic 等 |
logfire-api/ | No-op shim 包,供第三方库间接依赖,避免冲突 |
这种分层架构确保了内部实现与公共 API 的清晰隔离,_internal/ 目录下的代码对外部不可见,体现了良好的封装性。 |
Logfire 的核心依赖非常精简:
opentelemetry-sdk >= 1.39.0
opentelemetry-exporter-otlp-proto-http >= 1.39.0
opentelemetry-instrumentation >= 0.41b0
rich >= 13.4.2
protobuf >= 4.23.4
typing-extensions >= 4.1.0
executing >= 2.0.1
仅需 Python 3.10 以上环境,无任何 C 扩展依赖,安装极为轻量。丰富的可选集成依赖(fastapi、flask、django、celery、redis、sqlalchemy 等)以 extras 方式按需安装。
对于 Python 开发者来说,Logfire 的上手体验令人惊喜:
import logfire
logfire.configure() # 只需一行,自动完成所有初始化
logfire.info('服务已启动,端口 {port}', port=8080)
配合自动埋点,甚至可以完全不需要手动写 span:
from fastapi import FastAPI
import logfire
app = FastAPI()
logfire.configure()
logfire.instrument_fastapi(app) # 自动追踪所有请求、响应、数据库查询
这种"配置即接入"的设计,让团队可以在零代码改动的前提下获得完整的可观测性能力。
这是 Logfire 区别于通用 APM 工具的核心价值所在。Logfire 的 AI 观测能力包括:
图2:Pydantic 模型验证的自动埋点,可清晰看到各字段的校验结果Logfire 平台的一个独特之处在于所有观测数据均可通过 SQL 查询。用户可以直接用标准 SQL 语句检索 span、metrics、logs:
import logfire
logfire.configure()
results = logfire.query_sql(
"SELECT span_name, duration_ms, attributes['user_id'] AS user_id "
"FROM spans WHERE start_time > NOW() - INTERVAL '1 hour' "
"ORDER BY duration_ms DESC LIMIT 10"
)
这一设计使 Logfire 不仅是一个可视化工具,更是一个数据平台,用户可以用任意 BI 工具或 Python 库连接查询,灵活度远超预设 Dashboard 的封闭系统。
Logfire 还提供了 MCP(Model Context Protocol)Server,这意味着 AI 编码助手可以直接向 Logfire 发起 SQL 查询,获取生产环境中的真实 trace 数据。用户可以用自然语言向 AI 助手提问生产问题,AI 助手将直接生成并执行 SQL 查询,返回分析结果。这是真正"面向 AI 的可观测性"设计。
pip install logfire # 安装 SDK
logfire auth # 命令行认证,获取项目 Token
logfire auth 命令会引导用户完成 Logfire 平台的注册和项目创建,并将 Token 自动写入本地配置文件。SDK 读取 Token 后,自动将数据推送到对应项目。
值得特别说明的是:Logfire SDK 开源,但 Logfire 平台服务闭源。
logfire Python 包):MIT 许可证,完全开源Logfire 与 Pydantic 团队另一款产品 Pydantic AI(AI Agent 开发框架)天然集成。两者结合使用时,Logfire 可以自动捕获 Agent 的推理过程、tool call、最终输出,形成完整的 Agent 执行链路视图。这对于调试复杂 Agent 逻辑、评估不同 prompt 效果非常有价值。
从 Pydantic 官网公开的案例来看,已有多个生产环境落地案例:
Logfire 的代码质量管控非常严格:
pytest + @pytest.mark.anyio 进行异步测试;关键测试使用 inline-snapshot 自动更新断言基准值;涉及网络交互的测试使用 pytest-recording(VCR 模式)录制并回放 HTTP 交互,确保测试稳定性和速度.pre-commit-config.yaml 配置了自动化的格式化、lint 和类型检查
从 uv.lock 文件可见项目使用 uv 作为包管理器(Astral 出品的极速 Python 包管理器),而非传统的 pip/poetry,这是当前 Python 生态的前沿实践。尽管 Logfire 展现了诸多优势,也有一些不可回避的限制:
图3:Logfire 平台内置的 SQL 查询界面,支持对 trace 和 metrics 数据进行自由查询Pydantic Logfire 由 Pydantic 团队开发维护,Python SDK 采用 MIT 许可证开源。平台服务为 SaaS 模式,提供免费入门额度。