Compartir a través de

使用跟踪部署代理

MLflow 跟踪通过捕获可在 MLflow UI 中查看的执行详细信息或作为表进行分析,为生产代 AI 代理和应用提供全面的可观测性。

Databricks 在每个工作区中提供完全托管的、用于生产环境的 MLflow 跟踪服务。 将追踪 URI 设置为 databricks 之后,Databricks 将安全地存储和提供追踪数据,无需部署或操作单独的追踪数据库或服务器。

MLflow 生产跟踪概述

生产跟踪的工作原理:

  1. 应用为每个 API 调用生成跟踪。 你的应用可以在模型服务(本指南)中运行,也可以是 外部应用程序

  2. 跟踪将实时记录 到 Databricks MLflow 跟踪服务器中的试验,并 选择性地记录到 Delta 表

    1. 对于开发,请使用记录到 MLflow 试验的跟踪。
    2. 对于生产,请使用 MLflow 试验日志记录和/或日志记录到 Delta 表。
  3. 使用 MLflow UI、生产监视或自定义评估来分析和监视跟踪

使用代理框架进行部署(建议)

生产跟踪适用于 Databricks 内部或外部部署的 GEN AI 应用。 本部分介绍使用 Databricks 模型服务部署的跟踪应用。 有关外部部署的应用,请参阅 Databricks 外部部署的跟踪代理

部署步骤

首先,为跟踪设置存储位置:

  1. 如果计划使用 生产监视 将跟踪存储在 Delta 表中,请确保为工作区启用跟踪。

  2. 创建用于存储应用生产跟踪的 MLflow 试验

接下来,在 Python 笔记本中,使用 MLflow 跟踪检测代理,并使用 Agent Framework 部署代理:

  1. 在 Python 环境中安装 mlflow[databricks] 。 使用最新版本。

  2. 使用 mlflow.set_experiment(...). 连接到 MLflow 试验。

  3. 使用 Agent Framework 的创作接口包装代理的代码。 在代理代码中,使用 自动手动 检测启用 MLflow 跟踪。

  4. 将代理记录为 MLflow 模型,并将其注册到 Unity 目录。

  5. 确保 mlflow 位于模型的 Python 依赖项中,其包版本与笔记本环境中所用的包版本相同。

  6. 用于 agents.deploy(...) 将 Unity 目录模型(代理)部署到模型服务终结点。

代理中的跟踪现在实时 显示在 MLflow 试验中

示例笔记本

以下笔记本提供了使用 Agent Framework 将跟踪记录到 MLflow 试验的简单第一代 AI 应用的示例,具体步骤如下所述。

代理框架和 MLflow 跟踪笔记本

获取笔记本

使用自定义 CPU 服务进行部署(替代)

如果无法使用 代理框架部署代理,本部分介绍如何使用自定义 CPU 模型服务在 Databricks 上部署代理。 否则,请跳到 下一部分

首先,为跟踪设置存储位置:

  1. 如果计划使用 生产监视 将跟踪存储在 Delta 表中,请确保为工作区启用跟踪。

  2. 创建用于存储应用生产跟踪的 MLflow 试验

接下来,在 Python 笔记本中,使用 MLflow 跟踪检测代理,并使用模型服务 UI 或 API 来部署代理:

  1. 将代理记录为 MLflow 模型。 在代理代码中,使用 自动手动 检测启用 MLflow 跟踪。

    在代理的代码中,确保使用自动或手动检测启用跟踪

  2. 将模型部署到 CPU 服务。

  3. 预配具有 MLflow 试验访问权限的服务主体或个人访问令牌(PAT CAN_EDIT )。

  4. 在 CPU 服务终结点页中,转到“编辑终结点”。对于要跟踪的每个已部署模型,请添加以下环境变量:

  5. ENABLE_MLFLOW_TRACING=true

  6. MLFLOW_EXPERIMENT_ID=<ID of the experiment you created>

  7. 如果预配了服务主体,请设置 DATABRICKS_CLIENT_IDDATABRICKS_CLIENT_SECRET。 如果预配了 PAT,请设置 DATABRICKS_HOSTDATABRICKS_TOKEN

查看生产跟踪

部署代理后,可以在 MLflow 试验 UI 中查看其跟踪,就像开发中的跟踪一样。 这些生产跟踪提供有价值的见解:

  • 真正的用户查询和代理响应 - 确切地了解用户询问的内容以及代理响应方式
  • 来自用户反馈的质量见解 - 查看附加到生产跟踪的向上/向下评分、批注和其他反馈
  • 错误率和失败模式 - 确定代理失败的时间和原因
  • 行为模式 - 了解用户如何与代理交互并确定改进机会
  • 延迟和性能指标 - 监视生产中的响应时间和系统性能
  • 资源使用情况和成本 - 跟踪令牌消耗和相关成本

生产跟踪 UI

将跟踪记录到 Delta 表

部署代理后,除了 MLflow 试验之外,还可以选择将跟踪记录到 Delta 表。 可通过两种方式支持此日志记录:

  • 生产监视表建议):通过转到 MLflow 试验中的 “监视 ”选项卡并选择 Unity 目录架构来启用。 要同步跟踪到 Delta 表的作业每 15 分钟运行一次。 无需启用任何监视指标才能正常工作。 跟踪没有大小限制。

将元数据添加到跟踪

基本跟踪工作后,添加元数据或上下文,以便更好地进行调试和见解。 MLflow 提供标准化标记和属性来捕获重要的上下文信息,包括:

  • 请求跟踪 - 将跟踪与特定 API 调用关联,以实现端到端调试
  • 用户会话 - 组相关交互以了解用户旅程
  • 环境数据 - 跟踪生成每个跟踪的部署、版本或区域
  • 用户反馈 - 收集质量分级并将其链接到特定交互

开始 向跟踪添加元数据和用户反馈

跟踪令牌使用情况和成本

在开发和生产中,MLflow 跟踪可以跟踪 LLM 调用的令牌使用情况,可用于计算成本。 跟踪使用 LLM 提供程序 API 返回的令牌计数。

MLflow 跟踪本机支持通过 OpenAI 客户端调用的 Databricks Foundation 模型 API 以及许多其他 LLM 提供程序(如 OpenAILangChainLangGraph)的令牌使用情况跟踪。 之后,可以编程方式查询令牌使用情况,如以下示例所示。

# Get aggregated token usage (if available)
token_usage = trace.info.token_usage
if token_usage:
    print(f"Input tokens: {token_usage.get('input_tokens')}")
    print(f"Output tokens: {token_usage.get('output_tokens')}")
    print(f"Total tokens: {token_usage.get('total_tokens')}")

有关更多详细信息,请参阅 令牌使用情况信息

可以根据 LLM 提供商的定价计划使用这些令牌计数来计算成本。 请记住,许多提供程序对输入和输出令牌收取不同的费率。

局限性

将跟踪记录到 MLflow 试验和 生产监视 表时,跟踪数和峰值负载限制。

后续步骤

  • 将元数据添加到跟踪,包括用户或会话 ID、自定义标记或用户反馈,以改进调试和见解

特性参考

有关本指南中的概念和功能的详细信息,请参阅: