跳到主要内容

使用 MLflow 做可观测性

本教程介绍如何将 goose 与 MLflow 集成,从而追踪 goose 会话,并了解智能体的表现。

什么是 MLflow​

MLflow 是一个开源平台,用于管理机器学习和 AI 的端到端生命周期。MLflow Tracing 为 AI 智能体执行提供详细的可观测性,通过丰富的可视化界面捕获大语言模型调用、工具使用和智能体决策。

为什么 goose 适合用 MLflow​

  • 详细的追踪可视化:在分层追踪视图中检查每一次大语言模型调用、工具执行和智能体决策。
  • Token 用量跟踪:跨会话监控输入/输出 token 数量和费用。
  • 评估框架:使用内置的大语言模型评判器和自定义评分器评估智能体输出。
  • 提示词管理:对 AI 应用中使用的提示词进行版本管理。
  • 开源:完全开源,无供应商锁定,可在任何地方自行托管。

设置 MLflow​

安装 MLflow 并启动跟踪服务器:

pip install mlflow
mlflow server --port 5000

MLflow 界面将在 http://localhost:5000 可用。

提示

生产使用时,请配置 SQL 后端存储(PostgreSQL、MySQL),而不是默认的 SQLite。详情见 MLflow 文档。

配置 goose 将 OTLP 导出到 MLflow​

goose 通过 OTLP/HTTP 导出 OpenTelemetry 数据。把导出器指向 MLflow 的 OTLP 端点:

export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:5000"
export OTEL_EXPORTER_OTLP_HEADERS="x-mlflow-experiment-id=0"

x-mlflow-experiment-id 头指定把追踪记录到哪个 MLflow 实验。使用 0 表示默认实验,或创建一个专用实验:

pip install mlflow
mlflow experiments create --experiment-name "goose-traces"
# Use the returned experiment ID in the header

若只导出追踪(禁用指标和日志导出):

export OTEL_TRACES_EXPORTER=otlp
export OTEL_METRICS_EXPORTER=none
export OTEL_LOGS_EXPORTER=none

要在追踪中包含模型消息以及工具参数/结果,请显式启用 GenAI 消息内容捕获:

export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
注意

消息内容可能包含敏感数据,并产生很大的追踪。除非遥测存储适合这类数据,否则请保持此设置关闭。

在启用 MLflow 的情况下运行 goose​

正常启动 goose。设置好 OTLP 环境变量后,goose 会自动把追踪导出到 MLflow:

goose session

打开 http://localhost:5000 的 MLflow 界面,进入 Traces 标签页,查看 goose 会话的详细追踪,包括大语言模型调用、工具执行和 token 用量。

MLflow 中的 goose 追踪

了解更多​