用户管理#

本指南解释了如何通过 Python 客户端和 CLI 在 Argilla 中设置和管理用户。

注意

User 用户管理类已包含在 Argilla 1.11.0 版本中,在之前的版本中不可用。但是你将能够在 1.6.0 或更高版本的旧 Argilla 实例中使用它,唯一的区别是主要角色现在是 owner 而不是 admin

警告

从 Argilla 1.11.0 开始,快速入门中的默认用户池也包含一个所有者用户,其凭据为:用户名 owner,密码 12345678,和 API 密钥 owner.apikey;而对于服务器镜像,默认用户现在是 owner 而不是 admin,凭据相同:用户名 argilla,密码 1234 和 API 密钥 argilla.apikey

用户模型#

Argilla 中的用户是授权人员,他们可以访问 UI,并在运行的 Argilla 实例中使用 Python 客户端和 CLI。

我们根据用户的角色、权限和需求区分三种类型的用户:owneradminannotator

所有者#

所有者是创建 Argilla 实例的根用户。当使用 Argilla 时,使用工作区非常有用。因此,所有者拥有对所有工作区及其选项的完全访问权限

Argilla 用户由以下属性组成

  • 工作区管理:可以创建和删除工作区。

  • 用户管理:可以创建新用户,更新其信息,将工作区分配给用户,并删除用户。还可以列出所有用户,并按名称或 ID 搜索特定用户。

  • 数据集管理:可以创建、配置、更新和删除数据集。还可以从 Argilla 中删除当前的 FeedbackDataset。

  • 标注:可以在 Argilla UI 中标注数据集。

  • 反馈:可以使用 Argilla UI 提供反馈。

管理员#

管理员用户只能访问已分配给自己的工作区,并且不能将其他用户分配给它。管理员用户具有以下权限

  • 数据集管理:只能在分配的工作区中创建、配置、更新和删除数据集(包括 FeedbackDataset)。

  • 标注:可以通过 Argilla UI 在分配的工作区中标注数据集。

  • 反馈:可以使用 Argilla UI 提供反馈。

标注者#

标注者用户仅限于访问工作区内分配给自己的数据集。它具有两个特定权限

  • 标注:可以在 Argilla UI 中标注数据集。

  • 反馈:可以使用 Argilla UI 提供反馈。

user_roles_schema

Argilla 用户由以下属性组成

属性

类型

描述

id

UUID

用户的唯一标识符。

username

str

用作 Argilla UI 登录的用户名。

first_name

str

用户的名字。

last_name

str

用户的姓氏。

full_name

str

用户的全名,是 first_namelast_name 的连接。

role

str

用户在 Argilla 中的角色。可用角色为:“owner”、“admin”和“annotator”。

workspaces

List[str]

用户对其具有读写访问权限的工作区名称(来自 UI 和 Python 客户端)。

api_key

str

与 Argilla API 交互的 API 密钥,主要通过 Python 客户端,也通过 HTTP 用于高级用户。在创建用户时自动生成。

inserted_at

datetime

用户创建的日期和时间。

updated_at

datetime

用户上次更新的日期和时间。

Python 客户端#

Python 客户端中的 User 类为具有 owner 角色的开发者提供了在 Argilla 中创建和管理用户的能力。查看 User - Python 参考 以查看 User 类的属性、参数和方法。

操作指南#

注意

要使用较新的客户端连接到旧的 Argilla 实例(<1.3.0),你应该指定默认用户 API 密钥 rubrix.apikey。否则,连接将失败并显示未授权服务器错误。

获取当前活动的 User#

你可以使用 User 类中的 me 类方法获取 Argilla 中当前活动的用户。请注意,me 方法将返回通过 rg.init 提供的凭据指定的活动用户。此外,还可以 使用环境变量设置此信息,这允许跳过 rg.init

argilla login --api-url https://#:6900
argilla whoami

import argilla as rg

rg.init(api_url="<ARGILLA_API_URL>", api_key="<ARGILLA_API_KEY>")

user = rg.User.me()

创建 User#

你可以使用 users 组中的 create 命令在 Argilla 中创建新用户。

argilla users create

例如,要创建一个新用户,角色为 admin,并且是 ws1ws2 工作区的成员,你可以运行以下命令

argilla users create --username new-user --password new-password --first-name New --last-name User --role admin --workspace ws1 --workspace ws2

你也可以使用 User 类中的 create 类方法在 Argilla 中创建新用户。提供的工作区必须在 Argilla 中存在。

import argilla as rg

rg.init(api_url="<ARGILLA_API_URL>", api_key="<ARGILLA_API_KEY>")

user = rg.User.create(
    username="new-user",
    first_name="New",
    last_name="User",
    password="new-password",
    role="admin",
    workspaces=["ws1", "ws2"]
)

更新 User#

你可以使用数据库连接更改现有用户的分配角色,因此必须设置环境变量 ARGILLA_DATABASE_URL,除非你正在使用 SQLite,在这种情况下,你应该从 Argilla 服务器正在运行的机器上执行命令。

argilla server database users update argilla --role owner
User 'argilla' successfully updated:
• role: 'admin' -> 'owner'

注意

你应该使用此命令来查看和迁移版本 <=1.10.0 的用户角色

通过用户名获取 User#

Python 客户端#

你可以使用 User 类中的 from_name 类方法通过用户名获取用户。

import argilla as rg

rg.init(api_url="<API_URL>", api_key="<OWNER_API_KEY>")

user = rg.User.from_name("new-user")

通过 id 获取 User#

Python 客户端#

你可以使用 User 类中的 from_id 类方法通过 id 获取用户。

import argilla as rg

rg.init(api_url="<ARGILLA_API_URL>", api_key="<ARGILLA_API_KEY>")

