Argilla Server 版本演进与核心能力全景解析:从 v1.5 到 v2.7 的 API、配置、后台任务与 Webhooks 实战指南
2026/9/18 21:25:04 网站建设 项目流程

Argilla Server 版本演进与核心能力全景解析:从 v1.5 到 v2.7 的 API、配置、后台任务与 Webhooks 实战指南

【免费下载链接】argillaArgilla is a collaboration tool for AI engineers and domain experts to build high-quality datasets项目地址: https://gitcode.com/GitHub_Trending/ar/argilla

Argilla Server 是 Argilla 项目(面向 AI 工程师与领域专家的高质量数据集协作工具)的服务端核心。本文以 argilla-server/CHANGELOG.md 为骨架,结合 settings.py、routes.py 等源码,系统梳理 Argilla Server 从 v1.5 到 v2.7 的版本演进脉络,涵盖 API v1 端点体系、环境变量配置、数据集与字段类型、后台任务队列、Webhooks 事件模型以及破坏性变更与升级迁移要点。读完本文,你将能快速判断历史版本间的功能差异,掌握当前版本的核心配置项与运维关键动作,并能在升级前准确评估 reindex、端点替换等迁移成本。

一、版本脉络总览:从 SDK 内嵌到独立服务

Argilla Server 的版本历史可以划分为三个明显阶段:

  • v1.5 ~ v1.23(SDK 内嵌阶段):服务端作为 Argilla SDK 的一部分发布,功能围绕 FeedbackDataset、标注工作流与 CLI 命令展开;
  • v1.24(服务端独立里程碑):CHANGELOG 明确记载"这是 Argilla Server 的首个独立发布",服务端从此可作为独立包安装使用,与 SDK 解耦;
  • v1.25 ~ v2.7(API v1 完善阶段):API v1 全面接管,引入向量检索、元数据属性、Webhooks、后台任务(RQ + Redis)、Hugging Face Hub 导入导出等能力,并在 v2.0 完成对旧 API 的清理。

当前仓库中服务端代码位于 argilla-server/src/argilla_server,其入口应用通过 routes.py 将 16 个 v1 路由模块挂载到/api前缀下,包括 datasets、fields、questions、metadata_properties、records、responses、suggestions、users、vectors_settings、workspaces、webhooks、jobs、oauth2、settings、authentication 与 info。

关键版本时间线如下:

版本核心主题代表性能力
1.6.0用户与权限基础引入 admin/annotator 角色、用户与工作区管理端点、ARGILLA_DATABASE_URL
1.8.0API v1 诞生/api/v1/datasets系列端点、FeedbackDataset 客户端支持
1.11.0三角色权限体系owner/admin/annotator 三级角色
1.18.0元数据体系metadata-properties 端点、Term/Integer/Float 元数据属性
1.19.0向量检索vectors-settings 端点、相似记录搜索(余弦相似度)
1.24.0服务独立Argilla Server 独立发布,修复ARGILLA_BASE_URL
2.0.0破坏性升级移除全部 API v0 端点、新增 records.status 列、需要 reindex
2.2.0后台任务引入 rq + Redis、chat 类型字段
2.3.0自定义字段CustomField、Helm chart
2.5.0事件驱动Webhooks 全套端点与事件、Python 3.13、Pydantic v2
2.6.0Hub 导入导出后台任务化的 HF Hub export/import 端点
2.7.0预定义 ID支持按预定义 id 创建用户与工作区

二、API v1 端点体系:从 v1.8 奠基到 v2.x 完善

2.1 资源端点全家桶(v1.8.0 建立)

v1.8.0 一次性引入了 API v1 的完整资源骨架,此后几乎所有端点都在此基础上扩展:

  • 数据集:GET/POST /api/v1/datasetsGET/DELETE /api/v1/datasets/{dataset_id}POST .../publish
  • 字段与问题:GET/POST /api/v1/datasets/{dataset_id}/fields.../questions,以及对应的单资源删除端点;
  • 记录:GET/POST /api/v1/datasets/{dataset_id}/recordsGET /api/v1/me/datasets(当前用户可见数据集)、POST /api/v1/me/records/{record_id}/responses
  • 工作区与用户:GET /api/v1/workspaces/{workspace_id}GET/POST /api/v1/workspaces/{workspace_id}/users
  • 服务信息:GET /api/v1/versionGET /api/v1/status

从当前源码 records.py 可以看到记录列表端点GET /api/v1/datasets/{dataset_id}/records的完整签名:支持include参数(可携带 responses、suggestions、vectors)、offset/limit分页,其中limit被约束在ge=1, le=1000(与 v1.19.0 CHANGELOG 中"limit 只接受 1~1000"的破坏性变更一致),并返回Records(items, total)结构。

2.2 记录写入:从单条到 bulk,再到字段级更新

  • v1.28.0新增POST/PUT /api/v1/datasets/:dataset_id/records/bulk批量端点,同时将旧的单条POST/PATCH .../records标记为弃用;
  • v2.0.0正式移除弃用的POST /api/v1/datasets/:dataset_id/recordsPATCH /api/v1/datasets/:dataset_id/records,批量写入成为唯一途径;
  • v2.6.0允许在PATCH /api/v1/records/:record_idPUT /api/v1/datasets/:dataset_id/records/bulk中更新记录字段(fields)。

2.3 搜索体系:DSL、过滤、排序与向量

  • v1.20.0起,搜索端点支持可选的query属性以及filtersort结构,记录搜索从简单关键词演进为结构化 DSL;
  • v2.1.0引入"advanced dsl for text searches"(高级文本搜索 DSL),对应源码中 records.py 的POST /datasets/{dataset_id}/records/searchPOST /me/datasets/{dataset_id}/records/search两个搜索端点,后者按当前用户上下文过滤响应;
  • 搜索端点同时支持GET .../records/search/suggestions/options返回可检索的 suggestion 选项(按问题聚合 agent 列表),见 records.py;
  • 向量检索(v1.19.0):新增 vectors-settings 的增删改查端点,记录支持携带vectors,检索时使用余弦相似度计算向量距离,并可用include参数按需返回向量。

2.4 数据集进度与指标

进度类端点经历了两次演进:v1.27.0 新增GET /api/v1/datasets/:dataset_id/progress返回单数据集进度指标;v2.1.0 新增GET /api/v1/datasets/:dataset_id/users/progress计算各用户进度;v2.0.0 将其改造为支持新的数据集分布任务(distribution task),并在 v2.5.0 的响应中增加users属性(源码见 datasets.py)。

2.5 从 Hub 导入导出:异步后台任务(v2.4.0 / v2.6.0)

两个端点将耗时操作从同步请求中剥离,全部走后台任务:

  • POST /api/v1/datasets/{dataset_id}/import(v2.4.0):从 Hugging Face 数据集导入,请求体包含namesubsetsplit与字段mapping
  • POST /api/v1/datasets/{dataset_id}/export(v2.6.0):将数据集导出到 Hugging Face Hub,额外支持privatetoken参数,并在导出前校验数据集非空。

两者均返回202 AcceptedJobSchema{id, status},实际工作由 hub_jobs.py 中的import_dataset_from_hub_job/export_dataset_to_hub_job异步执行,并配置了timeout=JOB_TIMEOUT_DISABLED(即 -1,不设超时)与最大 3 次重试,见 datasets.py。

三、配置体系:ARGILLA_前缀环境变量全解析

v1.13.0 起 Argilla 移除了所有无前缀环境变量,所有合法环境变量均以ARGILLA_开头。这一约束在当前 settings.py 中通过Config.env_prefix = "ARGILLA_"固化。以下按类别展开 CHANGELOG 中出现的核心配置项。

3.1 数据库连接与连接池

环境变量版本引入默认值说明
ARGILLA_DATABASE_URL1.6.0~/.argilla/argilla.db(SQLite)数据存储 URL。源码会自动将sqlite协议升级为sqlite+aiosqlite、将postgresql升级为postgresql+asyncpg,见 settings.py
ARGILLA_DATABASE_SQLITE_TIMEOUT2.0.05(秒)SQLite 事务超时,见 constants.py
ARGILLA_DATABASE_POSTGRESQL_POOL_SIZE2.0.015连接池中保持打开的连接数
ARGILLA_DATABASE_POSTGRESQL_MAX_OVERFLOW2.0.010超出 pool_size 可额外打开的连接数

这些参数最终汇入database_engine_args属性:SQLite 使用connect_args.timeout,PostgreSQL 使用pool_sizemax_overflow,见 settings.py。默认常量集中在 constants.py。

3.2 Redis 与后台任务

  • v2.2.0引入rq(Python RQ)库,以 Redis 为依赖处理后台任务(首个用例是数据集分布策略更新后刷新记录状态的后台任务);
  • Unreleased新增ARGILLA_REDIS_USE_CLUSTER,用于切换 Redis 集群(Cluster)与单机(Standalone)模式。源码 queues.py 据此选择RedisCluster.from_urlredis.from_url
  • 队列命名与优先级(v2.5.0 引入 high 队列):DEFAULT_QUEUE = Queue("default", ...)HIGH_QUEUE = Queue("high", ...),见 queues.py。Webhook 事件通知等对时效敏感的任务走 high 队列(见 webhook_jobs.py)。

3.3 搜索与索引

环境变量版本引入说明
ARGILLA_SEARCH_ENGINE1.19.0取值elasticsearchopensearch。OpenSearch 用户需>=2.4并显式设置该变量
ARGILLA_ES_MAPPING_TOTAL_FIELDS_LIMIT1.25.0应对大规模标注流程的字段总量上限(默认 2000,见 settings.py)
REINDEX_DATASETS1.25.0(quickstart)/ 2.0.0(server 镜像)启动时将数据集与记录重新索引进搜索引擎

注意 v1.25.0 与 v2.0.0 均声明索引映射发生变更,需要 reindex——这是两个必须规划迁移动作的版本。

3.4 认证与安全(ARGILLA_AUTH_*

v1.23.0 引入新一代认证变量并弃用旧的ARGILLA_LOCAL_AUTH_*(后者在 v1.25.0 被移除):

  • ARGILLA_AUTH_SECRET_KEY:JWT 签名密钥(默认随机生成 uuid4,见 security/settings.py);
  • ARGILLA_AUTH_ALGORITHM:默认HS256
  • ARGILLA_AUTH_TOKEN_EXPIRATION:会话令牌过期时间,默认86400秒(1 天);
  • ARGILLA_AUTH_OAUTH_CFG:OAuth2 YAML 配置文件路径,默认.oauth.yaml

上述默认值均可在 security/settings.py 中确认。v1.23.0 同期新增了对 Hugging Face Hub 的 OAuth2 支持。

3.5 问题(Question)选项数量上限

  • ARGILLA_LABEL_SELECTION_OPTIONS_MAX_ITEMS(v1.27.0):label 与 multi-label 选择题的最大选项数,默认500
  • ARGILLA_SPAN_OPTIONS_MAX_ITEMS(v1.27.0):span 题最大选项数,默认500

两者默认值定义在 constants.py,并作为字段默认值接入 settings.py。其他问题类约束还包括:rating 题取值限定[1, 10](v1.14.0,v1.29.0 起允许0)、ranking 题最多 50 个选项(v1.18.0)、visible_options需介于 3 与选项总数之间(v1.16.0)。

3.6 Hugging Face 与遥测

  • ARGILLA_SHOW_HUGGINGFACE_SPACE_PERSISTENT_STORAGE_WARNING(v1.28.0):控制是否在 HF Spaces 持久化存储被禁用时展示警告;
  • ARGILLA_ENABLE_SHARE_YOUR_PROGRESS(v2.6.0):启用/禁用"share your progress"社区进度分享功能,默认False(见 settings.py),并在GET /api/v1/settings中通过argilla.share_your_progress_enabled暴露;
  • 遥测在 v2.1.0 切换到 HuggingFace 遥测客户端,HF_HUB_DISABLE_TELEMETRY=1HF_HUB_OFFLINE=1会使其失效(见 settings.py)。

3.7 其他重要配置

  • ARGILLA_HOME_PATH(v1.6.0):Argilla 相关文件的存放目录,默认~/.argilla
  • ARGILLA_BASE_URL(v1.24.0 修复):服务部署的 base url,源码会规范化首尾斜杠(settings.py);
  • Server-Timing响应头(v2.0.0):所有响应携带服务端生成响应耗时的毫秒数。

四、数据模型演进:字段、问题与数据集属性

4.1 字段类型:text → chat → image → CustomField

  • v2.2.0新增chat类型字段,支持聊天式对话内容(当前 SDK 侧对应 markdown/chat.py 的渲染支持);
  • v2.1.0新增image类型字段,支持 URL 与 Data URL;
  • v2.3.0新增CustomField,允许自定义字段渲染逻辑(参考 custom_fields.md);
  • v2.0.0为 records 表新增status列,支撑记录完成度与分布策略。

4.2 问题类型:span、rating、ranking、label_selection

  • v1.26.0新增span问题(支持allow_overlapping允许重叠跨度设置,v1.27.0);
  • v1.12.0新增RankingQuestion与对应的 Ranking 组件;
  • v1.9.0引入LabelSelectionQuestionSettingsMultiLabelSelectionQuestionSettings,并支持字段/问题的use_markdown属性与响应draft状态;
  • v1.28.0为 multi-label 选择问题增加options_order设置以指定选项顺序;v1.25.0起支持更新 label/multi-label 选择题的选项。

4.3 数据集分布策略(Distribution)

v2.0.0支持在创建与更新数据集时指定distribution属性(将记录分配给标注用户的分布任务),并将progressmetrics端点改造为适配新任务模型。这一变化对应 CHANGELOG 标记的两处[breaking]变更,升级到 2.x 后消费这两个端点的客户端必须同步适配。

五、Webhooks 事件体系(v2.5.0)

v2.5.0 为 Argilla Server 引入完整的事件驱动能力:

  • 管理端点POST /api/v1/webhooks(创建)、PATCH /api/v1/webhooks/{webhook_id}(更新)、DELETE /api/v1/webhooks/{webhook_id}(删除)、GET /api/v1/webhooks(列表)、POST /api/v1/webhooks/{webhook_id}/ping(连通性测试),见 webhooks.py;
  • 事件枚举定义在 enums.py,涵盖三类:
类别事件
数据集dataset.createddataset.updateddataset.deleteddataset.published
记录record.createdrecord.updatedrecord.deletedrecord.completed
响应response.createdresponse.updatedresponse.deleted

事件的触发与通知逻辑位于 webhooks/v1 目录(datasets/records/responses 三组 build + notify 函数),并通过 contexts/datasets.py 在领域操作中调用。事件通知投递到high优先队列异步执行(webhook_jobs.py)。

六、CLI 与运维命令演进

服务端运维能力随版本逐步增强(v1.16.0 为 CLI 大版本):

  • 用户管理:users createusers listusers deleteusers update(v1.11.0 起支持改角色);
  • 工作区管理:workspaces listworkspaces createworkspaces add-userworkspaces delete-user
  • 数据集管理:datasets listdatasets deletedatasets push-to-hub
  • 服务信息:infowhoamiserver_info
  • 数据库:v1.16.0 将database命令移入server组(argilla server database),v1.22.0 彻底移除旧的python -m argilla database;v1.21.0 新增 reindex CLI 任务,将数据集与记录重新索引到搜索引擎;v1.8.0 新增database revisions命令查看迁移信息,database migrate支持--revision参数指定目标版本。

注意:v2.0.0 移除了 argilla quickstart docker 镜像(旧版本仍可用),并使用新的argilla-hf-spaces镜像(v2.0.0 引入)在 HF Spaces 中运行服务端;v2.5.0 将默认 Python 版本升级到 3.13、Pydantic 升级到 v2——如果你在自己的镜像中二次构建,需同步这些基础依赖。

七、升级与迁移清单:破坏性变更速查

升级 Argilla Server 前,请对照以下 CHANGELOG 中标记为[breaking]或需注意的事项逐项检查:

  1. v1.25.0:搜索索引映射变更(响应索引用 userid替代username),需要 reindex;移除ARGILLA_LOCAL_AUTH_*三个变量;ARGILLA_USERS_DB_FILE仅用于从 YAML 迁移用户。
  2. v1.28.0:废弃POST /api/v1/datasets/:dataset_id/recordsPATCH /api/v1/dataset/:dataset_id/records,改用 bulk 端点。
  3. v2.0.0(本仓库范围内最大的一次破坏性升级):移除全部 API v0 端点;移除废弃的POST/PATCH .../records单条端点;移除GET /api/v1/me/datasets/:dataset_id/records;搜索端点不再支持response_statusmetadatasort_by查询参数(改为请求体内的结构化 DSL);progressmetrics端点适配新分布任务;搜索索引映射变更,需要 reindex
  4. v2.5.0:Python 3.13 与 Pydantic v2——检查自定义扩展与依赖兼容性。
  5. 全局约定:所有环境变量必须以ARGILLA_前缀(v1.13.0 起);记录列表与搜索的limit限制在1~1000(v1.19.0 起);PATCH /api/v1/records/:record_id在 v2.6.0 起可更新字段。

升级路径建议:小版本(2.4.x → 2.5.x)可平滑升级;跨大版本(1.x → 2.x)务必先在测试环境执行 reindex 演练,并用GET /api/v1/versionGET /api/v1/status验证服务健康后再切换流量。

八、源码参考路径

  • 服务入口与路由挂载:argilla-server/src/argilla_server/api/routes.py
  • 环境变量定义:argilla-server/src/argilla_server/settings.py、argilla-server/src/argilla_server/constants.py
  • 认证配置(JWT/OAuth2):argilla-server/src/argilla_server/security/settings.py
  • 记录端点实现:argilla-server/src/argilla_server/api/handlers/v1/datasets/records.py、records_bulk.py
  • 数据集、导入导出端点:argilla-server/src/argilla_server/api/handlers/v1/datasets/datasets.py
  • Webhooks 事件枚举与端点:argilla-server/src/argilla_server/webhooks/v1/enums.py、argilla-server/src/argilla_server/api/handlers/v1/webhooks.py
  • 后台任务与队列:argilla-server/src/argilla_server/jobs/queues.py、hub_jobs.py、dataset_jobs.py
  • 领域逻辑(数据集上下文、Webhook 触发):argilla-server/src/argilla_server/contexts/datasets.py

完整变更记录请查阅 argilla-server/CHANGELOG.md 原文,其中每个条目均保留了对应的 PR/Issue 编号,可作为深入某个具体功能时回溯的索引。

【免费下载链接】argillaArgilla is a collaboration tool for AI engineers and domain experts to build high-quality datasets项目地址: https://gitcode.com/GitHub_Trending/ar/argilla

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询