跳到内容

在团队中分配标注任务

本指南解释了如何使用 Argilla 的 自动任务分配 功能,在多个团队成员之间高效地分配数据集标注任务。

所有者和管理员可以定义每个记录所需的最小提交回复数。Argilla 将使用此设置自动处理将显示在所有有权访问数据集的用户待处理队列中的记录。

当记录达到最小提交数后,记录的状态将更改为 completed,并且该记录将从所有团队成员的 Pending 队列中移除,以便他们可以专注于在最需要的地方提供回复。一旦所有记录都具有 completed 状态,数据集的标注任务将完全完成。

Task Distribution diagram

注意

记录的状态可以是 completed(当它具有所需数量的 submitted 状态的回复时)或 pending(当它不满足此要求时)。

每个记录可以有多个回复,并且每个回复可以具有 submitteddiscardeddraft 状态。

主类

rg.TaskDistribution(
    min_submitted = 2
)

查看 任务分配 - Python 参考 以详细了解 TaskDistribution 类的属性、参数和方法。

配置任务分配设置

默认情况下,Argilla 会将所需的最小提交回复数设置为 1。这意味着,只要记录至少有 1 个状态为 submitted 的回复,记录的状态将变为 completed,并从其他团队成员的 Pending 队列中移除。

提示

如果您是独自工作,或者每个记录只需要一个提交的回复,请保留最小提交数的默认值 (1)。

如果您希望设置不同的数字,可以通过数据集设置中的 distribution 设置来完成。

settings = rg.Settings(
    guidelines="These are some guidelines.",
    fields=[
        rg.TextField(
            name="text",
        ),
    ],
    questions=[
        rg.LabelQuestion(
            name="label",
            labels=["label_1", "label_2", "label_3"]
        ),
    ],
    distribution=rg.TaskDistribution(min_submitted=3)
)

数据集管理指南 中了解更多关于配置数据集设置的信息。

提示

如果您想确保每个记录获得多个提交的回复,请增加最小提交数。确保此数字永远不高于您团队的成员数。请注意,此数字越低,任务完成得越快。

注意

请注意,如果多个团队成员同时在同一记录上提交回复,则某些记录可能具有比预期更多的回复。

更改任务分配设置

如果您希望更改数据集中所需的最小提交回复数,只要标注尚未开始(即数据集没有任何记录的回复),就可以这样做。

管理员和所有者可以从 UI 中的数据集设置页面或从 SDK 更改此值

import argilla as rg

client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")

dataset = client.datasets("my_dataset")

dataset.settings.distribution.min_submitted = 4

dataset.update()

跟踪团队进度

您可以使用 dataset.progress 方法检查标注任务的进度。此方法将返回状态为 completedpending 的记录数以及数据集中的记录总数。

import argilla as rg

client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")

dataset = client.datasets("my_dataset")

progress = dataset.progress()
{
    "total": 100,
    "completed": 10,
    "pending": 90
}

您还可以通过将 with_users_distribution 参数设置为 True,在进度中包含用户分配情况。这将返回状态为 completedpending 的记录数,数据集中的记录总数,以及每个用户完成的提交数。您可以访问 标注进度 部分以获取更多信息。

import argilla as rg

client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")

dataset = client.datasets("my_dataset")

progress = dataset.progress(with_users_distribution=True)
{
    "total": 100,
    "completed": 50,
    "pending": 50,
    "users": {
        "user1": {
           "completed": { "submitted": 10, "draft": 5, "discarded": 5},
           "pending": { "submitted": 5, "draft": 10, "discarded": 10},
        },
        "user2": {
           "completed": { "submitted": 20, "draft": 10, "discarded": 5},
           "pending": { "submitted": 2, "draft": 25, "discarded": 0},
        },
        ...
}

注意

由于已完成的记录可能包含来自多个用户的提交,因此每个用户完成的提交数可能与已完成记录的总数不匹配。