跳到主要内容

跟踪 AutoGen

AutoGen tracing via autolog

AutoGen AgentChat 是一个用于构建会话式单智能体和多智能体应用的开源框架。

MLflow 跟踪为 AutoGen AgentChat 提供了自动跟踪功能。通过调用 mlflow.autogen.autolog() 函数为 AutoGen 启用自动跟踪,MLflow 将捕获嵌套跟踪并在智能体执行时将它们记录到活动的 MLflow 实验中。

python
import mlflow

mlflow.autogen.autolog()
注意

请注意,应在导入要跟踪的 AutoGen 类之后调用 mlflow.autogen.autolog()。应在调用 mlflow.autogen.autolog() 之前导入 ChatCompletionClient 的子类,例如 OpenAIChatCompletionClientAnthropicChatCompletionClient,以及 BaseChatAgent 的子类,例如 AssistantAgentCodeExecutorAgent。另请注意,此集成适用于 AutoGen 0.4.9 或更高版本。如果您使用的是 AutoGen 0.2,请改用 AG2 集成

MLflow 捕获有关 AutoGen 智能体的以下信息

  • 传递给智能体的消息,包括图像
  • 来自智能体的响应
  • 每个智能体发出的 LLM 和工具调用
  • 延迟
  • 如果抛出任何异常

支持的 API

MLflow 支持对以下 AutoGen API 进行自动跟踪。它不支持对异步生成器进行跟踪。像 run_streamon_messages_stream 这样的异步流式 API 不会被跟踪。

  • ChatCompletionClient.create
  • BaseChatAgent.run
  • BaseChatAgent.on_messages

基本示例

python
import os

# Imports of autogen classes should happen before calling autolog.
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient

import mlflow

# Turn on auto tracing for AutoGen
mlflow.autogen.autolog()

# Optional: Set a tracking URI and an experiment
mlflow.set_tracking_uri("https://:5000")
mlflow.set_experiment("AutoGen")

model_client = OpenAIChatCompletionClient(
model="gpt-4.1-nano",
# api_key="YOUR_API_KEY",
)

agent = AssistantAgent(
name="assistant",
model_client=model_client,
system_message="You are a helpful assistant.",
)

result = await agent.run(task="Say 'Hello World!'")
print(result)

工具智能体

python
import os

# Imports of autogen classes should happen before calling autolog.
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient

import mlflow

# Turn on auto tracing for AutoGen
mlflow.autogen.autolog()

# Optional: Set a tracking URI and an experiment
mlflow.set_tracking_uri("https://:5000")
mlflow.set_experiment("AutoGen")

model_client = OpenAIChatCompletionClient(
model="gpt-4.1-nano",
# api_key="YOUR_API_KEY",
)


def add(a: int, b: int) -> int:
"""add two numbers"""
return a + b


agent = AssistantAgent(
name="assistant",
model_client=model_client,
system_message="You are a helpful assistant.",
tools=[add],
)

await agent.run(task="1+1")

Token 用量

MLflow >= 3.2.0 支持 AutoGen 的 token 用量跟踪。每个 LLM 调用的 token 用量将记录在 mlflow.chat.tokenUsage 属性中。整个跟踪的总 token 用量可以在跟踪信息对象的 token_usage 字段中找到。

python
import json
import mlflow

mlflow.autogen.autolog()

# Run the tool calling agent defined in the previous section
await agent.run(task="1+1")

# Get the trace object just created
last_trace_id = mlflow.get_last_active_trace_id()
trace = mlflow.get_trace(trace_id=last_trace_id)

# Print the token usage
total_usage = trace.info.token_usage
print("== Total token usage: ==")
print(f" Input tokens: {total_usage['input_tokens']}")
print(f" Output tokens: {total_usage['output_tokens']}")
print(f" Total tokens: {total_usage['total_tokens']}")

# Print the token usage for each LLM call
print("\n== Detailed usage for each LLM call: ==")
for span in trace.data.spans:
if usage := span.get_attribute("mlflow.chat.tokenUsage"):
print(f"{span.name}:")
print(f" Input tokens: {usage['input_tokens']}")
print(f" Output tokens: {usage['output_tokens']}")
print(f" Total tokens: {usage['total_tokens']}")
bash
== Total token usage: ==
Input tokens: 65
Output tokens: 17
Total tokens: 82

== Detailed usage for each LLM call: ==
create:
Input tokens: 65
Output tokens: 17
Total tokens: 82

支持的 API

MLflow 支持对以下 AutoGen API 进行自动 token 用量跟踪。它不支持对异步生成器进行 token 用量跟踪。像 run_streamon_messages_stream 这样的异步流式 API 不会被跟踪。

  • ChatCompletionClient.create
  • BaseChatAgent.run
  • BaseChatAgent.on_messages

禁用自动跟踪

可以通过调用 mlflow.autogen.autolog(disable=True)mlflow.autolog(disable=True) 来全局禁用对 AutoGen 的自动跟踪。