MLflow Tracing:GenAI 的可观测性
GenAI 提供者和框架通常会返回复杂且难以读取的数据结构,或者返回隐藏了中间步骤的简单响应。此外,长期跟踪和比较 GenAI 模型/框架调用可能很困难,尤其是在框架和脚本之间切换时。
MLflow 的 LLM 跟踪功能 通过记录您的所有 GenAI 调用(包括单个 LLM 调用和多步骤代理工作流程)并提供易于阅读的界面供您浏览和比较它们来解决这些问题。您只需一行代码即可为大多数 GenAI 提供者启用此功能:mlflow.<provider>.autolog()
。
这篇博客将展示如何快速(大约五分钟)开始使用 MLflow 跟踪功能。它假设您对 GenAI API(例如 OpenAI API)有一定了解,但不假设您之前熟悉 MLflow。

快速入门
我们将首先展示如何使用 MLflow autologging 自动跟踪对 OpenAI 模型的调用,尽管 MLflow 支持自动跟踪 越来越多的提供者和框架,包括 Anthropic、Ollama、Langchain、LlamaIndex 以及许多其他提供者和框架。要开始使用,请通过以下方式安装 MLflow 和 OpenAI Python 包:
pip install mlflow openai
使用 Autologging 收集跟踪记录
在 Python 脚本或笔记本中,导入 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 将捕获您的模型调用的跟踪记录。例如,由于我们已启用 autologging,MLflow 将记录以下 OpenAI 调用的跟踪记录。
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 跟踪记录
MLflow UI 提供了一个 AI 可观测性仪表板,用于查看您的跟踪记录。从您的终端使用以下命令启动 MLflow UI:
mlflow ui
导航到 UI。mlflow ui
命令的输出将告诉您访问地址(默认情况下是 http://localhost:5000
)。在 UI 中,导航到“Traces”选项卡。这将列出所有收集到的跟踪记录。点击跟踪记录的 Trace ID 以在新窗格中打开更多详细信息。
默认情况下,MLflow 服务器将在 http://localhost:5000
监听。您可以使用 mlflow ui -p <port>
选择不同的端口。例如,要在端口 5001 监听,请使用 mlflow ui -p 5001
。
使用 mlflow ui
启动 MLflow 跟踪服务器还可以让您 直接在 Jupyter 笔记本中查看跟踪记录!您只需将跟踪 URI 设置为上面指定的地址即可
mlflow.set_tracking_uri("http://localhost:5000")
然后,当您调用启用了跟踪的 AI 模型/框架时,生成的跟踪记录将直接出现在笔记本输出中。
您可以使用 mlflow.tracing.disable_notebook_display()
禁用此功能。
组织您的跟踪记录
如果您在多个不同项目和任务中使用跟踪功能,您可能希望将跟踪记录组织到不同的组中。
组织您的跟踪记录的最简单方法是将它们分成 实验(experiments)。每个实验都有自己的跟踪记录选项卡,用于显示该实验的跟踪记录。
您可以在 UI 中(通过“Experiments”旁边的“+”按钮)、使用 MLflow CLI 或使用 Python 创建实验。让我们创建一个名为“Quickstart”的新实验并记录一个跟踪记录。
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”选项卡中找到此跟踪记录。
set_experiment
函数指定跟踪记录应记录到哪个实验,如果实验不存在则创建它,因此上面的代码片段创建了一个新的“quickstart”实验。
您还可以使用 标签(tags) 和 运行(runs) 组织您的跟踪记录。
跟踪其他提供者
我们的快速入门示例侧重于 OpenAI,但 MLflow 支持自动跟踪 许多不同的 AI 提供者和框架。方法是相同的:只需将 mlflow.<provider>.autolog
这行代码添加到您的笔记本或脚本中。
以下是一些示例。查看 此处 获取支持的提供者完整列表。
- Anthropic
- LangChain
- Ollama
使用 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 中返回以下内容
使用 mlflow.langchain.autolog()
为 LangChain 和 LangGraph 启用自动跟踪。MLflow 自动跟踪捕获所有 LangChain 组件的执行,包括链(chains)、LLM、代理(agents)、工具(tools)、提示(prompts)和检索器(retrievers)。
import mlflow
from langchain.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
mlflow.set_experiment("quickstart")
mlflow.langchain.autolog()
llm = ChatOpenAI(model="gpt-4o-mini", temperature=1, max_tokens=500)
prompt_template = PromptTemplate.from_template(
"Explain the following MLflow concept at the specified technical level. "
"For 'beginner', use simple analogies and avoid complex terms. "
"For 'intermediate', include more technical details and some code examples. "
"For 'advanced', go deep into implementation details and provide comprehensive explanations. "
"Technical level: {level}. Question: {question}"
)
chain = prompt_template | llm | StrOutputParser()
chain.invoke(
{
"level": "beginner",
"question": "How do MLflow tracking servers help with experiment management?",
}
)
此示例 LangChain 链包含多个组件:
PromptTemplate
,根据用户输入组装提示ChatOpenAI
模型,用于调用 OpenAI 的gpt-4o-mini
模型StrOutputParser
,它将用户的最终答案以字符串形式返回
我们可以在 MLflow UI 中看到所有这些组件,它们嵌套在父级 RunnableSequence
链下。
Ollama 是一个用于在本地运行开源 AI 模型的工具。您可以通过 Ollama 的 与 OpenAI 兼容的 API 以及 MLflow 的 OpenAI autologging 来启用 Ollama 模型的自动跟踪。您只需将基础 URL 设置为您的 Ollama REST 端点即可。
此模式应适用于任何提供与 OpenAI 兼容的端点的提供者,即使文档中未明确提及这些提供者。
以下是它如何应用于 Ollama 的:
- 首先,使用您所需的模型运行 Ollama 服务器。
ollama run phi3:latest
- 配置 OpenAI 客户端,将
base_url
设置为 Ollama 与 OpenAI 兼容的端点。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1", # The local Ollama REST endpoint
api_key="dummy", # Required to instantiate OpenAI client, it can be a random string
)
- 启用 MLflow OpenAI autologging 并查询模型:
mlflow.openai.autolog()
completion = client.chat.completions.create(
model="phi3:latest",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is an MLflow tracking server?"}
]
)
这是 MLflow UI 中 Ollama 模型调用的跟踪记录。
结论:一行代码实现高效的 LLM 跟踪
在本指南中,您学习了如何使用 MLflow 的 autologging 功能,通过一行代码即可获得一个完整的 AI 可观测性解决方案。如果您正在使用 许多 GenAI 框架/提供者 中的一个,MLflow 为其提供了自动跟踪功能(包括任何带有 OpenAI 兼容端点的提供者),那么自动日志记录是可视化和调试您的 AI 应用行为的最简单方法。您所需要的仅仅是 mlflow.<provider>.autolog()
。
后续步骤
Autologging 是开始使用 MLflow 跟踪功能的绝佳起点,但随着您开发更复杂的 GenAI 应用,您可能需要更灵活地收集和使用跟踪记录。此外,MLflow 还包含许多用于处理 GenAI 应用的工具,这些工具不仅仅是跟踪功能。
- 要深入了解跟踪概念,请阅读 此指南 关于跟踪概念的内容。
- MLflow 跟踪记录可以为评估、SME 评审、微调等提供极好的数据源。在此处 了解 如何搜索和检索跟踪数据。
- MLflow 提供 LLM 评估功能,用于使用您的 AI 模型和应用进行结构化实验。
- 您可以使用跟踪 Fluent API 和 客户端 API 将跟踪添加到您自己的 AI 应用中。您还可以 向尚不(或尚未)支持 autologging 的库和框架添加跟踪功能。