跳到主要内容

自动追踪

MLflow Tracing 已与各种 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
Agno Logo
Smolagents Logo
Groq Logo
Mistral Logo
Instructor Logo
Strands Agent SDK Logo
DeepSeek Logo
txtai Logo
Haystack Logo
Claude Code Logo

缺少您喜欢的库?

列表中缺少您喜欢的库?考虑为 MLflow Tracing 贡献代码或向我们的 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 Tracking 服务记录有关追踪的任何数据。

启用追踪(如果之前被临时禁用),mlflow.tracing.enable() API 将重新启用已仪器化的模型(在调用时)的追踪功能。

后续步骤

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

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

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

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