跳到主要内容

自动追踪

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

支持的集成

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

LangChain Logo
LangGraph Logo
OpenAI Agent Logo
DSPy Logo
PydanticAI Logo
Google ADK Logo
Microsoft Agent Framework Logo
CrewAI Logo
LlamaIndex Logo
AutoGen Logo
Strands Agent SDK Logo
Agno Logo
Smolagents Logo
Semantic Kernel Logo
AG2 Logo
Haystack Logo
Instructor Logo
txtai Logo
OpenAI Logo
Anthropic Logo
Bedrock Logo
Gemini Logo
Ollama Logo
Groq Logo
Mistral Logo
FireworksAI Logo
DeepSeek Logo
LiteLLM Logo
Claude Code Logo

缺少您喜欢的库?

您喜欢的库是否不在列表中?请考虑为 MLflow Tracing 做出贡献或在我们的 Github 存储库中提交功能请求

高级用法

结合手动和自动跟踪

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

  1. 🔄复杂的流程,涉及多个 LLM 调用
  2. 🤖多代理系统,其中不同的代理使用不同的 LLM 提供商
  3. 🔗链接多个 LLM 调用,中间包含自定义逻辑

这是一个将 OpenAI 自动跟踪与手动定义的 span 结合的简单示例

python
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?")

运行此代码会生成一个单一跟踪,该跟踪结合了手动 span 和自动 OpenAI 跟踪。

多框架示例

您还可以将不同的 LLM 提供商组合在一个跟踪中。例如:

注意

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

bash
pip install --upgrade langchain langchain-openai
python
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 中浏览和分析您的跟踪

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