自动追踪
MLflow Tracing 与各种 GenAI 库集成,并为每个库(以及它们的组合!)提供一行的自动追踪体验。 此页面显示了将 MLflow 与流行的 GenAI 库集成的详细示例。
支持的集成
每个集成都会根据您对创作框架/SDK 的实现,自动捕获您的应用程序逻辑和中间步骤。 单击您的库的徽标以查看详细的集成指南。
以下是一些最流行的集成的快速入门示例。 请记住为您打算使用的每个库安装必要的软件包(例如,pip install openai langchain langgraph anthropic dspy
)。
结合手动和自动追踪
@mlflow.trace
装饰器可以与自动追踪结合使用,以创建强大的集成追踪。 这对于以下情况特别有用:
- 🔄 涉及多个 LLM 调用的复杂工作流程
- 🤖 不同代理使用不同 LLM 提供商的多代理系统
- 🔗 将多个 LLM 调用与两者之间的自定义逻辑链接在一起
基本示例
这是一个将 OpenAI 自动追踪与手动定义的 spans 结合的简单示例
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?")
运行此代码会生成一个将手动 spans 与自动 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 中探索和分析您的追踪
查询追踪:以编程方式搜索和检索追踪数据以进行分析