跳到主要内容

自动追踪

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

支持的集成

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

OpenTelemetry

代理框架 (Python)

代理框架 (TypeScript)

模型提供商

Tools

网关

无代码


最喜欢的库未列出?

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

高级用法

结合手动和自动追踪

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

  1. 🔄 涉及多个 LLM 调用的复杂工作流
  2. 🤖 使用不同 LLM 提供商的不同代理的多代理系统
  3. 🔗 在 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 中探索和分析您的追踪

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