Skip to content

新功能

Potato v2.x 的新特性。2.8 版加入计算机视觉、3D 点云、深度图、机器人回合与世界模型评测,并对几何与时间提供机会校正后的一致性度量。61 种标注类型,24 种展示类型。

本页介绍 Potato v2.x 各版本的新功能与改进。


Potato 2.11.1

2026 年 10 月发布

Potato 2.11.1 让 potato start config.yaml --debug 重新可以在默认地址上启动,为模型训练加入了图像分类器,并修复了每次重启都会丢失的预标签。

bash
pip install --upgrade potato-annotation

调试模式

从 2.8.2 到 2.11.0,在默认地址 0.0.0.0 上运行的调试服务器会拒绝启动,除非指定 --host 127.0.0.1。在 2.11.1 中,它可以在任何地址上启动,网络上的其他机器也能访问它。调试指南说明了调试模式现在的行为:

  • 除非加上 --debug-phase,否则登录页面会保留。 使用 --debug-phase 时,每个访问者都会以共享的 debug_user 身份登录,所以不要把它用于真实研究。
  • 只有来自服务器本机的请求才能不用密钥打开管理页面,即来自回环地址、且不带 X-Forwarded-For、X-Real-IP 或 Forwarded 请求头的请求。绑定到 127.0.0.1 时也是如此(2.11.0 在这种情况下会放行所有请求),因为同一台机器上的代理或隧道会把其他机器的请求转发到 127.0.0.1。
  • Werkzeug 交互式调试器只在绑定到 127.0.0.1 时运行,因为它会执行在浏览器中输入的代码。

POTATO_ALLOW_REMOTE_DEBUG 不再被读取。带 --host 127.0.0.1 的调试命令仍然可用,也仍然会提供交互式调试器。

图像分类与预标签

  • 模型训练可以拟合图像分类器。 条目指向图像文件的 radio 或 multiselect 方案会基于 CLIP 嵌入进行训练,而过去是在文件路径上拟合 TF-IDF。远程或缺失的图像会被排除,并给出警告。
  • 图像主动学习按文档所述工作。 vectorizer: {name: image} 会构建 CLIP 向量化器。此前管理器无法构建这个名称,所以这类研究实际是按文件路径上的 TF-IDF 排序的。
  • 标注引擎会在图像研究上蒸馏图像分类器(labeling_engine.distill.modality)。
  • 为未标注的条目生成预标签。 model_training.writeback.include_unlabeled: true 会对还没有人标注的条目做预测。此前一次运行只对已经标注过的留出条目做预测,所以写回(write-back)从未到达预标签本该服务的那些条目。

模型训练文档介绍了训练运行、写回和审核队列。

影响早期研究的修复

  • 预标签在重启后丢失。 启动时重放已存储预测的步骤在任何条目加载之前就已运行,所以每次重启都会清空模型审核队列。现在它在条目加载之后运行,并执行与写回相同的检查。
  • 文本模型在 URL 上训练。 带有 url、path 或 file_name 字段的条目会把该字段的值交给训练器,而不是文本。
  • SSO 下重置密码会失败。 在 method: oauth 且启用 allow_local_login 时,每次重置都会报错。现在可以重置本地账户了。
  • ai_support 拒绝 OpenRouter。 现在接受 endpoint_type: openrouter。

发布说明里有完整清单。


Potato 2.11.0

2026 年 10 月发布

Potato 2.11.0 新增了标注引擎(labeling engine)。它用模型为数据集打标签,再用一份盲态随机抽取的人工标签样本来衡量模型出错的频率。你先声明最终标签必须满足的条件,例如“被接受的机器标签中至多 5% 是错的,置信度为 90%”。引擎接受统计检验所支持的机器标签,把其余条目交给人来标注,并写出一份证书,记录检验了什么、用了多少条人工标签。设置方法见标注引擎。

空闲会话现在会被登出,默认在 8 小时后。 在 2.11.0 之前,session_timeout_minutes 对正在服务的应用不起作用,因为这项检查注册在了一个会被 potato start 丢弃的应用对象上。现在,空闲时间超过该设置(默认 480 分钟)的会话会被清除,下一次请求会转到登录页。整夜保持登录的自助终端和实验室共用电脑会开始遇到登出,在这类场合请调高 session_timeout_minutes。

bash
pip install --upgrade potato-annotation

标注引擎

用一个 labeling_engine 块加上 assignment_strategy: engine 即可开启引擎。引擎的来源(sources)是模型,按级联顺序依次尝试,最后一个来源之后,条目交给人来标注。每份契约(contract)对应一个标注方案,并用引擎随机请求、盲态提供的人工标签来检验:页面上不显示预标注、评审模型的判定或 AI 辅助。

  • 来源。 LLM、视觉语言模型、决策模型(Laya 以及任何 /v1/systemone 服务器)、YOLO 检测器、带标签顺序互换的 LLM 评审、评审团、用本研究自身标签训练的模型,以及你已有的标签。
  • 契约。 selective_risk 以给定置信度限定被接受的机器标签中出错的比例。ppi 给出流行率或均值的区间,无论机器质量如何,该区间都有效。no_worse_than_human 运行替代标注者检验,budget_first 预估一笔人工标注预算能换来什么,distributional 则在主观条目上把机器标签与人们的意见分布进行比较。
  • 模态。 单选、有序、数值和多标签方案,图像区域,音频、视频、时间定位和分层片段,3D 物体,以及智能体轨迹的步骤标签。区域、片段、3D 物体和轨迹用一致性报告所用的度量来评分。
  • 抽查。 一部分已被接受的机器标签会以盲态送回给人。当抽查显示错误率高于目标时,引擎在该方案上停止接受机器标签(需开启 features.drift,默认开启),重新认证后恢复接受。
  • 接口。 potato label run|status|certify|certificate|export|calls|distill|optimize|migrate-config、位于 /api/engine/v1 下的 REST API、五个 engine_* MCP 工具、一个 Python SDK,以及位于 /admin/labeling-engine 的管理页面。

一份已满足的契约,是关于机器与标注样本的那些人之间一致程度的统计陈述。引擎不会检查这些人是否标得对,所以用不可靠的标注者检验的契约,证明的是与不可靠标注者的一致。标注引擎契约说明了每种契约检验什么、何时不成立。

icl_labeling、judge_calibration 和 pre_annotation 仍然可用,各自会在启动时打印一条说明,指出对应的引擎写法。potato label migrate-config 会写出等价的 labeling_engine 块。单人模式 和评审对齐(judge alignment)没有被弃用。迁移到标注引擎里有对照表。

一致性

  • /admin/iaa 报告更多方案。 spatial_annotation、temporal_grounding、tiered_annotation 以及智能体轨迹方案(process_reward、trajectory_eval、tool_call_review、failure_attribution、gui_trajectory)以前被当作不支持而跳过,现在会计算分数。
  • /admin/api/agreement 不再报告结构化方案。 只按标签名比较时,智能体轨迹、片段、区域和 3D 物体在每一对标注者之间都显示为完全一致。该路由现在会指向 /admin/iaa,后者会比较这些结构本身。
  • 两个相同的零长度片段现在算作一致。 它们过去被算作完全不一致。
  • 机器评分者不进入发布的数据。 发布和 Paper Mode 会把机器评分者排除在金标准标签和一致性数据之外。

