跳到主要内容

实用的 AI 可观测性:MLflow 追踪入门

·7分钟阅读
Daniel Liden
Databricks 开发者布道师

MLflow Tracing:为 GenAI 提供可观测性

GenAI 提供商和框架的响应通常是复杂且难以阅读的数据结构,或者是隐藏了中间步骤的简单响应。此外,随着时间的推移,跟踪和比较 GenAI 模型/框架的调用可能很困难,尤其是在不同框架和脚本之间切换时。

MLflow 的 LLM tracing 通过记录你所有的 GenAI 调用(包括单个 LLM 调用和多步代理工作流),并提供一个易于阅读的界面来浏览和比较它们,从而解决了这些问题。你只需一行代码即可为大多数 GenAI 提供商启用此功能:mlflow.<provider>.autolog()

本博客将展示如何在大约五分钟内开始使用 MLflow tracing。本文假设你对 GenAI API(例如 OpenAI API)有一定的了解,但不需要任何 MLflow 的先验知识。

Alt text
使用 MLflow Tracing 跟踪 LangChain 应用

快速入门

我们将首先展示如何使用 MLflow 自动日志记录(autologging)来自动跟踪对 OpenAI 模型的调用,尽管 MLflow 支持对越来越多的提供商和框架进行自动跟踪,包括 Anthropic、Ollama、Langchain、LlamaIndex 等等。首先,请使用以下命令安装 MLflow 和 OpenAI Python 包:

pip install mlflow openai

使用自动日志记录收集 Trace

在 Python 脚本或 notebook 中,导入 MLflow 和你正在使用的 GenAI 提供商,并使用 mlflow.<provider>.autolog 启用跟踪。以下是如何为 OpenAI 设置自动跟踪的方法:

import mlflow
from openai import OpenAI

mlflow.openai.autolog()

请确保创建并设置您的 OpenAI API 密钥!您可以在您的环境中通过以下方式设置它:

export OPENAI_API_KEY="your_api_key_here"

现在,当您使用 OpenAI 库时,MLflow 将捕获您模型调用的 trace。例如,由于我们已启用自动日志记录,MLflow 将记录以下 OpenAI 调用的 trace。

client = OpenAI()

completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": "What is an MLflow tracking server?"
}
]
)

查看您的 LLM Trace

MLflow UI 提供了一个 AI 可观测性仪表板,用于查看您的 trace。在终端中使用以下命令启动 MLflow UI:

mlflow ui

导航至 UI。mlflow ui 命令的输出会告诉您访问地址(默认为 https://:5000)。在 UI 中,导航至“Traces”选项卡。这里会列出所有收集到的 trace。点击一个 trace 的 Trace ID,会打开一个新的窗格显示更多详情。

Traces in the MLflow UI

提示

默认情况下,MLflow 服务器将在 https://:5000 上监听。您可以使用 mlflow ui -p <port> 选择一个不同的端口。例如,要在端口 5001 上监听,请使用 mlflow ui -p 5001

使用 mlflow ui 启动 MLflow 跟踪服务器还使您能够直接在 Jupyter notebook 中查看 trace!您只需将跟踪 URI 设置为上述指定的位置即可:

mlflow.set_tracking_uri("https://:5000")

然后,当您调用启用了跟踪的 AI 模型/框架时,生成的 trace 将直接显示在 notebook 的输出中。

Tracing in Jupyter Notebooks

您可以使用 mlflow.tracing.disable_notebook_display() 来禁用此功能。

组织您的 Trace

如果您在多个不同的项目和任务中使用跟踪,您可能希望将 trace 组织成不同的组。

组织 trace 的最简单方法是将它们分成实验 (experiments)。每个实验都有自己的 trace 选项卡,显示该实验的 trace。

您可以在 UI 中(通过“Experiments”旁边的“+”按钮)、使用 MLflow CLI 或通过 Python 创建一个实验。让我们创建一个名为“Quickstart”的新实验并记录一个 trace。

mlflow.set_experiment("quickstart")

completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": "What is an MLflow tracking server?"
}
]
)

我们现在可以在“quickstart”实验的“Traces”选项卡中找到这个 trace。

Trace in Experiment

set_experiment 函数指定了 trace 应该记录到哪个实验,如果实验不存在则会创建它,因此上面的代码片段创建了一个新的“quickstart”实验。

您还可以使用标签 (tags)运行 (runs)来组织您的 trace。

跟踪其他提供商

我们的快速入门示例侧重于 OpenAI,但 MLflow 支持对许多不同的 AI 提供商和框架进行自动跟踪。方法是相同的:只需在您的 notebook 或脚本中添加一行 mlflow.<provider>.autolog

以下是一些示例。请参阅此处查看支持的提供商完整列表。

使用 mlflow.anthropic.autolog() 为 Anthropic 模型调用启用自动跟踪。

import anthropic
import mlflow

mlflow.anthropic.autolog()

client = anthropic.Anthropic()

message = client.messages.create(
model="claude-3-7-sonnet-20250219",
max_tokens=1000,
temperature=1,
messages=[
{
"role": "user",
"content": "What is an MLflow tracking server?"
}
]
)

这将在 MLflow UI 中返回以下内容

Anthropic tracing

结论:一行代码实现高效的 LLM 跟踪

在本指南中,您学习了如何使用 MLflow 的自动日志记录功能,仅用一行代码即可获得完整的 AI 可观测性解决方案。如果您正在使用 MLflow 提供自动跟踪的众多 GenAI 框架/提供商之一——包括任何具有 OpenAI 兼容端点的提供商——自动日志记录是可视化和调试 AI 应用程序行为的最简单方法。您只需要 mlflow.<provider>.autolog()

后续步骤

自动日志记录是开始使用 MLflow 跟踪的一个很好的起点,但随着您开发更复杂的 GenAI 应用程序,您可能需要在收集和使用 trace 方面具有更大的灵活性。此外,除了跟踪之外,MLflow 还包含许多用于处理 GenAI 应用程序的工具。