跳到主要内容

自动追踪

MLflow 追踪与各种 GenAI 库集成,为每个库(以及它们的组合!)提供了一行代码自动追踪体验。本页展示了将 MLflow 与流行 GenAI 库集成的详细示例。

Tracing Gateway Video

支持的集成

每个集成都会根据您对创作框架/SDK 的实现,自动捕获您的应用程序逻辑和中间步骤。点击您库的标志以查看详细的集成指南。

OpenAI Logo
LangChain Logo
LangGraph Logo
LlamaIndex Logo
Anthropic Logo
DSPy Logo
Bedrock Logo
Semantic Kernel Logo
AutoGen Logo
AG2 Logo
Gemini Logo
LiteLLM Logo
CrewAI Logo
OpenAI Agent Logo
Ollama Logo
PydanticAI Logo
Smolagents Logo
Groq Logo
Mistral Logo
Instructor Logo
OpenAI Swarm Logo
DeepSeek Logo
txtai Logo

缺少您最喜欢的库?

列表中缺少您最喜欢的库?考虑为 MLflow 追踪贡献向我们的 Github 仓库提交功能请求

高级用法

结合手动和自动追踪

@mlflow.trace 装饰器可以与自动追踪结合使用,以创建强大的集成追踪。这对于以下情况特别有用:

  1. 🔄 复杂工作流涉及多个 LLM 调用
  2. 🤖 多智能体系统,其中不同智能体使用不同的 LLM 提供商
  3. 🔗 将多个 LLM 调用链式连接,并在它们之间加入自定义逻辑

这是一个结合 OpenAI 自动追踪和手动定义跨度的简单示例

import mlflow
import openai
from mlflow.entities import SpanType

mlflow.openai.autolog()


@mlflow.trace(span_type=SpanType.CHAIN)
def run(question):
messages = build_messages(question)
# MLflow automatically generates a span for OpenAI invocation
response = openai.OpenAI().chat.completions.create(
model="gpt-4o-mini",
max_tokens=100,
messages=messages,
)
return parse_response(response)


@mlflow.trace
def build_messages(question):
return [
{"role": "system", "content": "You are a helpful chatbot."},
{"role": "user", "content": question},
]


@mlflow.trace
def parse_response(response):
return response.choices[0].message.content


run("What is MLflow?")

运行此代码会生成一个结合了手动跨度和 OpenAI 自动追踪的单一追踪。

多框架示例

您还可以在单个追踪中结合不同的 LLM 提供商。例如

注意

此示例除了基本要求外,还需要安装 LangChain

pip install --upgrade langchain langchain-openai
import mlflow
import openai
from mlflow.entities import SpanType
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

# Enable auto-tracing for both OpenAI and LangChain
mlflow.openai.autolog()
mlflow.langchain.autolog()


@mlflow.trace(span_type=SpanType.CHAIN)
def multi_provider_workflow(query: str):
# First, use OpenAI directly for initial processing
analysis = openai.OpenAI().chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "Analyze the query and extract key topics."},
{"role": "user", "content": query},
],
)
topics = analysis.choices[0].message.content

# Then use LangChain for structured processing
llm = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_template(
"Based on these topics: {topics}\nGenerate a detailed response to: {query}"
)
chain = prompt | llm
response = chain.invoke({"topics": topics, "query": query})

return response


# Run the function
result = multi_provider_workflow("Explain quantum computing")

禁用追踪

禁用追踪,mlflow.tracing.disable() API 将停止从 MLflow 内部收集追踪数据,并且不会将任何有关追踪的数据记录到 MLflow 追踪服务。

启用追踪(如果曾暂时禁用),mlflow.tracing.enable() API 将重新启用已调用的已检测模型的追踪功能。

后续步骤

手动追踪:了解如何向您的应用程序逻辑添加自定义追踪

集成指南:探索特定库和框架的详细指南

查看追踪:了解如何在 MLflow UI 中探索和分析您的追踪

查询追踪:以编程方式搜索和检索追踪数据以进行分析