单人模式

  • 盲态建议。 solo_mode.suggestions 在全部条目或一部分抽样条目上隐藏 LLM 的标签,交接时读取的是盲态条目上的一致性,因为屏幕上显示的建议会给核对它的人造成锚定。
  • 花费上限和响应缓存。 ai_budget.cap_usd 会在标注开始前和每个批次之前检查,solo_mode.cache 会复用对重复调用的回复。
  • 决策模型。 systemone 和 laya 端点用一次前向计算为固定选项的方案打标签,可作为快速的第一层。单人模式 里有一份配置。
  • 金标准集、评审团和课程式排序。 solo_mode.gold 在完整运行之前用已知标签给提示词打分,solo_mode.jury 让多个模型对每个条目投票,instance_selection.curriculum 让你从 LLM 认为最容易的条目开始。另外还新增了提示词敏感性检查。

影响 2.10 研究的修复

  • 图像页面会自行保存预填的答案。 在带 pre_annotation 的 image_annotation 方案上,画布加载后重新排版时,会把预填的形状保存为标注者的答案,所以一个没被碰过的条目也算作已回答。现在只有编辑才会保存。在使用了预标注的 2.10 图像研究里,部分算作已回答的条目可能从未被碰过。
  • 不带 CORS 头的主机上的图像无法加载。 不发送 Access-Control-Allow-Origin 头的主机(例如 cocodataset.org)会拒绝画布的请求,页面显示 "Failed to load image"。现在页面会不经 CORS 再加载这类图像。绘制照常可用,而需要读取图像像素的区域填充、SAM 和文本提示分割会说明它们为何无法运行。
  • 没有 color 的预标注形状会被丢弃。 条目显示 "Annotations: 0",没有任何警告。现在该形状会使用其标签的颜色。
  • 单人模式 的 "Generate prompt" 从未调用模型。 现在它会请修订模型写出第一版提示词。没有修订模型时,它退回到任务描述,并说明这一点。
  • 通过 potato mcp connect 被拒绝的调用看起来像成功。 被拒绝的工具调用过去返回 isError: false,现在会作为工具错误返回,并带上服务器的消息。
  • 完整研究骨架示例里有一个失效的键。 Potato 不读取 training.feedback.enabled,所以示例现在设置 feedback.show_explanations。
  • 空闲会话从未被登出,详见本节开头。
  • 仲裁把机器评分者也算了进去。 机器标注者可能把一个条目送去仲裁,min_human_annotations 被忽略,缺少一致性分数时格式化会崩溃。
  • Prolific 自动扩容把机器标注也算了进去,并且忽略了每个条目的上限。现在要开放的名额数只把人工标注计入每个条目的上限。
  • 边缘案例发现在 vLLM 上不起作用。 vLLM 上的引导解码从不返回边缘案例字段,现在这些字段已成为响应模式的一部分。

发布说明里有完整清单。


Potato 2.10.3

2026 年 10 月发布

Potato 2.10.3 修复了 2.10.2 发布后发现的三个错误。

bash
pip install --upgrade potato-annotation
  • 全体一致的数据上的一致性。 当每位标注者在每个条目上都给出相同答案时,/admin/api/agreement 会把该方案返回为 {"error": "float division by zero"}。这种情况下偶然一致为 1,所以 alpha 和两个 kappa 都没有定义。该路由现在把它们报告为 null,percent_agreement 为 1.0,并给出与 /admin/iaa 相同的说明,总体平均值也不再计入该方案。
  • potato deploy button --dry-run 不再联网。 不带 --hf-backup-repo 时,试运行会向 HuggingFace 查询令牌属于谁,令牌无效时会以 traceback 结束。现在试运行使用占位名 <hf-account>/<name>-annotations,与 potato deploy up --dry-run 一致;正式运行则把被拒绝的令牌报告为错误信息。
  • 导入 Potato 时不再计算密码哈希。 Potato 过去在导入时计算一个 PBKDF2 哈希,所以每个进程启动时都要花费 100,000 次迭代,命令行工具也不例外。现在,这个哈希在第一次有未知用户名尝试登录时才生成。导入在 Pyodide 下也重新可用了,Pyodide 的 hashlib 没有 pbkdf2_hmac。

发布说明里有完整清单。


Potato 2.10.2

2026 年 10 月发布

Potato 2.10.2 修复了通过 pip 安装或在 Docker 镜像中无法使用的功能,堵上了以他人身份登录的途径,让 MySQL 后端真正工作起来,并更正了一致性统计。如果你发表过用早期版本算出的一致性数字,请重新计算。

bash
pip install --upgrade potato-annotation
  • SSO 账户接受任何密码。 在启用 OAuth 的任务中,密码表单会让任何人登录由身份提供方注册的账户。现在 SSO 身份不再通过密码认证;在使用 MySQL 的研究中,陌生人也不能再注册现有标注者的用户名并继承其工作。
  • 通过 pip 安装时,ai_support 和调查问卷无法使用。 wheel 漏掉了 AI 提示词和调查问卷,所以用到其中任何一项的研究都会在启动时停止。容器和 potato deploy 的部署目标还漏掉了十个子系统,聊天支持就是其中之一。
  • MySQL 后端从未真正启用。 指定了它的配置会把标注存到磁盘上。用 pip install 'potato-annotation[mysql]' 安装驱动;导出、备份和 potato deploy pull 现在会读取数据库。
  • 59 项一致性统计修复,每一项都对照了 scipy、sklearn 或 krippendorff 包等参考实现。未定义的系数现在报告为未定义,而不是 1.0;序数 alpha 使用 Krippendorff 的序数度量;MACE 对纯粹的垃圾标注者估计的能力约为 0.01,而不是 0.35;重启后结果不再变化;plackett_luce 拟合的是最优-最差似然,而不是重复 Bradley-Terry。
  • 使用地图坐标的点云保留了精度。 采用 UTM 坐标的 LAS 文件过去被绘制在间距可达 0.5 m 的粗网格上。Potato 现在相对于一个本地原点提供该文件,并以文件自身的坐标保存标注。

发布说明里有完整清单。


Potato 2.10.1

2026 年 10 月发布

Potato 2.10.1 修复了 2.10.0 发布后在 potato deploy 和备份中发现的五个问题。在依赖试运行(dry run)的结果之前,请先升级。

bash
pip install --upgrade potato-annotation
  • 试运行对 up 随后会拒绝的部署给出了通过。 没有 --backup 的 Heroku 或 ECS Express、没有备份存储可用来上传项目的 Render 或 Railway,以及项目太大、无法内联发送的 Fly,都会打印一份没有问题的计划。现在计划和 up 执行同一项检查,两者都会打印 REFUSED: <reason> 并以状态码 2 退出。
  • 在无法生效的地方提供了 --demo。 Render、Railway 和 ECS Express 会把你的项目上传到备份所用的存储,所以即使是标注可以丢弃的研究,它们也需要 --backup hf 或 --backup s3。现在预检警告只对 Heroku 和 HuggingFace 提供 --demo。
  • --cloud jetstream2 规划了错误的实例规格(flavor)。 试运行显示的是 m1.small,而 up 创建的是 m3.small。
  • 有两个价格是错的。 potato deploy providers 显示 aws-ec2 每月约 $16,fly 约 $7。计划算出的是 $18.31 和 $5.85,现在摘要显示约 $18 和约 $6。
  • backup: {enabled: false} 关不掉备份,前提是配置中仍有 huggingface_backup 块。现在以新的块为准。

发布说明里有完整清单。


Potato 2.10.0

2026 年 10 月发布

Potato 2.10.0 为 potato deploy 新增了八个托管平台,在磁盘无法在重启后保留的主机上备份标注,并新增了 text_as_image:它把每个条目的文本显示为图片,让标注者无法把文本粘贴进聊天机器人。在本地或云端运行 Potato说明了哪种主机适合哪种研究。

现在正式声明需要 Python 3.9 或更高版本。 一个核心依赖本来就需要它,所以更早的版本同样无法在 3.7 或 3.8 上安装,现在 pip 会在安装任何东西之前就说明这一点。

