用户管理#
本指南解释了如何通过 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。
我们根据用户的角色、权限和需求区分三种类型的用户:owner
、admin
、annotator
。
所有者#
所有者是创建 Argilla 实例的根用户。当使用 Argilla 时,使用工作区非常有用。因此,所有者拥有对所有工作区及其选项的完全访问权限
Argilla 用户由以下属性组成
工作区管理:可以创建和删除工作区。
用户管理:可以创建新用户,更新其信息,将工作区分配给用户,并删除用户。还可以列出所有用户,并按名称或 ID 搜索特定用户。
数据集管理:可以创建、配置、更新和删除数据集。还可以从 Argilla 中删除当前的 FeedbackDataset。
标注:可以在 Argilla UI 中标注数据集。
反馈:可以使用 Argilla UI 提供反馈。
管理员#
管理员用户只能访问已分配给自己的工作区,并且不能将其他用户分配给它。管理员用户具有以下权限
数据集管理:只能在分配的工作区中创建、配置、更新和删除数据集(包括 FeedbackDataset)。
标注:可以通过 Argilla UI 在分配的工作区中标注数据集。
反馈:可以使用 Argilla UI 提供反馈。
标注者#
标注者用户仅限于访问工作区内分配给自己的数据集。它具有两个特定权限
标注:可以在 Argilla UI 中标注数据集。
反馈:可以使用 Argilla UI 提供反馈。
Argilla 用户由以下属性组成
属性 |
类型 |
描述 |
---|---|---|
|
|
用户的唯一标识符。 |
|
|
用作 Argilla UI 登录的用户名。 |
|
|
用户的名字。 |
|
|
用户的姓氏。 |
|
|
用户的全名,是 |
|
|
用户在 Argilla 中的角色。可用角色为:“owner”、“admin”和“annotator”。 |
|
|
用户对其具有读写访问权限的工作区名称(来自 UI 和 Python 客户端)。 |
|
|
与 Argilla API 交互的 API 密钥,主要通过 Python 客户端,也通过 HTTP 用于高级用户。在创建用户时自动生成。 |
|
|
用户创建的日期和时间。 |
|
|
用户上次更新的日期和时间。 |
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
,并且是 ws1
和 ws2
工作区的成员,你可以运行以下命令
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
如果一切顺利,配置的用户现在可以登录,他们的标注将通过其用户名进行跟踪,并且他们将有权访问定义的工作区。