自动追踪
MLflow Tracing 集成了各种 GenAI 库,并为每个库(以及它们的组合!)提供了单行自动跟踪体验。本页将展示将 MLflow 与流行的 GenAI 库集成的详细示例。
支持的集成
每种集成都会根据您对创作框架/SDK 的实现,自动捕获您应用程序的逻辑和中间步骤。点击您库的徽标,即可查看详细的集成指南。
缺少您喜欢的库?
您喜欢的库是否不在列表中?请考虑为 MLflow Tracing 做出贡献或在我们的 Github 存储库中提交功能请求。
高级用法
结合手动和自动跟踪
@mlflow.trace 装饰器可以与自动跟踪结合使用,以创建强大、集成的跟踪。这对于以下情况特别有用:
- 🔄复杂的流程,涉及多个 LLM 调用
- 🤖多代理系统,其中不同的代理使用不同的 LLM 提供商
- 🔗链接多个 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 中浏览和分析您的跟踪
查询跟踪:以编程方式搜索和检索跟踪数据以进行分析






















