调试和监控
使用LLMs的应用程序面临一些众所周知且易于理解的挑战:LLMs是慢、不可靠和昂贵的。
这些应用程序也面临一些大多数开发人员很少遇到的挑战:LLMs 是 反复无常 和 非确定性的。提示中的细微变化可以完全改变模型的性能,并且没有 EXPLAIN 查询可以让你理解原因。
警告
从软件工程师的角度来看,你可以把LLMs想象成你听说过的最糟糕的数据库,但更糟糕。
如果大型语言模型不是那么有用,我们永远不会接触它们。
为了使用LLM构建成功的应用程序,我们需要新工具来理解模型性能和依赖于它们的应用程序的行为。
仅仅让您了解您的模型表现如何的LLM可观测性工具是没用的:对LLM发起API调用很简单,将其构建到应用程序中才是困难的。
Pydantic 日志火焰
Pydantic Logfire 是一个由创建和维护 Pydantic 和 PydanticAI 的团队开发的可观察性平台。Logfire 旨在让您了解整个应用程序:生成 AI、经典预测 AI、HTTP 流量、数据库查询以及现代应用程序所需的其他一切。
Pydantic Logfire是一个商业产品
Logfire 是一个商业支持的托管平台,提供极为慷慨和永久的 免费层。您可以在几分钟内注册并开始使用 Logfire。
PydanticAI内置了对Logfire的支持(但这是可选的),通过logfire-api无操作包提供。
这意味着如果安装并配置了 logfire 包,则关于代理运行的详细信息将被发送到 Logfire。但如果 logfire 包未安装,则几乎没有开销,也不会发送任何信息。
以下是一个示例,显示在Logfire中运行天气代理的详细信息:
使用 Logfire
要使用 logfire,您需要一个 logfire 账户,并且安装 logfire:
pip install 'pydantic-ai[logfire]'
uv add 'pydantic-ai[logfire]'
然后使用logfire验证您的本地环境:
logfire auth
uv run logfire auth
并配置一个项目以发送数据到:
logfire projects new
uv run logfire projects new
(或使用现有项目,使用 logfire projects use)
最后一步是将logfire添加到您的代码中:
import logfire
logfire.configure()
logfire 文档提供了关于如何使用 logfire 的更多细节,包括如何为其他库进行插桩,如 Pydantic、HTTPX 和 FastAPI。
由于Logfire构建在OpenTelemetry上,您可以使用Logfire Python SDK将数据发送到任何OpenTelemetry收集器。
一旦您设置好logfire,它可以通过两种主要方式帮助您了解您的应用程序:
- 调试 — 使用实时视图查看您的应用程序中发生的事情。
- 监控 — 使用SQL和仪表板观察您的应用程序的行为,Logfire实际上是一个SQL数据库,存储有关您的应用程序运行方式的信息。
调试
为了演示Logfire如何让您可视化PydanticAI运行的流程,这里是您在运行聊天应用示例时从Logfire获得的视图:
监控性能
我们还可以在Logfire中使用SQL查询数据,以监控应用程序的性能。以下是使用Logfire监控PydanticAI在Logfire内部运行的真实示例:
监控HTTPX请求
为了监控模型发出的HTTPX请求,您可以使用 logfire 的 HTTPX 集成。
仪表化只需将以下三行添加到您的应用程序中:
import logfire
logfire.configure()
logfire.instrument_httpx(capture_all=True) # (1)!
- 请查看logfire docs获取更多
httpx仪器细节。
特别是,这可以帮助您追踪特定的请求、响应和头部信息:
import logfire
from pydantic_ai import Agent
logfire.configure()
logfire.instrument_httpx(capture_all=True) # (1)!
agent = Agent('openai:gpt-4o')
result = agent.run_sync('What is the capital of France?')
print(result.data)
#> The capital of France is Paris.
- 捕获所有的头信息,请求体和响应体。
提示
httpx 插桩可能特别有用,如果您在模型中使用自定义 httpx 客户端,以便获取自定义请求的洞察。