user = rg.User.from_id("00000000-0000-0000-0000-000000000000")

User 分配给 Workspace#

你可以使用 workspace 组中的 add-user 命令将用户分配给工作区。

argilla workspace --name ws1 add-user nick

要将用户分配给工作区,你可以使用 Workspace 类中的 add_user 方法。有关工作区的更多信息,请参阅 工作区管理 指南。

import argilla as rg

rg.init(api_url="<API_URL>", api_key="<OWNER_API_KEY>")

user = rg.User.create(
    username="nick",
    first_name="Nick",
    last_name="Name",
    password="11223344",
    role="annotator",
)

workspace = rg.Workspace.create(name="ws")
workspace.add_user(user.id)

列出 Users#

注意

只有“所有者”可以列出 Argilla 中的所有用户。

你可以使用 users 组中的 list 命令列出 Argilla 中的所有现有用户。

argilla users list

你可以通过调用 User 类的 list 类方法来列出 Argilla 中的所有现有用户。

import argilla as rg

rg.init(api_url="<API_URL>", api_key="<OWNER_API_KEY>")

users = rg.User.list()

删除 User#

注意

只有“所有者”可以删除 Argilla 中的用户。

你可以使用 users 组中的 delete 命令删除 Argilla 中的现有用户。

argilla users --username existing-user delete

你可以通过调用 User 类上的 delete 方法从 Argilla 中删除现有用户。

import argilla as rg

rg.init(api_url="<ARGILLA_API_URL>", api_key="<ARGILLA_API_KEY>")

user = rg.User.from_name("existing-user")
user.delete()

argilla/argilla-server Docker 镜像的默认用户#

如果你正在使用 argilla/argilla-server Docker 镜像,你可以通过设置以下环境变量来创建角色为 owner 的默认用户 argilla

  • DEFAULT_USER_ENABLED:设置为 true 以启用默认用户创建。

  • DEFAULT_USER_PASSWORD:如果 DEFAULT_USER_ENABLED 设置为 true,则此环境变量必须设置为默认用户的密码。

  • DEFAULT_USER_API_KEY:如果 DEFAULT_USER_ENABLED 设置为 true,则此环境变量必须设置为默认用户的 API 密钥。

users.yaml 文件迁移用户#

迁移命令可以从具有以下格式的 YAML 文件自动创建用户和工作区

- username: john
  full_name: John Doe
  email: john@argilla.io
  api_key: a14427ea-9197-11ec-b909-0242ac120002
  hashed_password: $2y$05$xtl7iy3bpqchUwiQMjEHe.tY7OaIjDrg43W3TB4EHQ7izvdjvGtPS
  disabled: False

- username: tanya
  full_name: Tanya Franklin
  email: tanya@argilla.io
  api_key: 78a10b53-8db7-4ab5-9e9e-fbd4b7e76551
  hashed_password: $2y$05$aqNyXcXRXddNj5toZwT0HugHqKZypvqlBAkZviAGGbsAC8oTj/P5K
  workspaces: [argilla, team]
  disabled: True

- username: daisy
  full_name: Daisy Gonzalez
  email: daisy@argilla.io
  api_key: a8168929-8668-494c-b7a5-98cd35740d9b
  hashed_password: $2y$05$l83IhUs4ZDaxsgZ/P12FO.RFTi2wKQ2AxMK2vYtLx//yKramuCcZG
  workspaces: [argilla, team, latam]
  disabled: False

为此,该命令将直接连接到 Argilla 服务器数据库,因此必须设置环境变量 ARGILLA_DATABASE_URL,除非你正在使用 SQLite,在这种情况下,你应该从 Argilla 服务器正在运行的机器上执行命令。

用户角色将根据每个用户的工作区设置方式计算。如果未定义 workspace 属性,则该用户将被视为 owner。否则,分配的用户角色将为 annotator

该任务还将为每个用户创建一个以其用户名命名的额外工作区。

export ARGILLA_LOCAL_AUTH_USERS_DB_FILE=/path/to/.users.yml
argilla server database users migrate
Starting users migration process using file '.users.yml'
Migrating User with username 'john'
Migrating User with username 'tanya'
Migrating User with username 'daisy'
Users migration process successfully finished

确保一切按预期进行,登录并通过 CLI 列出用户

argilla users list

使用 Docker Compose 迁移用户#

确保你在与 docker-compose.yaml 相同的文件夹中创建了上面的 YAML 文件。你可以从此 URL 下载 docker-compose.yaml 文件

然后打开提供的 docker-compose.yaml 文件,并按如下方式修改你的 Argilla 实例

  argilla:
    image: argilla/argilla-server:latest
    restart: unless-stopped
    ports:
      - "6900:6900"
    environment:
      ARGILLA_HOME_PATH: /var/lib/argilla
      ARGILLA_ELASTICSEARCH: http://elasticsearch:9200
      ARGILLA_AUTH_SECRET_KEY: ${ARGILLA_AUTH_SECRET_KEY:? Please generate a 32 character random string with `openssl rand -hex 32`}
+     ARGILLA_LOCAL_AUTH_USERS_DB_FILE: /var/lib/argilla-migrate/users.yaml
    networks:
      - argilla
    volumes:
      - argilladata:/var/lib/argilla
+     - ${PWD}/users.yaml:/var/lib/argilla-migrate/users.yaml

进行更改后,你可以使用以下命令启动容器

docker-compose up

并且,在运行容器后,你可以运行任务以迁移用户,如下所示

docker-compose exec argilla argilla server database users migrate

如果一切顺利,配置的用户现在可以登录,他们的标注将通过其用户名进行跟踪,并且他们将有权访问定义的工作区。