bash
pip install --upgrade potato-annotation

部署

  • AWS,三种方式。 --provider aws 创建一个每月固定 $12 的 Lightsail 实例,只需要 lightsail:* 权限。aws-ec2 用于关闭了 Lightsail 的账号;aws-ecs 在 ECS Express Mode 上运行容器,前面是一个由 AWS 管理的 HTTPS 地址,费用更高,并且必须配置备份。
  • Heroku,使用一个 Basic dyno。Heroku 每天清空磁盘,所以没有 --backup 或 --demo 时 Potato 会拒绝部署到那里。
  • Fly 和 Railway,各带一个持久卷。
  • Hetzner、Vultr 和 Linode,作为虚拟机,设置方式与 DigitalOcean 相同,并为 IP 地址签发 Let's Encrypt 证书。
  • OpenStack,带 Jetstream2 预设。 Jetstream2 为每个实例分配一个 DNS 名称,所以任务能拿到普通的证书。校园 OpenStack 云和 EGI 同样可用。
  • 部署按钮。 potato deploy button config.yaml --target heroku|render|aws|railway 把“Deploy to Heroku”、“Deploy to Render”或 AWS“Launch Stack”按钮所需的文件写入你的仓库,让其他人可以在自己的账号里运行这个任务。

新的 deploy-aws 和 deploy-openstack extra 会安装 AWS 和 OpenStack 客户端。

备份与恢复

新的 backup 块每五分钟把标注输出和 SQLite 数据库的快照复制到一个 HuggingFace 数据集、一个兼容 S3 的存储桶,或同时复制到两者。当服务器以空的任务目录启动而备份中有数据时,Potato 会在加载任何内容之前先恢复数据,因此重启之后标注者可以从中断的地方继续。向 potato deploy up 传入 --backup hf、--backup s3 或 --backup hf,s3 即可启用。旧的 huggingface_backup 块会被读作只有一个 sink、且关闭了恢复的 backup 块,所以现有部署的行为保持不变。

文本显示为图片

text_as_image: true 在服务器上把每个条目的文本渲染成 PNG,并从页面、嵌入的条目记录和 JSON 端点中移除这些文字,使标注者没有任何可以选中、复制或粘贴的内容。这个功能提高了把条目粘贴进聊天机器人的成本,但标注者仍然可以重新输入文本,或者对截图做 OCR。屏幕阅读器无法从图片中读出任何内容,所以如果研究中有使用屏幕阅读器的标注者,这个功能并不适用。当 text_as_image 与片段方案、读取条目文本字段的方案、Pocket Mode 或多人房间(Rooms)同时使用时,Potato 会拒绝启动。由 @Eyecatch3r 在 PR #169 中贡献。

影响已收集数据的修复

  • 在没有持久磁盘的主机上,重启会丢失之前的工作。 服务器以空状态启动,回来的标注者的新状态会覆盖已备份的副本。启动时恢复修复了这个问题。
  • 使用 --volume-gb 的 DigitalOcean 把标注保存在根磁盘上,而不是卷上。输出和 SQLite 数据库现在位于 /data。
  • HuggingFace 备份在官方发布的镜像中不起作用,因为镜像里没有 huggingface_hub;在 Render 和 DigitalOcean 上,--hf-token 设置的变量没有任何地方读取。现在镜像会安装新的 hosting extra。
  • Render 部署启动时没有项目,容器以“config file not found”退出。现在容器会在启动时下载项目并校验其 sha256。

发布说明里有完整清单。


Potato 2.9.2 至 2.9.4

2026 年 9 月发布

如果你不信任的人能访问你的服务器,请升级到 2.9.4 或更高版本。 在 2.9.4 之前,/forgot-password 表单会为提交的任何用户名创建重置令牌,并在页面上显示重置链接,因此任何能访问服务器的人都可以接管任何密码账号,包括管理员账号(GHSA-43v4-43pw-4rp2)。现在该表单不再创建令牌。重置链接只能来自 POST /admin/create_reset_token 和 potato reset-password 命令。由 HDEF 报告并附带补丁。

  • 手机(2.9.4)。 在触摸屏上,控件高度至少为 44 px,页头从三行变为两行,multirate 变成一列带标签的行,片段高亮通过长按完成。
  • 机器标注者(2.9.4)。 machine_annotators 块用于声明由程序担任的评分者,例如检测器或 LLM。随后 /admin/iaa 会报告人与人之间、机器与机器之间以及合并后的一致性,主要数字只统计人类标注者;只要有任何记录来自机器,csv、tsv 和 parquet 导出就会增加一个 annotator_origin 列。
  • URL 前缀下的会话 cookie(2.9.4)。 同一主机上以 /app1 和 /app2 提供的两个研究共用一个会话 cookie,所以登录其中一个就会退出另一个。现在 cookie 的作用域限定在各自的前缀内。已在 PR #172 中由 @Eyecatch3r 修复。
  • 更快的翻页(2.9.2)。 脚本和样式表在条目之间保持缓存,Next 需要的往返次数更少。在往返时间为 80 ms 的链路上,单选按钮任务中的 Next 从约 2.6 s 降到约 0.8 s。
  • 紧接着 Next 的文本编辑(2.9.2)。 清空文本框后在一秒内按下 Next,旧文本会被保留下来。现在每次保存都会先应用尚未提交的编辑。

Potato 2.9.0

2026 年 9 月发布

Potato 可以从 brat、doccano、Prodigy、CoNLL 和 REFI-QDA 导入项目,并在本地完成音频转写与说话人分离。导出结果会记录每个图像形状是人工绘制、模型建议还是导入而来,以及每次投票是在哪个房间里投出的。本次发布的大部分内容是缺陷修复。

升级前请对每个配置运行 potato validate --strict。 有几处改动会让原本正常的 2.8.2 研究拒绝启动或行为发生变化:同一阶段内重复的方案名称会被拒绝,min_annotators_per_instance 变成了单条目上限的别名,require_fully_annotated: true 现在会被强制执行,加载失败的阶段会中止启动,片段偏移量按码点而非 UTF-16 单元计算。集合型、顺序型、矩阵型和带标签序数型方案的一致性数值会改变,应当重新计算。发布说明里有完整清单。

bash
pip install --upgrade potato-annotation

导入与导出

  • 面向 brat、doccano、Prodigy、CoNLL-2003/CoNLL-U 和 REFI-QDA .qdpx 的导入器,以及一个 .qdpx 导出器。参见导入项目。
  • 导出中的来源信息。 每个图像形状都会记录它是人工绘制还是模型建议(source、ai_model、confidence、edited、carried_over、import_format)。在多人房间中投出的票会带上房间、角色、初始投票、揭晓后是否改变,以及投票人数。
  • csv、jsonl 和 parquet 格式的片段导出会包含被覆盖的文本。
  • python -m potato.export --format adjudication 是新增的,并且现在每种方案类型都有“采纳某个答案”的裁决控件(此前只有 radio 和 likert 有)。

音频、视频与转写

  • 本地转写与说话人分离,基于 faster-whisper 和 sherpa-onnx,不需要 PyTorch,也不需要 Hugging Face 令牌:安装 potato-annotation[transcribe],然后运行 potato transcripts <dir> --transcribe --diarize --num-speakers N -o out.json。参见转写格式。
  • segment_schemes 可以在音频或视频片段内渲染任意标注类型。它此前会被接受,但会被忽略。

