新功能
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 重新可以在默认地址上启动,为模型训练加入了图像分类器,并修复了每次重启都会丢失的预标签。
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。
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 发布后发现的三个错误。
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 后端真正工作起来,并更正了一致性统计。如果你发表过用早期版本算出的一致性数字,请重新计算。
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)的结果之前,请先升级。
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 会在安装任何东西之前就说明这一点。
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设置的变量没有任何地方读取。现在镜像会安装新的hostingextra。 - 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 单元计算。集合型、顺序型、矩阵型和带标签序数型方案的一致性数值会改变,应当重新计算。发布说明里有完整清单。
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 修复。
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此前开头会@importGoogle 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 变成一个协作式的定性编码工作区。启用它会组合出活文档编码本、原生码编码、分析者备忘、个案和全文搜索,默认值针对一位分析者编码整个语料的场景做了调整。
qda_mode:
enabled: true # codebook + memos + cases + search
codebook_invivo_key: i # mint a code from a text selection
search:
enabled: true
annotator_claim: trueLLM 评判校准与对齐
用一个或多个 LLM 评判者自动标注数据,然后跑一轮盲的人工校准,测量准确率、一致性和校准误差。另有一套单评判者的对齐工作流,在你打磨评分标准的过程中跟踪相对人工黄金标签的 Cohen kappa,并可在标注过程中内联显示评判结果。
基于信号的分诊队列
按每个条目的质量信号给标注队列排序——智能体的一次报错、生产环境的一次点踩、一个低分,或者任何自定义字段——让审阅者先看到最可疑的条目,而不是按到达顺序来看。
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 轮询器或被监视的目录到达,并在落地时接受评判。
工作流与分派
- 异质覆盖——按条目设置的标注者上限、标注者间一致性报告,以及针对不同条目需要不同标注人数的任务的裁决路由。
- 回收被放弃的分派——找回 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 和原始浏览器录制中导入智能体轨迹。支持自动识别。
转换是服务器启动之前的一个命令行步骤:
python -m potato.trace_converter \
--input traces.json \
--input-format react \
--output data/traces.jsonl转换后的文件就是一个普通的数据文件,由其中一种智能体展示类型来渲染:
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%。
单人模式以阶段状态机的方式运行,而不是一个固定序列。它依次经过设置、提示词审阅、可选的边缘案例循环、并行标注、分歧消解、带定期审阅和规则审阅的主动标注、自主标注和最终验证。其中五个阶段在发现问题出在提示词上时可以退回提示词审阅,而最终验证在样本未达到阈值时会回落到主动标注。
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)。
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)。支持自动注册、混合模式和会话管理。
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}Parquet 导出
把标注导出为 Apache Parquet 格式,产生三个结构化文件:annotations.parquet、spans.parquet 和 items.parquet。支持 snappy、gzip、zstd、lz4 和 brotli 压缩、增量导出以及按日期/标注者分区。可与 pandas、DuckDB、PyArrow、Polars 和 Hugging Face Datasets 配合使用。
export_annotation_format:
- parquet15 个新的演示项目
project-hub/ 中的新演示覆盖智能体标注(5 个)、单人模式(3 个)、最优-最差量表(3 个)、认证(2 个)和导出工作流(2 个)。用 potato start config.yaml 可以启动其中任意一个。
安全加固
- 加密安全的会话令牌,过期时间可配置
- 默认启用 CSRF 保护
- 认证端点上的速率限制
- 对用户提供内容的输入净化
- 依赖审计,所有包均已更新
- 内容安全策略响应头
其他改进
- 针对不受支持的智能体框架的自定义轨迹转换器
- 带多标注者验证抽样的混合单人模式
- 带分数收敛图表的 BWS 管理仪表板标签页
- 按日期分区的增量 Parquet 导出
v2.2 与 v2.3 对比
| 功能 | v2.2 | v2.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 这类事件,论元实体受约束,并以轮辐式弧线可视化。
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 方案。
mace:
enabled: true
trigger_every_n: 10
min_annotations_per_item: 3选项高亮——在离散标注任务中,用 LLM 高亮可能正确的选项。为排名前 k 的选项加星标,同时把可能性较低的选项调暗。
ai_support:
option_highlighting:
enabled: true
top_k: 3
dim_opacity: 0.4多样性排序——基于嵌入的聚类和轮转抽样,确保标注者看到的是内容多样的条目,而不是连续出现的相似条目。
assignment_strategy: diversity_clustering
diversity_ordering:
enabled: true
prefill_count: 100导出系统
新的可插拔导出命令行工具(python -m potato.export)可以把标注转换成 6 种业界标准格式:COCO、YOLO、Pascal VOC、CoNLL-2003、CoNLL-U 和分割掩膜。
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 配置块把内容显示和标注分开。可以把图像、视频、音频、文本和对话的任意组合,与任意标注方案并排显示。
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 选项,可以在同一个实例的多个文本字段上标注。
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 元关系、弧线可视化和标签约束。
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
功能包括目标检测、预标注、分类、提示、场景检测、关键帧检测和目标跟踪。
布局自定义
用 HTML 模板和 CSS 创建复杂的自定义视觉布局。Potato 会生成一个可编辑的布局文件,你也可以提供一个完全自定义的模板,使用网格布局、彩色编码的选项和分区样式。
task_layout: layouts/custom_task_layout.html附带三个示例布局:内容审核、对话质检和医疗审阅。
标签理据
第四项 AI 能力,为每个标签为什么可能适用生成平衡的解释,帮助标注者理解不同的分类视角。
ai_support:
features:
rationales:
enabled: true其他改进
- 50 多个新测试,提升可靠性
- 响应式设计的改进
- 更好的 project-hub 组织结构,含布局示例
- 各标注类型的缺陷修复
v2.0 与 v2.1 对比
| 功能 | v2.0 | v2.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(自托管)
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音频标注
功能完整的音频标注,由 Peaks.js 提供波形可视化。可以创建片段、给时间区间打标签,并用键盘快捷键标注语音。
主要功能:
- 波形可视化
- 片段创建与打标签
- 逐片段的标注问题
- 15 个以上的键盘快捷键
- 服务端波形缓存
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 增强的选择
- 支持多方案
active_learning:
enabled: true
schema_names:
- sentiment
min_instances_for_training: 30
update_frequency: 50
classifier:
type: LogisticRegression训练阶段
在正式任务之前用练习题给标注者做资格认定。提供即时反馈,并通过可配置的通过标准来保证质量。
功能:
- 有已知答案的练习题
- 即时反馈与解释
- 可配置的通过标准
- 重试选项
- 在管理仪表板中跟踪进度
phases:
training:
enabled: true
data_file: "data/training.json"
passing_criteria:
min_correct: 8
total_questions: 10增强的管理仪表板
面向标注任务的全面监控与管理界面。
仪表板标签页:
- 概览:高层指标和完成率
- 标注者:表现跟踪、用时分析
- 实例:浏览数据并查看分歧分数
- 配置:实时调整设置
admin_api_key: ${ADMIN_API_KEY}数据库后端
面向大规模部署的 MySQL 支持,带连接池和事务支持。
database:
type: mysql
host: localhost
database: potato_db
username: ${DB_USER}
password: ${DB_PASSWORD}Potato 会在首次启动时自动创建所需的表。
标注历史
完整跟踪所有标注变更,含时间戳、用户 ID 和操作类型。可用于审计和行为分析。
{
"history": [
{
"timestamp": "2024-01-15T10:30:00Z",
"user": "annotator_1",
"action": "create",
"schema": "sentiment",
"value": "Positive"
}
]
}多阶段工作流
用多个依次进行的阶段构建复杂的标注工作流:
- 同意 - 收集知情同意
- 前置调查 - 人口统计与筛选
- 说明 - 任务指南
- 训练 - 练习题
- 标注 - 主任务
- 后置调查 - 反馈问卷
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(旧):
data_files:
- data.json
id_key: id
text_key: text
output_file: annotations.jsonv2(新):
data_files:
- "data/data.json"
item_properties:
id_key: id
text_key: text
output_annotation_dir: "output/"
export_annotation_format: "jsonl"安全要求
配置文件现在必须位于 task_dir 之内:
如果配置文件和数据放在一起,任务目录就是当前目录:
task_dir: "."如果配置文件放在子目录里,就写出它所属的项目目录:
task_dir: "my_project/"快速对比
| 功能 | v1 | v2.0 | v2.1 | v2.2 | v2.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)
-
数据配置
yaml# Old id_key: id text_key: text # New item_properties: id_key: id text_key: text -
输出配置
yaml# Old output_file: annotations.json # New output_annotation_dir: "output/" export_annotation_format: "jsonl" -
配置文件位置 确保你的配置文件位于项目目录之内。
启动服务器
# v2 command
python -m potato start config.yaml -p 8000
# Or shorthand
potato start config.yaml开始使用
准备好试试 Potato 了吗?可以从快速开始指南入手,或者直接了解具体功能:
v2.3 功能:
- 智能体标注 - 用轨迹转换器和步骤级展示评测 AI 智能体
- 单人模式 - 人与 LLM 协作标注
- 最优-最差量表 - 带打分的比较式标注
- SSO 与 OAuth - Google、GitHub 和 OIDC 认证
- Parquet 导出 - 列式数据导出
v2.2 功能:
- 事件标注 - N 元事件结构
- 实体链接 - 知识库链接
- 分诊 - 快速数据筛查
- 共指链 - 实体共指
- 对话树 - 层级式对话标注
- MACE - 标注者能力估计
- 选项高亮 - AI 辅助的选项引导
- 多样性排序 - 基于嵌入的条目排序
- 导出格式 - 支持 6 种格式的导出命令行工具
- 远程数据源 - 云端数据加载
- 调查问卷 - 55 份经过验证的问卷
v2.1 功能:
核心功能: