跳到主要内容

审阅队列

审阅队列将临时的“人工审阅”工作转化为一种结构化的工作流。您可以将一组追踪(Traces)绑定到一个命名队列中,附加需要回答的问题,将队列分配给一名或多名审阅者,并让他们逐一处理这些追踪。每个答案都会记录回追踪中,因此审阅工作可直接用于模型评估。

实验性功能

审阅队列是实验性功能(于 MLflow 3.14.0 版本添加),未来版本可能会有所变更。

什么是审阅队列?

审阅队列是追踪的命名集合,作用域限于某个实验,由一组指定的审阅者共同完成。审阅者对每条追踪回答相同且定义明确的问题(从而使结果具有可比性和可汇总性);共享的状态可防止团队重复审阅同一条追踪;每个答案都会直接记录回追踪中,以便在评估中立即重用。工作流由三个构建模块组成:

审阅问题

审阅者针对每条追踪回答的问题:通过/失败切换开关、类别选择、数值评分或自由文本。

审阅队列

一组追踪、要询问的问题以及分配负责处理这些问题的审阅者。

共享审阅状态

每条追踪的状态(待处理、已完成或已拒绝)在所有审阅者之间共享,因此第一个完成审阅的人会为整个团队更新该追踪的状态。

前提条件

  • MLflow 3.14.0 或更高版本。
  • 一个 MLflow 跟踪服务器(或本地跟踪配置),且追踪数据已记录到实验中。
  • 若要使用用户名分配审阅任务,请在启用身份验证的情况下运行跟踪服务器。在未启用身份验证的服务器上,审阅任务会被归因于一个默认的 default 用户,且无法查看审阅者分配情况,因此请改为使用自定义队列

将追踪分配给审阅者

获取追踪审阅的最快方法:在追踪表格(或打开的追踪详情页)中,选择追踪,点击标记为待审阅 (Flag for review),并选择一名或多名审阅者。每条追踪都会进入该审阅者的个人队列,他们在那里回答该实验的审阅问题。(在未启用身份验证的服务器上,不支持直接分配审阅者。请改用下文所述的自定义队列。)

Assigning traces to reviewers in the MLflow UI

在 UI 中审阅追踪

审阅者可以在实验的审阅 (Review) 选项卡下找到分配给他们的工作。选择一个队列会列出其中的追踪及其审阅状态,以及剩余待处理的数量。

The Review tab showing a selected queue and its traces

选中一条追踪会打开专注审阅页面:主面板显示追踪的输入和输出(可通过查看完整追踪调用完整的追踪浏览器),右侧面板显示审阅问题。

Reviewing a trace in the focused review page

在此页面,审阅者可以:

  • 提交 (Submit) 答案以将追踪标记为完成(单一的“通过/失败”问题在选择后即会立即提交)。
  • 拒绝 (Decline) 被错误加入队列的追踪。
  • 重新打开已完成的答案进行编辑并保存更改,或者使用移回待办 (Move to Todo) 将追踪退回到待处理池。

由于状态在队列中共享,第一个完成审阅的审阅者将为所有人清除该任务,并由 completed_by 记录完成者身份。

创建自定义队列

当您需要一个包含特定问题集合的精选共享队列(或者您处于未启用身份验证的服务器上时),请创建自定义队列,而不是直接分配给个人审阅者。

第 1 步:定义审阅问题。

在实验的审阅 (Review) 选项卡中,打开创建队列对话框并点击新问题 (New question)

  1. 为问题命名。
  2. 选择输入类型:通过/失败、单选/多选类别、数值或自由文本。
  3. 可选择添加向审阅者展示的说明,并允许输入自由文本评论。
  4. 选择该问题是反馈 (feedback) 问题(输出质量如何?)还是期望 (expectation) 问题(输出应该是什么样的?)。

问题定义一次后,即可在整个实验的各个队列中重复使用。

Creating a review question in the MLflow UI

第 2 步:创建队列。

命名队列并选择要询问的问题,然后点击创建 (Create)

Creating a review queue in the MLflow UI

第 3 步:分配审阅者并添加追踪。

在启用身份验证的服务器上,将审阅者分配给队列,使其出现在他们的审阅 (Review) 选项卡中。通过追踪表格中的标记为待审阅 (Flag for review) 将追踪添加进队列。

以编程方式管理和跟踪队列

通过 SDK 也可实现相同的工作流,适用于自动化、批量分配、报告或初始化审阅状态。问题通过 create_label_schema 创建(API 使用术语“标签模式/label schema”);队列及其条目通过 mlflow.genai.review_queues 进行管理。

python
from mlflow.genai.label_schemas import (
create_label_schema,
list_label_schemas,
InputCategorical,
InputPassFail,
InputText,
)
from mlflow.genai.review_queues import (
create_review_queue,
get_or_create_user_queue,
add_items_to_review_queue,
list_review_queue_items,
set_review_queue_item_status,
)

# 1. Define questions (reused across the experiment's queues).
create_label_schema(
name="correctness",
type="feedback",
input=InputPassFail(positive_label="Correct", negative_label="Incorrect"),
instruction="Is the answer factually correct?",
enable_comment=True, # also let reviewers leave a free-text rationale
)
create_label_schema(
name="expected_response",
type="expectation",
input=InputText(),
instruction="What should the assistant have said?",
)

# 2. Create a custom queue with a chosen subset of questions and assigned reviewers.
# The owner (`created_by`) is stamped by the server, not passed by the caller.
queue = create_review_queue(
name="Hallucination review - June",
queue_type="custom",
schema_ids=[s.schema_id for s in list_label_schemas()],
users=["alice@company.com", "bob@company.com"], # auth servers only
)

# A user queue is one reviewer's personal worklist; get_or_create_user_queue is
# idempotent, the backbone of "assign these traces to this person".
personal = get_or_create_user_queue("carol@company.com")

# 3. Attach traces (idempotent; re-adding keeps the existing status).
add_items_to_review_queue(queue.queue_id, item_ids=["tr-abc123", "tr-def456"])

# 4. Track and drive review status.
pending = list_review_queue_items(queue.queue_id, status="pending")
print(f"{len(pending)} traces still to review")
set_review_queue_item_status(
queue.queue_id,
item_id="tr-abc123",
status="complete",
completed_by="alice@company.com", # required for terminal states
)

其他可用调用:update_review_queue(更改自定义队列的审阅者或问题)、remove_items_from_review_queue(移除追踪)、list_review_queues(按用户过滤以查找审阅者的队列)以及 delete_review_queue(删除队列,录入的审阅答案将保持不变)。

注意

InputCategoricalListInputTextList 和部分输入选项仅在 Databricks 管理的跟踪环境下获得全面支持。在 Databricks 上,create_label_schema 会路由至 Databricks Review App;在开源 MLflow 上,它使用跟踪存储。

审阅答案如何记录到追踪中

审阅队列不会将答案与追踪分开存储。每个答案都会直接写入被审阅的追踪中(反馈问题记录反馈,期望问题记录预期的真值),并归因于审阅者。重新保存已编辑的答案会覆盖该审阅者之前的答案,而不会创建重复项。这意味着审阅输出在追踪数据使用的任何地方都立即可用:追踪 UI、评估 和真值数据集,无需额外的导出步骤。

后续步骤