一致性、质量与 AI

  • 随时间变化的一致性,与编码本的修订版本对齐,并在 /admin/iaa 上提供重新校准的触发入口。
  • 一种模型输出审阅模式,包含空预测的那一部分,因此可以计算召回率。
  • ai_budget.cap_usd 会拒绝启动付不起的运行,ai_budget.prices 则在配置中设定每个模型的费率。
  • ai_support 会记录 final_annotation 和 pre_annotation_seeds,因此可以用你自己的数据测量采纳率。

部署与界面

  • 每个页面都支持反向代理和路径前缀(#168,Aldo Costa)。参见反向代理。
  • card_sort 不用鼠标也能操作,移动操作会通报给屏幕阅读器。
  • resizable、max_height 和 min_height 在每种展示类型上都生效。

影响结果的修复

  • /admin/api/agreement 从未产生过数值,而且比较的是存储值而不是标签名,因此每个类别型方案都显示为完全一致。
  • 在每条目两人标注的研究中,第二位标注者会被送到完成页面,之后给出的所有答案都会丢失。
  • 除 fixed_order 之外的每种分派策略下,AI 建议针对的都是错误的条目。
  • 在默认的内存配置下,注册信息从未被保存,因此重启之后任何人都可以占用一个已有的用户名。

感谢 Aldo Costa(@Eyecatch3r)贡献 #168 和 #171,感谢 @ruthenian8 报告并诊断 #170。


Potato 2.8.2

2026 年 8 月发布

2.8.1 并没有包含其发布说明所描述的五项安全修复中的两项:媒体端点上的 SSRF 修复(GHSA-9394-85jj-2mhj)和调试模式加固(GHSA-r4ww-vc5h-35qf)。2.8.2 把两项都带上了。如果你是为其中任一问题升级到 2.8.1 的,请再升级一次。参见 2.8.2 发布说明。


Potato 2.8.1

2026 年 8 月发布

一次安全发布。它修复了通过实时编码智能体实现的远程代码执行(GHSA-cm4p-5rfv-x252)、无需管理员密钥即可读取的管理配置,以及一个接受所有请求的轨迹摄取 webhook。如果你在 localhost 以外的任何地方运行 Potato,请升级,并直接升到 2.8.2,它带有 2.8.1 缺失的那两项修复。


Potato 2.8.0

2026 年 8 月发布

Potato 过去是一个带图像模式的文本标注平台。现在它覆盖图像、视频、十亿像素扫描件、3D 点云、深度图、机器人回合、生成式视频推演以及视觉—语言接地。对其中每一项,它都会报告机会校正后的一致性。

如果你是从 PyPI 安装的,请升级。 2.7.1 及之前的 wheel 用单层通配符声明包数据,因此有 27 个位于子目录中的模板在每个 wheel 里都缺失。对于运行 pip install 的人来说,单人模式的设置路由、管理页面、评判校准和语料地图全都是坏的;从 git 检出运行的人则从未遇到过。已在 PR #164 中由 @0x6362 修复。

bash
pip install --upgrade potato-annotation

几何与时间上的一致性

  • 空间标签的机会校正一致性,分解为检测(标注者是否找到了相同的对象)、分类(他们是否给出了相同的称呼)和定位(他们是否把它放在了相同的位置,以相对经验机会基线的 σ 加一次 KS 检验来报告)。
  • STAPLE 用于掩膜共识。它会估计一个潜在边界,以及每位评分者的敏感度和特异度。在一个两位细心标注者以二比三被噪声标注者压过的语料上,多数投票相对真值的 Dice 为 0.846,STAPLE 为 1.000。
  • 精确的旋转 3D IoU,因此长方体的一致性对无人机、手持和室内数据都是正确的,而不只是对水平框正确。
  • 时间一致性以扫描的形式报告,覆盖一系列匹配容差,因为 0.25 秒下的一致性和 2 秒下的一致性是两个不同的说法。
  • 未定义的数值会自己给出解释。在完全一致的语料上 α 确实没有定义,而一个光秃秃的 NaN 读起来像是计算坏了。

这同时修复了一个缺陷:裁决比较的是标注的键,而图像方案把所有内容都存在一个名为 _data 的键下。于是每一对图像的一致性都是 1.0,两个毫无共识的标注者看上去完全一致,也就没有任何图像被送去审阅。

视觉

  • 几何基元:折线、椭圆、2D 长方体、带骨架拓扑和 COCO 可见性标志的关键点集,以及按实例索引的画笔掩膜。
  • 浏览器内点击即分割——在 ONNX Runtime Web 上运行 MobileSAM,每次点击约 132 毫秒,不需要 GPU,也不需要每次点击都发一次网络请求。
  • 开放词汇文本提示:输入一个短语,所有匹配项都会被框出来。Grounding DINO,Apache-2.0 许可,同样在浏览器内运行。
  • 视频掩膜传播,使用 SAM 2 的记忆模块,实测每帧 IoU 为 0.974–0.979,整个序列上没有衰减。这一项按设计在服务端运行;浏览器另有一条更轻量的延续路径。
  • 深度缩放用于十亿像素图像,同时以 DZI 和 IIIF Image API 3.0 提供,画笔掩膜按源文件的完整分辨率绘制。
  • 媒体摄取:多页 16 位 TIFF、HEIC、相机 RAW,以及通过带缓存的服务端代理处理的 ProRes/MKV/MOV。
  • 15 种导入格式和 29 种导出格式,其中 11 种可以往返。Darwin 两个方向都支持。

图像标注的键盘快捷键现在默认遵循 V7 的约定:b 画笔、r 矩形、f 填充、k 关键点、v 选择。对已经上线的研究,可以在方案上设置 keybinding_profile: legacy 恢复旧的绑定。

3D、深度与机器人

  • spatial_annotation 支持 PCD、PLY、LAS、KITTI .bin 和 .xyz 点云,提供 3D 长方体、点、折线和逐点分割、八叉树细节层次,以及正交切片面板。旋转以四元数存储,因此只有偏航角的字段会悄悄丢弃的安装倾角,能在 KITTI 往返中保留下来。
  • 深度图支持 16 位 PNG/TIFF、NPY、PFM 和 EXR,提供窗宽窗位、色彩映射、光标下的米数读数,以及反投影到同一个 3D 查看器中。
  • 感知标定的投影,因此在 3D 中绘制的长方体会出现在每一张相机图像上,可以在 2D 中核对。
  • episode_annotation 把 N 路同步视频流和 M 条机器人时间序列轨道放在同一条时间轴上,提供阶段分割、每阶段的结果和稠密奖励曲线。可导入 LeRobot v2、RLDS/TFDS 和 HDF5。轨道降采样会保留极小值和极大值,因此单帧的力尖峰在进入 300 像素宽的轨道之后依然存在。

评测

  • rollout_evaluation 把 2 到 N 段生成视频放在同一个时钟上播放,请标注者标出世界开始讲不通的那一帧,然后标注是哪条物理或因果性质被破坏了。面板可以设为盲评,并按标注者稳定地打乱顺序。
  • grounding_eval 和 region_caption 用四个阈值下的 IoU 为接地打分,用点落在区域内的命中率为指点打分,因为点没有面积,对点计算的 IoU 永远是零。无法接地的情况单独计数。

其余更新

  • 带线索的对话:dialogue 展示类型会根据每一轮的 reply_to 渲染回复结构。potato convokit 可以导入任何 ConvoKit 语料,--format convokit 可以导回,而且不依赖 convokit。
  • 绘制遥测——每个形状的耗时、笔画动态、修改次数和 AI 建议的采纳延迟。整批照单全收的预标注会让一致性上升而准确率不变,因为采纳了同一条建议的标注者在构造上就是完全一致的。在标签本身分不出来的地方,计时是一个能区分审阅与盖章放行的过程信号。
  • 实时数据库摄取:启动之后新建的行会在 poll_interval_seconds 之内变为可标注,无需重启(#166)。
  • 机器可读的规格——一份覆盖 159 个配置键、61 种标注类型和 24 种展示类型的 JSON Schema,以及一份包含 419 条路径的 OpenAPI 文档。两者都由代码生成,任何一份出现漂移 CI 都会失败,因此编辑器或编码智能体可以核对配置,而不必凭空发明选项。
  • 没有对外请求:在全部 14 个模板中,每个样式表、脚本、字体和图标现在都由安装目录提供。styles.css 此前开头会 @import Google Fonts,这会在页面加载时把每位标注者的 IP 地址发给第三方,登录页面还带着一个第三方 favicon。两者都已移除。
  • 管理端的 Instances 标签页从平方复杂度降到线性:2,000 个条目从 15.1 秒降到 23 毫秒。

Potato 2.7.2

2026 年 8 月发布

针对自由文本字段的击键记录。Potato 记录一个答案背后的时间信息,从不记录字符本身,而这已经足以把打字和粘贴区分开。

  • 击键记录——对每个自由文本字段以不读取内容的方式捕捉停顿、爆发、修改和粘贴,每份回答会计算约四十个汇总特征。默认关闭。
  • 写作过程检测——六条具名规则,阈值明确,并会报告每个标记背后的特征值。阈值可以针对你自己的项目重新拟合,如果你有标签,还有一条有监督的路径。
  • 伦理指引——示例知情同意措辞、保留与删除、基率问题,以及为什么一个标记是查看的提示而不是结论。
  • 需要显式开启的导出——export_include_typing_dynamics 会写出一份汇总的附属文件,--format keystrokes 会把原始流写入 Parquet。两者默认都不开启,因此行为数据不会意外出现在数据集发布中。

向标注者披露默认开启,关掉它会在启动时记录一条警告。


Potato 2.7.1

2026 年 7 月发布

转写稿摄取,前提是转写稿已经存在。有人跑过 Whisper,或者下载了字幕,或者拿到了一份语料,而下一步不应该是写一个转换脚本。

  • 21 种转写稿和字幕格式,从原来的 6 种增加而来。Whisper、WhisperX、whisper.cpp、AWS Transcribe、Deepgram、AssemblyAI、Rev.ai、SPoRC、SubRip、WebVTT、SubStation Alpha、TTML/DFXP、YouTube 的 json3 和 srv1/srv2/srv3、NIST CTM、Praat TextGrid,以及 ELAN EAF。识别依据的是文件内容,不是扩展名。
  • 附属转写文件——数据文件可以指向磁盘上的 media/int_001.srt,而不必把转写稿内联进去。路径会经过标准的路径安全检查在 task_dir 下解析,因此你的转写稿仍然是可以做 diff 和重新导出的文件。
  • potato transcripts——一个转换器,把一整个文件夹的 ASR 输出变成可直接标注的数据文件,按文件主名把转写稿和媒体配对。--dry-run 会在写入任何内容之前报告它识别到了什么,--emit-config 会打印一份匹配的配置。
  • 四个方案共用一套格式词汇——speech_transcript、voice_interaction 和 tiered_annotation 现在接受 audio_dialogue 展示类型接受的一切。此前只有展示类型接受。
  • **标注 Whisper 转写稿和标注 YouTube 字幕**把这两个起点从头到尾走了一遍。

在 2.7.1 中,ASR 和说话人分离这两步在上游运行,Potato 读取它们的输出。Potato 2.9 通过 potato transcripts --transcribe --diarize 增加了本地转写和说话人分离,而出声思考模式自 2.7.0 起就已经在本地转写标注者自己的语音。


Potato 2.7.0

2026 年 7 月发布

Potato 2.7 建立在一个想法之上:标注工具应当测量判断是如何做出的,而不只是记录判断的结果。这对两类判断者都适用——做标注的人,以及被评测的 AI 模型。

测量人类如何标注

七项需要显式开启的功能,没有一项需要 LLM。

  • 心理测量引擎——一个实时的项目反应理论层,给每个标签一个后验概率和一个敏感性区间(p = 0.94 [0.88–0.97]),而不是一个光秃秃的多数投票。它仅凭一致性模式就能估计标注者能力和条目难度,把条目路由给判断信息量最大的标注者,并标出可能的编码本缺陷。
  • 多人房间——把你的团队已经在共享屏幕上开的校准会内置到工具里并加上测量:盲投、主持人揭晓、讨论、重投,配一个实时的 Krippendorff α 仪表,显示这场会议值多少。
  • 边界实验室——在每个标签之后提出反事实探针(“这还成立吗?”),把普通标注变成对比集,并且不用埋设黄金条目就能发现前后不一致的标注者。
  • 吐真剂——“出人意料地流行”式的同伴预测打分,在标注困难的地方胜过多数投票,而且不需要黄金标签。
  • 出声思考模式——标注者一边工作一边说话;语音转文字完全在本地运行,逐字转写稿成为理由说明。
  • 论文模式——一条命令把项目变成一份可编译的 LaTeX 数据集报告,含一致性统计和引用。
  • 口袋模式——一等公民级别的移动端标注,带可滑动的卡片堆、离线同步和 PWA 安装。

评估 AI 智能体

智能体评测套件扩展到了团队结构和多模态智能体:可点击的智能体交互图、跨智能体的失败归因、交接审阅、单个智能体和团队的记分卡、工具争用时间线、涌现行为标注,以及 GUI/计算机操作轨迹、全双工语音时间线、视频时间接地和文档表格结构。

其他各处

跨文档事件标注、轮次级标注、带整页编辑器的活文档编码本、可选 OCR 的 PDF 跨页链接、带分组方案的 RBAC 角色、10 种语言的管理端和标注端仪表板,以及轻得多的安装——AI SDK 现在按需加载,启动时间从约 2.0 秒降到 0.7 秒。


Potato 2.6.0

2026 年 6 月发布

Potato 2.6 进入定性数据分析领域,并深化了智能体评测工具集。它新增了 QDA 模式、一套带基于信号的分诊队列的 LLM 评判校准与对齐工作流,以及能产出 SFT 和 DPO 训练数据的轨迹编辑方案。Potato 同时改用 GPL-3.0-or-later 许可(原为 PolyForm Shield)。

QDA 模式

需要显式开启的 qda_mode 把 Potato 变成一个协作式的定性编码工作区。启用它会组合出活文档编码本、原生码编码、分析者备忘、个案和全文搜索,默认值针对一位分析者编码整个语料的场景做了调整。

yaml
qda_mode:
  enabled: true            # codebook + memos + cases + search
codebook_invivo_key: i     # mint a code from a text selection
search:
  enabled: true
  annotator_claim: true

了解 QDA 模式 →

LLM 评判校准与对齐

用一个或多个 LLM 评判者自动标注数据,然后跑一轮盲的人工校准,测量准确率、一致性和校准误差。另有一套单评判者的对齐工作流,在你打磨评分标准的过程中跟踪相对人工黄金标签的 Cohen kappa,并可在标注过程中内联显示评判结果。

了解评判校准 → · 评判对齐 →

基于信号的分诊队列

按每个条目的质量信号给标注队列排序——智能体的一次报错、生产环境的一次点踩、一个低分,或者任何自定义字段——让审阅者先看到最可疑的条目,而不是按到达顺序来看。

yaml
triage:
  enabled: true
  signal_field: quality_score
  invert_signal: true
assignment_strategy: priority

了解分诊队列 →

面向 SFT/DPO 的轨迹编辑

新的 trajectory_edit 和 trajectory_correction 方案让标注者改写智能体轨迹的步骤。导出器会把每一对原始/修正内容变成监督微调的目标(trajectory_sft.jsonl)和 DPO 偏好对(trajectory_dpo.jsonl)。

了解轨迹编辑 →

eval_trace 显示类型

一个三栏的智能体轨迹展示类型——推理、函数调用和最终答案——为持续评测而建,轨迹通过 webhook、Langfuse 轮询器或被监视的目录到达,并在落地时接受评判。

了解 eval_trace →

工作流与分派

  • 异质覆盖——按条目设置的标注者上限、标注者间一致性报告,以及针对不同条目需要不同标注人数的任务的裁决路由。
  • 回收被放弃的分派——找回 Prolific 或被质控拦下的工作者留下的分派,保留期可配置,回收操作幂等。
  • 自定义批次分派策略——把预先定义好的条目批次分派给特定的标注者。
  • 反向代理 URL 前缀——在反向代理后以子路径提供 Potato 服务。

许可

Potato 现在以 GPL-3.0-or-later 发布,由 PolyForm Shield 改换而来。你可以使用、修改和再分发它,包括用于商业用途,只要衍生作品仍然采用 GPL。详见关于页面。

性能与稳定性

  • 启动大约快 3 倍。 ML 栈不再在启动时急切加载:导入时间从约 6.5 秒降到 2 秒,5 万条目的启动从约 10 秒降到 5.7 秒,常驻内存从约 750MB 降到 365MB。
  • 方案重命名。 annotation_type: highlight 现在是 span,并已提供迁移。更新旧配置只需改掉类型名;已有的 span 配置不受影响。
  • 一轮广泛的 QA 加固涉及路由注册、训练阶段、Prolific、持久化、导出与问卷处理、webhook、单人模式和主动学习。

Potato 2.5.0

2026 年发布

一波定性编码方面的改进,让 Potato 在 NLP 和 ML 标注之外,对定性研究的工作流也站得住脚。

  • 标注者间一致性——除 Krippendorff alpha 之外,还有 Cohen kappa(两两)和 Fleiss kappa(N 位评分者),通过管理端一致性 API 提供。参见标注者间一致性指南。
  • 新的导出器——codebook(按方案导出的 CSV,含编码层级、颜色、描述和使用次数)和 quotation_report(按片段导出的 CSV,含文本、偏移量、源文档和编码者)。
  • 编码分析——用于编码两两共现的管理端点,以及基于已有实例元数据的编码—属性交叉表。

Potato 2.4.5

2026 年发布

一次稳定性与工具链发布。

  • 带验证的迭代改进——一个可插拔框架,用于迭代改进单人模式的标注指南,并设有防止指南自相矛盾和元数据泄漏的护栏。
  • 配置校验器——新的 python -m potato.validate_cli 命令行工具,对照已知配置模式检查配置键。
  • 安全——修复了路径校验中一个通过同级目录前缀绕过的路径穿越问题(GHSA-q9m2-fhv9-3jcf)。
  • 在保存/导航状态同步、Prolific 集成、多阶段导航和质量控制反馈方面的修复。

Potato 2.3.0

2026 年 3 月 9 日发布

Potato 2.3 是 Potato 历史上最大的一次发布,带来了智能体标注、单人模式、最优—最差量表、SSO/OAuth 认证、Parquet 导出、15 个新的演示项目和安全加固。

智能体标注

一套通过人工标注来评测 AI 智能体的完整系统。包含 12 个轨迹格式转换器、3 种专用展示类型和 9 个预置标注方案。

12 个轨迹格式转换器——从 OpenAI、Anthropic、SWE-bench、OpenTelemetry、MCP、CrewAI/AutoGen/LangGraph、LangChain、LangFuse、ReAct、WebArena/VisualWebArena、ATIF 和原始浏览器录制中导入智能体轨迹。支持自动识别。

转换是服务器启动之前的一个命令行步骤:

bash
python -m potato.trace_converter \
  --input traces.json \
  --input-format react \
  --output data/traces.jsonl

转换后的文件就是一个普通的数据文件,由其中一种智能体展示类型来渲染:

yaml
data_files:
  - "data/traces.jsonl"
 
instance_display:
  fields:
    - key: steps
      type: agent_trace
      label: "Agent trajectory"

3 种展示类型:

  • 智能体轨迹展示——彩色编码的步骤卡片,带可折叠的观察结果、JSON 美化输出和时间线侧栏,面向使用工具的智能体
  • 网页智能体轨迹展示——完整截图配 SVG 叠加层,显示点击目标、文本输入和滚动操作;胶片条导航,面向浏览网页的智能体
  • 交互式聊天展示——实时聊天模式(标注者通过代理与智能体交互)和轨迹审阅模式,面向对话式智能体

逐轮评分——在整体轨迹之外对单个步骤评分,用于细粒度评测。

9 个预置方案——agent_task_success、agent_step_correctness、agent_error_taxonomy、agent_safety、agent_efficiency、agent_instruction_following、agent_explanation_quality、agent_web_action_correctness、agent_conversation_quality。

智能体代理系统——用于实时智能体评测的 OpenAI、HTTP 和 echo 代理。

了解智能体标注 →


单人模式

一种由单个人类标注者与 LLM 协作标注整个数据集的工作流,与多标注者流水线的一致性达到 95% 以上,而所需的人工标签总量只有 10-15%。

单人模式以阶段状态机的方式运行,而不是一个固定序列。它依次经过设置、提示词审阅、可选的边缘案例循环、并行标注、分歧消解、带定期审阅和规则审阅的主动标注、自主标注和最终验证。其中五个阶段在发现问题出在提示词上时可以退回提示词审阅,而最终验证在样本未达到阈值时会回落到主动标注。

yaml
solo_mode:
  enabled: true
  labeling_models:
    - endpoint_type: openai
      model: "gpt-4o"
      api_key: ${OPENAI_API_KEY}
  thresholds:
    end_human_annotation_agreement: 0.92
    minimum_validation_sample: 50
  state_dir: "solo_state"

多信号实例优先级排序——instance_selection 对七个信号(低置信度、多样性、LLM 预测、分歧、随机、数据制图、边缘案例规则)加权,决定人类接下来看到什么。

了解单人模式 →


最优-最差量表

高效的比较式标注,标注者从元组中选出最好和最差的条目。按平衡不完全区组设计自动生成元组,并提供三种打分方法(计数法、Bradley-Terry、Plackett-Luce)。

yaml
annotation_schemes:
  - annotation_type: bws
    name: fluency
    description: "Which sentence reads most fluently?"
    tuple_size: 4
    best_description: "Most Fluent"
    worst_description: "Least Fluent"

了解最优-最差量表 →


SSO 与 OAuth 认证

可用于生产的认证方案,支持 Google OAuth(域名限制)、GitHub OAuth(组织限制)和通用 OIDC(Okta、Azure AD、Auth0、Keycloak)。支持自动注册、混合模式和会话管理。

yaml
authentication:
  method: "oauth"
  providers:
    google:
      client_id: ${GOOGLE_CLIENT_ID}
      client_secret: ${GOOGLE_CLIENT_SECRET}
      allowed_domain: "umich.edu"
  user_identity_field: "email"
  auto_register: true
 
secret_key: ${POTATO_SECRET_KEY}

了解 SSO 与 OAuth →


Parquet 导出

把标注导出为 Apache Parquet 格式,产生三个结构化文件:annotations.parquet、spans.parquet 和 items.parquet。支持 snappy、gzip、zstd、lz4 和 brotli 压缩、增量导出以及按日期/标注者分区。可与 pandas、DuckDB、PyArrow、Polars 和 Hugging Face Datasets 配合使用。

yaml
export_annotation_format:
  - parquet

了解 Parquet 导出 →


15 个新的演示项目

project-hub/ 中的新演示覆盖智能体标注(5 个)、单人模式(3 个)、最优-最差量表(3 个)、认证(2 个)和导出工作流(2 个)。用 potato start config.yaml 可以启动其中任意一个。


安全加固

  • 加密安全的会话令牌,过期时间可配置
  • 默认启用 CSRF 保护
  • 认证端点上的速率限制
  • 对用户提供内容的输入净化
  • 依赖审计,所有包均已更新
  • 内容安全策略响应头

其他改进

  • 针对不受支持的智能体框架的自定义轨迹转换器
  • 带多标注者验证抽样的混合单人模式
  • 带分数收敛图表的 BWS 管理仪表板标签页
  • 按日期分区的增量 Parquet 导出

v2.2 与 v2.3 对比

功能v2.2v2.3
智能体标注不可用12 个转换器、3 种展示、9 个方案
单人模式不可用由阶段状态机驱动的人机协作工作流
最优-最差量表不可用带 3 种打分方法的 BWS
认证仅用户名+ Google OAuth、GitHub OAuth、OIDC
Parquet 导出不可用三文件 Parquet,6 种压缩选项
演示项目125+140+(新增 15 个)
安全基础CSRF、速率限制、CSP、安全会话

Potato 2.2.0

2026 年 2 月 20 日发布

Potato 2.2 是一次重要的功能发布,带来 9 个新的标注方案、可插拔的导出系统、MACE 能力估计、55 份经过验证的调查问卷和远程数据源。

新增标注方案(9 种)

事件标注——带触发词片段和带类型论元角色的 N 元事件结构。可以标注 ATTACK、HIRE、TRAVEL 这类事件,论元实体受约束,并以轮辐式弧线可视化。

yaml
annotation_schemes:
  - annotation_type: event_annotation
    name: events
    description: "Mark the event triggers and their arguments"
    span_schema: entities
    event_types:
      - type: "ATTACK"
        trigger_labels: ["EVENT_TRIGGER"]
        arguments:
          - role: "attacker"
            entity_types: ["PERSON", "ORGANIZATION"]
            required: true

了解事件标注 →

实体链接——把片段标注链接到外部知识库(Wikidata、UMLS、自定义 REST API)。在任意片段方案上加一个 entity_linking: 块即可启用知识库搜索和链接。

了解实体链接 →

分诊——Prodigy 风格的接受/拒绝/跳过界面,用于快速筛查数据。标签可自定义,带键盘快捷键和自动前进,适合高吞吐标注。

了解分诊 →

成对比较——用二选一(点击偏好的方块)或量表(滑块)模式比较两个条目。支持 items_key、allow_tie,以及范围可配置的 scale: 块。

了解成对比较 →

对话树——标注层级式的对话结构,支持逐节点评分、路径选择和分支比较。

了解对话树 →

共指链——把共指的文本提及归为链条,并带视觉指示。支持实体类型、单例控制和多种高亮模式。

了解共指链 →

分割掩膜——新增 fill、eraser 和 brush 工具,用于像素级的图像分割。

面向 PDF/文档的边界框——在 PDF 页面上画框,用于文档标注任务。

不连续片段——allow_discontinuous: true 允许把不相邻的文本段选为同一个片段。


智能标注

MACE 能力估计——变分贝叶斯 EM 算法,联合估计真实标签和标注者能力分数(0.0-1.0)。适用于 radio、likert、select 和 multiselect 方案。

yaml
mace:
  enabled: true
  trigger_every_n: 10
  min_annotations_per_item: 3

了解 MACE →

选项高亮——在离散标注任务中,用 LLM 高亮可能正确的选项。为排名前 k 的选项加星标,同时把可能性较低的选项调暗。

yaml
ai_support:
  option_highlighting:
    enabled: true
    top_k: 3
    dim_opacity: 0.4

了解选项高亮 →

多样性排序——基于嵌入的聚类和轮转抽样,确保标注者看到的是内容多样的条目,而不是连续出现的相似条目。

yaml
assignment_strategy: diversity_clustering
diversity_ordering:
  enabled: true
  prefill_count: 100

了解多样性排序 →


导出系统

新的可插拔导出命令行工具(python -m potato.export)可以把标注转换成 6 种业界标准格式:COCO、YOLO、Pascal VOC、CoNLL-2003、CoNLL-U 和分割掩膜。

bash
python -m potato.export --config config.yaml --format coco --output ./export/

了解导出格式 →


远程数据源

通过新的 data_sources: 配置块,从 URL、S3、Google Drive、Dropbox、Hugging Face、Google Sheets 和 SQL 数据库加载标注数据。包含部分加载、缓存和凭据管理。

了解远程数据源 →


调查问卷

55 份经过验证的问卷,分为 8 个类别(人格、心理健康、情感、自我概念、社会态度、作答风格、简版、人口统计)。在 prestudy/poststudy 阶段用 instrument: "tipi" 调用。

了解调查问卷 →


其他改进

  • 带关键帧插值的视频目标跟踪
  • 支持外部 AI 配置文件
  • 表单布局网格的改进
  • 针对 PDF、Word、代码和电子表格的格式处理器

Potato 2.1.0

2026 年 2 月 5 日发布

Potato 2.1 引入了实例显示系统、视觉 AI 支持、片段链接、多字段片段标注和布局自定义。

实例显示系统

新的 instance_display 配置块把内容显示和标注分开。可以把图像、视频、音频、文本和对话的任意组合,与任意标注方案并排显示。

yaml
instance_display:
  fields:
    - key: image_url
      type: image
      display_options:
        max_width: 600
        zoomable: true
    - key: description
      type: text
 
annotation_schemes:
  - annotation_type: radio
    name: category
    description: "What category best describes this image?"
    labels: [nature, urban, people]

支持 24 种展示类型,包括 text、html、image、video、audio、depth_map、dialogue、conversation_tree、pairwise、code、spreadsheet、document、pdf、gallery,以及五种智能体轨迹展示。

了解实例显示 →


多字段片段标注

片段标注方案现在支持 target_field 选项,可以在同一个实例的多个文本字段上标注。

yaml
annotation_schemes:
  - annotation_type: span
    name: source_entities
    description: "Label the entities in the source document"
    labels: [PERSON, ORGANIZATION]
 
  - annotation_type: span
    name: summary_entities
    description: "Label the entities in the summary"
    labels: [PERSON, ORGANIZATION]

了解片段标注 →


片段链接

新的 span_link 标注类型用于在已标注的片段之间建立带类型的关系。支持有向和无向链接、N 元关系、弧线可视化和标签约束。

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Highlight the named entities in the text"
    labels:
      - name: "PERSON"
        color: "#3b82f6"
      - name: "ORGANIZATION"
        color: "#22c55e"
 
  - annotation_type: span_link
    name: relations
    description: "Link the entities that stand in a relation"
    span_schema: entities
    link_types:
      - name: "WORKS_FOR"
        directed: true
        allowed_source_labels: ["PERSON"]
        allowed_target_labels: ["ORGANIZATION"]
        color: "#dc2626"

了解片段链接 →


视觉 AI 支持

四个新的视觉端点,为图像和视频标注提供 AI 辅助:

  • YOLO——快速的本地目标检测
  • Ollama Vision——本地的视觉—语言模型(LLaVA、Qwen-VL)
  • OpenAI Vision——GPT-4o 云端视觉
  • Anthropic Vision——带视觉能力的 Claude

功能包括目标检测、预标注、分类、提示、场景检测、关键帧检测和目标跟踪。

了解视觉 AI 支持 →


布局自定义

用 HTML 模板和 CSS 创建复杂的自定义视觉布局。Potato 会生成一个可编辑的布局文件,你也可以提供一个完全自定义的模板,使用网格布局、彩色编码的选项和分区样式。

yaml
task_layout: layouts/custom_task_layout.html

附带三个示例布局:内容审核、对话质检和医疗审阅。

了解布局自定义 →


标签理据

第四项 AI 能力,为每个标签为什么可能适用生成平衡的解释,帮助标注者理解不同的分类视角。

yaml
ai_support:
  features:
    rationales:
      enabled: true

了解 AI 支持 →


其他改进

  • 50 多个新测试,提升可靠性
  • 响应式设计的改进
  • 更好的 project-hub 组织结构,含布局示例
  • 各标注类型的缺陷修复

v2.0 与 v2.1 对比

功能v2.0v2.1
实例显示靠标注侧的变通做法专门的 instance_display 块
片段目标单个文本字段用 target_field 支持多字段
片段链接不可用完整的 span_link 类型
视觉 AI不可用YOLO、Ollama Vision、OpenAI Vision、Anthropic Vision
布局自定义基础的自动生成自动生成 + 自定义模板
AI 能力3 项(提示、关键词、建议)4 项(新增理据)

Potato 2.0

Potato 2.0 是一次重要发布,增加了 AI 辅助、主动学习、训练阶段、多阶段工作流和 MySQL 后端。

AI 支持

接入大语言模型,用智能提示、关键词高亮和标签建议来辅助标注者。

支持的提供方:

  • OpenAI(GPT-4、GPT-3.5)
  • Anthropic(Claude 3、Claude 3.5)
  • Google(Gemini)
  • Ollama(本地模型)
  • vLLM(自托管)
yaml
ai_support:
  enabled: true
  endpoint_type: openai
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
  features:
    hints:
      enabled: true
    label_suggestions:
      enabled: true

了解 AI 支持 →


音频标注

功能完整的音频标注,由 Peaks.js 提供波形可视化。可以创建片段、给时间区间打标签,并用键盘快捷键标注语音。

主要功能:

  • 波形可视化
  • 片段创建与打标签
  • 逐片段的标注问题
  • 15 个以上的键盘快捷键
  • 服务端波形缓存
yaml
annotation_schemes:
  - annotation_type: audio_annotation
    name: speakers
    description: "Mark each speaker turn in the audio"
    mode: label
    labels:
      - Speaker A
      - Speaker B

了解音频标注 →


主动学习

依据模型的不确定性自动给标注实例排优先级。在已有标注上训练分类器,让标注者集中在信息量最大的样例上。

能力:

  • 多种分类器可选(LogisticRegression、RandomForest、SVC、MultinomialNB)
  • 多种向量化器(TF-IDF、Count、Hashing)
  • 模型在重启之后仍然保留
  • 由 LLM 增强的选择
  • 支持多方案
yaml
active_learning:
  enabled: true
  schema_names:
    - sentiment
  min_instances_for_training: 30
  update_frequency: 50
  classifier:
    type: LogisticRegression

了解主动学习 →


训练阶段

在正式任务之前用练习题给标注者做资格认定。提供即时反馈,并通过可配置的通过标准来保证质量。

功能:

  • 有已知答案的练习题
  • 即时反馈与解释
  • 可配置的通过标准
  • 重试选项
  • 在管理仪表板中跟踪进度
yaml
phases:
  training:
    enabled: true
    data_file: "data/training.json"
    passing_criteria:
      min_correct: 8
      total_questions: 10

了解训练阶段 →


增强的管理仪表板

面向标注任务的全面监控与管理界面。

仪表板标签页:

  • 概览:高层指标和完成率
  • 标注者:表现跟踪、用时分析
  • 实例:浏览数据并查看分歧分数
  • 配置:实时调整设置
yaml
admin_api_key: ${ADMIN_API_KEY}

了解管理仪表板 →


数据库后端

面向大规模部署的 MySQL 支持,带连接池和事务支持。

yaml
database:
  type: mysql
  host: localhost
  database: potato_db
  username: ${DB_USER}
  password: ${DB_PASSWORD}

Potato 会在首次启动时自动创建所需的表。


标注历史

完整跟踪所有标注变更,含时间戳、用户 ID 和操作类型。可用于审计和行为分析。

json
{
  "history": [
    {
      "timestamp": "2024-01-15T10:30:00Z",
      "user": "annotator_1",
      "action": "create",
      "schema": "sentiment",
      "value": "Positive"
    }
  ]
}

多阶段工作流

用多个依次进行的阶段构建复杂的标注工作流:

  1. 同意 - 收集知情同意
  2. 前置调查 - 人口统计与筛选
  3. 说明 - 任务指南
  4. 训练 - 练习题
  5. 标注 - 主任务
  6. 后置调查 - 反馈问卷
yaml
phases:
  consent:
    enabled: true
    data_file: "data/consent.json"
  prestudy:
    enabled: true
    data_file: "data/demographics.json"
  training:
    enabled: true
    data_file: "data/training.json"
  poststudy:
    enabled: true
    data_file: "data/feedback.json"

了解多阶段工作流 →


v2.0 配置变更

新的配置结构

Potato 2.0 使用更清晰的配置格式:

v1(旧):

yaml
data_files:
  - data.json
id_key: id
text_key: text
output_file: annotations.json

v2(新):

yaml
data_files:
  - "data/data.json"
 
item_properties:
  id_key: id
  text_key: text
 
output_annotation_dir: "output/"
export_annotation_format: "jsonl"

安全要求

配置文件现在必须位于 task_dir 之内:

如果配置文件和数据放在一起,任务目录就是当前目录:

yaml
task_dir: "."

如果配置文件放在子目录里,就写出它所属的项目目录:

yaml
task_dir: "my_project/"

快速对比

功能v1v2.0v2.1v2.2v2.3
AI/LLM 支持无有有 + 视觉 AI + 理据+ 选项高亮+ 单人模式
智能体标注无无无无12 个转换器、3 种展示
最优-最差量表无无无无有(3 种打分方法)
音频标注基础完整波形完整波形完整波形完整波形
主动学习无有有有 + 多样性排序+ 单人模式集成
实例显示无无有有有
片段链接无无有有有
事件标注无无无有有
实体链接无无无有有
成对比较/分诊/共指/对话树无无无有有
布局自定义无自动生成自动生成 + 自定义模板自动生成 + 自定义模板自动生成 + 自定义模板
训练阶段无有有有有
管理仪表板基础增强增强增强 + MACE+ BWS 标签页、单人模式
数据库后端仅文件文件 + MySQL文件 + MySQL文件 + MySQL文件 + MySQL
导出命令行工具无无无有(COCO、YOLO、CoNLL 等)+ Parquet
认证用户名用户名用户名用户名+ Google/GitHub OAuth、OIDC
调查问卷无无无55 份经过验证的问卷55 份经过验证的问卷
远程数据源无无无S3、GDrive、HuggingFace 等S3、GDrive、HuggingFace 等

迁移指南

更新配置(v1 到 v2)

  1. 数据配置

    yaml
    # Old
    id_key: id
    text_key: text
     
    # New
    item_properties:
      id_key: id
      text_key: text
  2. 输出配置

    yaml
    # Old
    output_file: annotations.json
     
    # New
    output_annotation_dir: "output/"
    export_annotation_format: "jsonl"
  3. 配置文件位置 确保你的配置文件位于项目目录之内。

启动服务器

bash
# v2 command
python -m potato start config.yaml -p 8000
 
# Or shorthand
potato start config.yaml

开始使用

准备好试试 Potato 了吗?可以从快速开始指南入手,或者直接了解具体功能:

v2.3 功能:

v2.2 功能:

v2.1 功能:

核心功能: