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を指定すると、まだ誰もラベルを付けていない項目を予測します。以前の実行では、すでにラベルが付いたホールドアウト項目しか予測しなかったため、ライトバックは事前ラベルが本来必要な項目に届きませんでした。

学習の実行、ライトバック、レビューキューについてはモデル学習のドキュメントを参照してください。

以前の研究に影響する修正

  • 事前ラベルが再起動後に残りませんでした。 保存済みの予測を起動時に再適用する処理が、項目の読み込みより前に実行されていたため、再起動のたびにモデルのレビューキューが空になっていました。現在は項目の読み込み後に実行され、ライトバックと同じチェックが適用されます。
  • テキストモデルが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では、ラベリングエンジンが加わりました。モデルでデータセットにラベルを付け、ランダムに抽出してブラインドで集めた人手ラベルのサンプルを使って、モデルがどのくらいの頻度で誤るかを測定します。完成したラベルが満たすべき条件は、たとえば「受理した機械ラベルのうち誤りは最大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でエンジンが有効になります。ソースはモデルで、カスケード順に試され、最後のソースの後で項目は人に回ります。各コントラクトは1つのアノテーションスキーマを指定し、エンジンがランダムに依頼してブラインドで提示する人手ラベルに対して検定されます。そのページには、プレアノテーションも判定者の判定もAIの支援も表示されません。

  • ソース。 LLM、視覚言語モデル、意思決定モデル(Layaと任意の/v1/systemoneサーバー)、YOLO検出器、ラベルの順序を入れ替えるLLM判定者、ジュリー、その研究自身のラベルで学習したモデル、そして手元にある既存のラベル。
  • コントラクト。 selective_riskは、受理した機械ラベルのうち誤っているものの割合を、指定した信頼度で上限づけます。ppiは、機械の品質にかかわらず有効な、出現率または平均の区間を与えます。no_worse_than_humanは代替アノテーター検定(alternative annotator test)を実行し、budget_firstは人手ラベルの予算で何が得られるかを見積もり、distributionalは主観的な項目で人の判断がどう分かれるかと機械のラベルを比較します。
  • モダリティ。 N択の単一選択、順序、数値、マルチラベルの各スキーマ、画像領域、音声、動画、temporal groundingと階層型アノテーションのセグメント、3Dオブジェクト、エージェントトレースのステップラベル。領域、セグメント、3Dオブジェクト、トレースは、一致度レポートと同じ指標でスコア付けされます。
  • 監査。 受理された機械ラベルの一部は、ブラインドで再び人に回されます。監査で目標を上回る誤り率が示されると、エンジンはそのスキーマで機械ラベルの受理を停止し(デフォルトで有効なfeatures.driftを使う場合)、再び証明を行うと受理が再開されます。
  • インターフェース。 potato label run|status|certify|certificate|export|calls|distill|optimize|migrate-config、/api/engine/v1以下のREST API、5つのengine_* MCPツール、Python SDK、/admin/labeling-engineの管理ページ。

コントラクトが満たされたというのは、サンプルにラベルを付けた人々との一致についての統計的な言明です。エンジンはその人々が正しいかどうかを確認しません。そのため、信頼性の低いアノテーターに対して検定したコントラクトは、信頼性の低いアノテーターとの一致を証明することになります。各コントラクトが何を検定し、どんな場合に満たされないかはラベリングエンジンのコントラクトで説明しています。

icl_labeling、judge_calibration、pre_annotationは引き続き動作し、それぞれ起動時に、エンジンで対応する機能を示す注記を表示します。potato label migrate-configは同等のlabeling_engineブロックを書き出します。ソロモードと判定者のアラインメントは非推奨になっていません。対応表はラベリングエンジンへの移行にあります。

一致度

  • /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を案内します。
  • 長さゼロの同一セグメント2つが一致と判定されるようになりました。 以前は完全な不一致としてスコア付けされていました。
  • 機械の評価者は公開される数値から除外されます。 公開とPaper Modeでは、機械の評価者をゴールドラベルと一致度の数値から除外します。

ソロモード

  • ブラインド提案。 solo_mode.suggestionsは、すべての項目またはサンプルの項目でLLMのラベルを伏せます。画面に表示された提案は確認する人の判断を引きずる(アンカリングする)ため、引き継ぎ(ハンドオフ)ではブラインドの項目での一致度を読みます。
  • 支出上限と応答キャッシュ。 ai_budget.cap_usdはラベリング開始前と各バッチの前に確認され、solo_mode.cacheは繰り返された呼び出しへの応答を再利用します。
  • 意思決定モデル。 systemoneとlayaのエンドポイントは、固定選択肢のスキーマに1回のフォワードパスでラベルを付けるため、高速な第一段階として使えます。設定例はソロモードにあります。
  • ゴールドセット、ジュリー、カリキュラム。 solo_mode.goldは本番の実行前に既知のラベルでプロンプトを採点し、solo_mode.juryは複数のモデルに各項目を投票させ、instance_selection.curriculumはLLMが最も簡単だと判断した項目から始めさせます。プロンプトの感度チェックも新たに加わりました。

2.10の研究に影響する修正

  • 画像ページが事前入力された回答を勝手に保存していました。 pre_annotationを使うimage_annotationスキーマでは、読み込み後にキャンバスがレイアウトをやり直す際、事前入力された図形をアノテーターの回答として保存していたため、手を付けていない項目が回答済みとして数えられていました。現在は編集したときだけ保存されます。プレアノテーションを使った2.10の画像研究では、回答済みとされた項目の一部に、一度も触れられていないものが含まれている可能性があります。
  • CORSヘッダーのないホスト上の画像が読み込まれませんでした。 cocodataset.orgのようにAccess-Control-Allow-Originヘッダーを送らないホストはキャンバスのリクエストを拒否し、ページには「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の公開後に見つかった3つのバグを修正しました。

bash
pip install --upgrade potato-annotation
  • 全員一致のデータでの一致度。 すべてのアノテーターがすべての項目で同じ回答をした場合、/admin/api/agreementはそのスキーマを{"error": "float division by zero"}として返していました。この場合は偶然の一致が1になるため、アルファと2つのカッパはどれも定義されません。このルートはそれらをnullとして報告するようになり、percent_agreementは1.0、注記は/admin/iaaと同じものになりました。全体の平均からはこのスキーマが除かれます。
  • potato deploy button --dry-runがネットワークに接続しなくなりました。 --hf-backup-repoを指定しないと、ドライランはトークンの所有者をHuggingFaceに問い合わせ、無効なトークンではトレースバックで終了していました。ドライランはpotato deploy up --dry-runと同様に、プレースホルダー<hf-account>/<name>-annotationsを使うようになりました。実際の実行では、拒否されたトークンをエラーメッセージとして報告します。
  • Potatoのインポート時にパスワードをハッシュしなくなりました。 PotatoはインポートのたびにPBKDF2ハッシュを計算していたため、CLIツールを含むすべてのプロセスが起動時に100,000回の反復を費やしていました。ハッシュは、未知のユーザー名が初めてログインを試みた時点で作られるようになりました。また、hashlibにpbkdf2_hmacがないPyodideでも、再びインポートできるようになりました。

変更の全一覧はリリースノートにあります。


Potato 2.10.2

2026年10月リリース

Potato 2.10.2では、pipでのインストールやDockerイメージで動作しなかった機能を修正し、別のユーザーとしてサインインできる経路を塞ぎ、MySQLバックエンドが動作するようにし、一致度の統計を修正しました。以前のバージョンで算出した一致度の値を公表している場合は、再計算してください。

bash
pip install --upgrade potato-annotation
  • SSOアカウントがどんなパスワードでも受け付けていました。 OAuthを使うタスクでは、プロバイダーが登録したアカウントに、パスワードフォームから誰でもサインインできていました。SSOのIDはパスワードで認証されなくなり、MySQLを使う研究で第三者が既存のアノテーターのユーザー名を登録し、その作業を引き継ぐこともできなくなりました。
  • pipでインストールすると、ai_supportとアンケート尺度が動作しませんでした。 wheelにAIのプロンプトとアンケート尺度が含まれていなかったため、どちらかを使う研究は起動時に停止していました。また、コンテナとpotato deployのデプロイ先では、チャットサポートを含む10個のサブシステムが抜け落ちていました。
  • MySQLバックエンドが一度も有効になっていませんでした。 MySQLを指定した設定でも、アノテーションはディスクに保存されていました。ドライバーはpip install 'potato-annotation[mysql]'でインストールしてください。エクスポート、バックアップ、potato deploy pullはデータベースを読むようになりました。
  • 一致度の統計に関する59件の修正。いずれもscipy、sklearn、krippendorffパッケージなどの参照実装と照合して確認しています。定義できない係数は1.0ではなく未定義として報告され、順序尺度のアルファはKrippendorffの順序メトリックを使い、MACEは完全なスパマーの能力を0.35ではなく約0.01と推定し、再起動後に結果が変わることもなくなりました。また、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とバックアップの5つの問題を修正しました。ドライランの結果を頼りにする前にアップグレードしてください。

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が必要です。事前チェックの警告は、--demoをHerokuとHuggingFaceに対してのみ提案するようになりました。
  • --cloud jetstream2が誤ったフレーバーで計画していました。 ドライランではm1.smallと表示されていましたが、upはm3.smallを作成していました。
  • 2つの価格が誤っていました。 potato deploy providersはaws-ec2を月額約$16、flyを約$7としていました。計画で算出される額は$18.31と$5.85で、概要は約$18と約$6を示すようになりました。
  • 設定にhuggingface_backupブロックが残っていると、backup: {enabled: false}でバックアップがオフになりませんでした。 現在は新しいブロックが優先されます。

変更の全一覧はリリースノートにあります。


Potato 2.10.0

2026年10月リリース

Potato 2.10.0では、potato deployに8つのホスティングプラットフォームが加わり、再起動でディスクが残らないホストでもアノテーションをバックアップするようになりました。またtext_as_imageが加わりました。これは各アイテムのテキストを画像として表示する機能で、アノテーターがテキストをチャットボットに貼り付けられないようにします。どのホストがどの研究に合うかはPotato をローカルまたはクラウドで実行するで示しています。

Python 3.9以降が必要であることを宣言するようになりました。 コアの依存関係がすでにこれを必要としていたため、以前のリリースも3.7や3.8にはインストールできませんでした。現在はpipが何かをインストールする前にそのことを伝えます。

bash
pip install --upgrade potato-annotation

デプロイ

  • AWSを3つの方法で。 --provider awsは月額$12の定額で動くLightsailインスタンスを作成し、必要な権限はlightsail:*だけです。aws-ec2はLightsailが無効になっているアカウント向けで、aws-ecsはECS Express Mode上で、AWSが管理するHTTPSアドレスの背後でコンテナを実行します。こちらは費用が高く、バックアップが必須です。
  • Heroku。Basic dyno 1台で動きます。Herokuは毎日ディスクを消去するため、--backupも--demoも指定しない場合、Potatoはそこへのデプロイを拒否します。
  • FlyとRailway。それぞれ永続ボリュームを使います。
  • Hetzner、Vultr、Linode。DigitalOceanと同じ方法でセットアップされるVMで、IPアドレスに対するLet's Encrypt証明書を使います。
  • Jetstream2のプリセットを備えたOpenStack。 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データベースのスナップショットを、5分ごとにHuggingFaceのデータセット、S3互換のバケット、またはその両方にコピーします。サーバーが空のタスクディレクトリで起動し、バックアップにデータがある場合、Potatoは何かを読み込む前にそれを復元するため、アノテーターは再起動の後も中断したところから続けられます。potato deploy upには--backup hf、--backup s3、--backup hf,s3を渡します。従来のhuggingface_backupブロックは、シンクが1つで復元がオフのbackupブロックとして読み込まれるため、既存のデプロイの動作は変わりません。

テキストを画像として表示

text_as_image: trueは、各アイテムのテキストをサーバー上でPNGに描画し、ページ、埋め込まれたアイテムレコード、JSONエンドポイントから文字を取り除きます。そのため、アノテーターが選択、コピー、貼り付けできるものは残りません。この機能はアイテムをチャットボットに貼り付ける手間を増やしますが、アノテーターはテキストを打ち直したり、スクリーンショットにOCRをかけたりすることはできます。スクリーンリーダーは画像から何も読み取れないため、スクリーンリーダーを使うアノテーターがいる研究にはこの機能は向きません。text_as_imageをスパンスキーム、アイテムのテキストフィールドを読むスキーム、Pocket Mode、Roomsと組み合わせると、Potatoは起動を拒否します。@Eyecatch3rがPR #169で提供してくれました。

収集データに影響する修正

  • 永続ディスクのないホストで再起動すると、それまでの作業が失われていました。 サーバーが空の状態で起動し、戻ってきたアノテーターの新しい状態がバックアップされたコピーを上書きしていました。起動時の復元でこの問題が修正されました。
  • DigitalOceanで--volume-gbを指定しても、アノテーションがボリュームではなくルートディスクに保存されていました。 出力と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以上になり、ヘッダーは3行ではなく2行になり、multirateはラベル付きの行のリストになり、スパンのハイライトは長押しで行えます。
  • 機械アノテーター(2.9.4)。 machine_annotatorsブロックで、検出器やLLMのようなプログラムである評定者を宣言します。すると/admin/iaaは人間同士、機械同士、両者をまとめた一致度を報告し、主要な数値は人間のみで示します。また、機械によるレコードが1つでもあれば、csv、tsv、parquetのエクスポートにannotator_origin列が加わります。
  • URLプレフィックスの下でのセッションCookie(2.9.4)。 1つのホストで/app1と/app2の下に提供される2つの研究が1つのセッションCookieを共有していたため、一方にサインインするともう一方からサインアウトされていました。Cookieはプレフィックスにスコープされるようになりました。@Eyecatch3rがPR #172で修正しました。
  • ナビゲーションの高速化(2.9.2)。 スクリプトとスタイルシートがアイテム間でキャッシュされたままになり、Nextの往復回数が減りました。往復80ミリ秒の回線では、ラジオボタンのタスクでNextにかかる時間が約2.6秒から約0.8秒になりました。
  • Nextの直前のテキスト編集(2.9.2)。 テキストボックスを空にして1秒以内にNextを押すと、古いテキストが残っていました。現在はすべての保存の前に、保留中の編集が適用されます。

Potato 2.9.0

2026年9月リリース

Potatoは、brat、doccano、Prodigy、CoNLL、REFI-QDAからプロジェクトをインポートでき、音声の文字起こしと話者分離をローカルで行えるようになりました。エクスポートには、画像のシェイプを人が描いたのか、モデルが提案したのか、インポートされたのかが記録され、投票がどのルームで行われたかも記録されます。リリースの大部分はバグ修正です。

アップグレードの前に、各設定でpotato validate --strictを実行してください。 いくつかの変更により、2.8.2で動いていた研究が起動しなくなったり、挙動が変わったりすることがあります。1つのフェーズ内でスキーマ名が重複していると拒否され、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は一度も数値を返しておらず、さらにラベル名ではなく保存された値を比較していたため、すべてのカテゴリ型スキーマで一致度が完全一致と表示されていました。
  • 1アイテムあたり2人の研究で、2人目のアノテーターが完了ページに送られ、その後に入力した回答がすべて失われていました。
  • fixed_order以外のすべての割り当て戦略で、AIの提案が別のアイテムについてのものになっていました。
  • デフォルトのインメモリ設定ではサインアップが保存されず、再起動の後は誰でも既存のユーザー名を名乗れました。

#168と#171を提供してくれたAldo Costa(@Eyecatch3r)と、#170を報告し原因を突き止めてくれた@ruthenian8に感謝します。


Potato 2.8.2

2026年8月リリース

2.8.1には、そのリリースノートに記載された5つのセキュリティ修正のうち2つが含まれていませんでした。メディアエンドポイントの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.1に欠けていた2つの修正を含む2.8.2に直接上げてください。


Potato 2.8.0

2026年8月リリース

Potatoは、画像モードを備えたテキストアノテーションプラットフォームでした。現在は、画像、動画、ギガピクセルのスキャン画像、3D点群、深度マップ、ロボットのエピソード、生成動画のロールアウト、視覚言語グラウンディングを扱います。そのそれぞれについて、チャンス補正済みの一致度を報告します。

PyPIからインストールした場合はアップグレードしてください。 2.7.1までのwheelはパッケージデータを1階層のglobで宣言していたため、サブディレクトリにある27個のテンプレートがすべてのwheelから抜け落ちていました。pip installで導入した人にとっては、ソロモードのセットアップ用ルート、管理者ページ、判定者キャリブレーション、コーパスマップがすべて動作しない状態でした。gitのチェックアウトから実行している人には、この問題は起きていませんでした。@0x6362によるPR #164で修正されました。

bash
pip install --upgrade potato-annotation

ジオメトリと時間に対する一致度

  • 空間ラベルに対するチャンス補正済みの一致度。検出(アノテーター同士が同じ物体を見つけたか)、分類(同じものと判断したか)、位置特定(同じ場所に置いたか。経験的なチャンスベースラインに対するσとKS検定で報告)に分解されます。
  • マスクの合意形成のためのSTAPLE。潜在的な境界と、評価者ごとの感度と特異度を推定します。注意深い2人のアノテーターが、ノイズの多いアノテーターに3対2で数で負けているコーパスでは、正解に対するDiceは多数決で0.846、STAPLEで1.000になります。
  • 回転を考慮した厳密な3D IoU。水平なボックスだけでなく、ドローン、手持ち撮影、屋内のデータでも直方体の一致度が正しく計算されます。
  • マッチングの許容幅を変えながら報告する時間的一致度。0.25秒での一致と2秒での一致は、別の主張だからです。
  • 未定義の値には理由が示されます。全員一致のコーパスではαは本当に未定義であり、NaNだけを表示すると計算が壊れているように見えます。

これにより、あるバグも修正されました。調停はアノテーションのキーを比較していましたが、画像スキーマはすべてを_dataという1つのキーの下に保存します。そのため画像のペアはすべて一致度1.0となり、何ひとつ一致していない2人のアノテーターが全員一致に見え、レビューに回される画像は1枚もありませんでした。

ビジョン

  • ジオメトリのプリミティブとして、ポリライン、楕円、2D直方体、スケルトンのトポロジーとCOCOの可視性フラグを備えたキーポイントセット、インスタンス単位のブラシマスクが加わりました。
  • ブラウザ内でのクリックによるセグメンテーション。ONNX Runtime Web上のMobileSAMで、1クリックあたり約132ミリ秒です。GPUは不要で、クリックごとのネットワーク呼び出しもありません。
  • オープンボキャブラリーのテキストプロンプト。フレーズを入力すると、一致するものすべてにボックスが付きます。Apache-2.0のGrounding DINOを使い、これもブラウザ内で動作します。
  • SAM 2のメモリモジュールによる動画のマスク伝播。1フレームあたりの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本のロボット時系列レーンを1つのタイムラインに並べ、フェーズの分割、フェーズごとの結果、密な報酬曲線を扱います。LeRobot v2、RLDS/TFDS、HDF5をインポートできます。レーンのダウンサンプリングは最小値と最大値を保持するため、1フレームだけの力のスパイクも300ピクセルのレーンに残ります。

評価

  • **rollout_evaluation**は、2–N本の生成動画を1つの時計に合わせて表示し、世界のつじつまが合わなくなるフレームをアノテーターに指定させたうえで、どの物理的・因果的性質が崩れたかをタグ付けさせます。パネルはブラインド化でき、アノテーターごとに安定した順序でシャッフルできます。
  • **grounding_evalとregion_caption**は、グラウンディングを4つの閾値での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は冒頭でGoogle Fontsを@importしており、ページを読み込むたびにすべてのアノテーターのIPアドレスを第三者に送っていました。また、ログインページには第三者のファビコンがありました。どちらも取り除きました。
  • 管理者のInstancesタブは、計算量が二次から線形になりました。2,000件のアイテムで、15.1秒から23ミリ秒に短縮されています。

Potato 2.7.2

2026年8月リリース

自由記述フィールドのキーストロークロギングです。Potatoは回答の背後にあるタイミングを記録し、文字そのものは記録しません。それだけで、入力と貼り付けを見分けるには十分であることがわかりました。

  • キーストロークロギング。すべての自由記述フィールドで、ポーズ、バースト、修正、貼り付けを内容に依存せずに取得し、回答ごとに約40個の要約特徴量を計算します。デフォルトはオフです。
  • 執筆プロセス検出。明示的な閾値を持つ6つの名前付きルールで、各フラグの根拠となった特徴量の値を報告します。閾値は自分のプロジェクトに合わせて再フィットでき、ラベルがあれば教師ありの方法も使えます。
  • 倫理ガイダンス。同意文の例、保持と削除、基準率の問題、そしてフラグが結論ではなく確認のきっかけである理由を扱います。
  • オプトインのエクスポート。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は対応する設定を出力します。
  • 4つのスキーマで共通のフォーマット語彙。speech_transcript、voice_interaction、tiered_annotationが、audio_dialogueディスプレイで扱えるものをすべて受け付けるようになりました。以前はディスプレイだけが対応していました。
  • **Whisper文字起こしのアノテーションとYouTube字幕のアノテーション**では、この2つの出発点をそれぞれ最初から最後まで説明しています。

2.7.1では、ASRと話者分離は上流で実行し、Potatoはその出力を読み込みます。Potato 2.9ではpotato transcripts --transcribe --diarizeによるローカルでの文字起こしと話者分離が加わりました。また、シンクアラウドモードは2.7.0から、アノテーター自身の発話をローカルで文字起こししています。


Potato 2.7.0

2026年7月リリース

Potato 2.7の土台にある考え方は1つです。アノテーションツールは、何が判断されたかを記録するだけでなく、どのように判断されたかを測るべきだということです。これは2種類の判断者、つまりアノテーションを行う人間と、評価対象となるAIモデルの両方に当てはまります。

人間のラベル付けを測る

LLMを必要としない、7つのオプトイン機能です。

  • 心理測定エンジン。項目反応理論をライブで動かす層で、単純な多数決の代わりに、すべてのラベルに事後確率と感度区間(p = 0.94 [0.88–0.97])を与えます。一致パターンだけからアノテーターの能力と項目の難易度を推定し、その判断が最も多くの情報をもたらすアノテーターに項目を割り当て、コードブックの不具合と思われる箇所を指摘します。
  • マルチプレイヤールーム。チームがすでに画面共有で行っているキャリブレーション会議を、ツールに組み込んで計測できるようにしたものです。ブラインド投票、ホストによる開示、議論、再投票という流れで進み、Krippendorffのαのメーターがそのセッションの成果をリアルタイムで示します。
  • Boundary Lab。ラベル付けのたびに反事実的なプローブ(「それでも同じ判断になりますか?」)を出します。通常のアノテーションからコントラストセットが得られ、ゴールドアイテムを仕込まなくても一貫性のないアノテーターを見つけられます。
  • Truth Serum。surprisingly popular法によるピア予測スコアリングです。ゴールドラベルなしで、アノテーションが難しい場面では多数決を上回ります。
  • シンクアラウドモード。アノテーターが作業しながら話します。音声認識は完全にローカルで動作し、逐語のトランスクリプトがそのまま根拠になります。
  • Paper Mode。コマンド1つで、プロジェクトをコンパイル可能なLaTeXのデータセットレポートに変換します。一致度の統計と引用も含まれます。
  • Pocket Mode。スワイプできるカードスタック、オフライン同期、PWAインストールを備え、モバイルでのアノテーションを正式にサポートします。

AIエージェントの評価

エージェント評価スイートは、チーム構成とマルチモーダルエージェントを扱えるように拡張されました。クリックできるエージェント相互作用グラフ、エージェントをまたぐ失敗の要因特定、ハンドオフのレビュー、エージェント別・チーム別のスコアカード、ツール競合のタイムライン、創発的な振る舞いのタグ付けに加えて、GUI・コンピュータ操作のトラジェクトリ、全二重の音声タイムライン、動画の時間的グラウンディング、文書の表構造にも対応します。

その他の領域

文書をまたぐイベントアノテーション、ターン単位のアノテーション、フルページエディタを備えた「生きた文書」としてのコードブック、任意でOCRを使えるPDFのページ間リンク、コホートごとにスキーマを設定できるRBACロール、10言語対応の管理者・アノテーターダッシュボード、そしてインストールの大幅な軽量化です。AI SDKが遅延読み込みになり、起動時間はおよそ2.0秒から0.7秒に短縮されました。


Potato 2.6.0

2026年6月リリース

Potato 2.6は質的データ分析の領域に踏み込み、エージェント評価ツールキットを強化します。QDAモード、シグナルベースのトリアージキューを備えたLLM-as-judgeのキャリブレーション・アライメントワークフロー、SFTとDPOの学習データを生成するトラジェクトリ編集スキーマが加わりました。また、Potatoのライセンスは(PolyForm Shieldから)GPL-3.0-or-laterに変更されました。

QDAモード

オプトインのqda_modeは、Potatoを共同での質的コーディングの作業環境に変えます。有効にすると、生きたコードブック、in-vivoコーディング、アナリストメモ、ケース、全文検索が組み合わさり、1人のアナリストがコーパス全体をコーディングする場合に合わせたデフォルト設定で動作します。

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-as-Judgeのキャリブレーションとアライメント

1つ以上のLLM判定者でデータを自動ラベル付けし、その後ブラインドの人手キャリブレーションを行って、精度、一致度、キャリブレーション誤差を測定します。単一判定者向けのアライメントワークフローも別にあり、ルーブリックを改善していく過程で人手のゴールドラベルに対するCohenのカッパを追跡します。アノテーション中にインラインで判定結果を表示することもできます。

判定者キャリブレーションの詳細 → · 判定者アライメント →

シグナルベースのトリアージキュー

アイテムごとの品質シグナル(エージェントのエラー、本番環境での低評価、低いスコア、任意のカスタムフィールドなど)でアノテーションキューの優先順位を決めます。レビュー担当者は到着順ではなく、最も疑わしいアイテムから確認できます。

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ディスプレイ

推論、関数呼び出し、最終回答の3ペインからなるエージェントトレースのディスプレイです。Webhook、Langfuseのポーラー、監視対象のディレクトリからトレースが届き、届いたものから順に判定していく継続的な評価のために作られています。

eval_traceの詳細 →

ワークフローと割り当て

  • 不均一なカバレッジ。アイテムごとのアノテーター上限、アノテーター間一致度のレポート、調停へのルーティングを備え、アイテムによって必要なアノテーター数が異なるタスクに対応します。
  • 放棄された割り当ての回収。ProlificやQCでブロックされたワーカーが残した割り当てを回収できます。保持期間は設定可能で、回収処理は冪等です。
  • カスタムバッチ割り当て戦略。あらかじめ定義したアイテムのバッチを特定のアノテーターに割り当てます。
  • リバースプロキシのURLプレフィックス。リバースプロキシの背後で、サブパスからPotatoを配信できます。

ライセンス

PotatoはGPL-3.0-or-laterでリリースされるようになり、PolyForm Shieldから変更されました。派生物がGPLの下に留まる限り、商用利用を含めて使用、改変、再配布ができます。詳細はAboutページを参照してください。

パフォーマンスと安定性

  • 起動が約3倍高速に。 MLスタックが起動時に即座に読み込まれなくなりました。インポート時間は約6.5秒から2秒に、5万件のアイテムの起動は約10秒から5.7秒に、常駐メモリは約750MBから365MBに減りました。
  • スキーマ名の変更。 annotation_type: highlightはspanになり、移行処理が用意されています。古い設定はタイプ名を変更して更新してください。既存のspan設定には影響はありません。
  • ルート登録、トレーニングフェーズ、Prolific、永続化、エクスポートとアンケートの処理、Webhook、ソロモード、アクティブラーニングにわたる、広範なQA強化を行いました。

Potato 2.5.0

2026年リリース

質的コーディング関連の機能をまとめて追加し、NLP・ML向けのアノテーション機能と並んで、質的研究のワークフローにも十分使えるようにしました。

  • アノテーター間一致度。Krippendorffのアルファに加えて、Cohenのカッパ(2者間)とFleissのカッパ(N人)を、管理者向けの一致度APIから利用できます。アノテーター間一致度ガイドを参照してください。
  • 新しいエクスポーター。codebook(スキーマごとのCSVで、コード階層、色、説明、使用回数を含みます)とquotation_report(スパンごとのCSVで、テキスト、オフセット、出典文書、コーダーを含みます)です。
  • コード分析。コード同士のペアごとの共起と、既存のインスタンスメタデータを使ったコード×属性のクロス集計を返す管理者エンドポイントです。

Potato 2.4.5

2026年リリース

安定性とツール周りのリリースです。

  • 検証付きの改善。ソロモードのアノテーションガイドラインを反復的に改善するためのプラグイン可能なフレームワークで、ガイドラインの矛盾やメタデータの漏れを防ぐガードレールを備えます。
  • 設定バリデーター。設定キーを既知の設定スキーマと照合するpython -m potato.validate_cliという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、生のブラウザ録画からエージェントトレースをインポートできます。自動検出も利用できます。

変換は、サーバーを起動する前にCLIの手順として実行します。

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の整形表示、タイムラインのサイドバーを備え、ツールを使うエージェントに向いています。
  • Webエージェントトレースディスプレイ。クリック対象、テキスト入力、スクロール操作を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の各プロキシです。

エージェンティックアノテーションの詳細 →


ソロモード

1人の人間のアノテーターがLLMと協力してデータセット全体をラベル付けするワークフローです。複数アノテーターのパイプラインと95%以上の一致を達成しながら、必要な人手のラベルは全体の10〜15%にとどまります。

ソロモードは固定の手順ではなく、フェーズの状態機械として動作します。セットアップ、プロンプトのレビュー、任意のエッジケースループ、並行アノテーション、不一致の解消、定期的なレビューとルールのレビューを伴うアクティブアノテーション、自律的なラベル付け、最終検証を順に進みます。そのうち5つのフェーズは、プロンプトに問題があるとわかったときにプロンプトのレビューへ戻ることができ、最終検証では、サンプルが閾値を満たさない場合にアクティブアノテーションへ戻ります。

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は7つのシグナル(低い確信度、多様性、LLMの予測、不一致、ランダム、カートグラフィー、エッジケースルール)に重みを付け、人間が次に見るものを選びます。

ソロモードの詳細 →


ベストワーストスケーリング

アノテーターがタプルの中から最良と最悪のアイテムを選ぶ、効率的な比較アノテーションです。釣り合い型不完備ブロック計画によるタプルの自動生成と、3つのスコアリング手法(Counting、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の3つの構造化ファイルを生成します。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保護をデフォルトで有効化
  • 認証エンドポイントのレート制限
  • ユーザーが入力したコンテンツのサニタイズ
  • 全パッケージを更新した依存関係の監査
  • Content Security Policyヘッダー

その他の改善

  • 未対応のエージェントフレームワーク向けのカスタムトレースコンバーター
  • 複数アノテーターによる検証サンプリングを組み合わせたハイブリッドソロモード
  • スコアの収束グラフを備えたBWSの管理者ダッシュボードタブ
  • 日付パーティショニングに対応した増分Parquetエクスポート

v2.2とv2.3の比較

機能v2.2v2.3
エージェンティックアノテーションなし12コンバーター、3ディスプレイ、9スキーマ
ソロモードなしフェーズの状態機械で動く人間・LLMワークフロー
ベストワーストスケーリングなし3つのスコアリング手法を備えたBWS
認証ユーザー名のみ+ Google OAuth、GitHub OAuth、OIDC
Parquetエクスポートなし6つの圧縮オプションを備えた3ファイル構成のParquet
デモプロジェクト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:ブロックを追加すると、KBの検索とリンクが有効になります。

エンティティリンキングの詳細 →

トリアージ。Prodigy風の承認/却下/スキップのインターフェースで、データを素早くスクリーニングします。ラベル、キーボードショートカット、自動送りをカスタマイズでき、高スループットのアノテーションに向いています。

トリアージの詳細 →

ペアワイズ比較。2つのアイテムを、バイナリモード(好みのタイルをクリック)またはスケールモード(スライダー)で比較します。items_key、allow_tie、範囲を設定できるscale:ブロックに対応します。

ペアワイズ比較の詳細 →

会話ツリー。階層的な会話構造に、ノードごとの評価、パスの選択、ブランチの比較でアノテーションします。

会話ツリーの詳細 →

共参照チェーン。共参照するテキスト中の言及を、視覚的なインジケーター付きでチェーンにまとめます。エンティティタイプ、シングルトンの制御、複数のハイライトモードに対応します。

共参照チェーンの詳細 →

セグメンテーションマスク。ピクセル単位の画像セグメンテーションのための新しいfill、eraser、brushツールです。

PDF・文書用のバウンディングボックス。文書アノテーションのタスクで、PDFのページ上にボックスを描けます。

非連続スパン。allow_discontinuous: trueで、連続していない複数のテキスト区間を1つのスパンとして選択できます。


インテリジェントアノテーション

MACEによる能力推定。真のラベルとアノテーターの能力スコア(0.0-1.0)を同時に推定する変分ベイズEMアルゴリズムです。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

多様性順序付けの詳細 →


エクスポートシステム

新しいプラグイン可能なエクスポートCLI(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データベースからアノテーションデータを読み込めます。部分的な読み込み、キャッシュ、認証情報の管理を備えます。

リモートデータソースの詳細 →


アンケート

8つのカテゴリ(性格、メンタルヘルス、感情、自己概念、社会的態度、回答スタイル、短縮版、デモグラフィック)にわたる55の検証済みアンケートです。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]

text、html、image、video、audio、depth_map、dialogue、conversation_tree、pairwise、code、spreadsheet、document、pdf、galleryと、5つのエージェントトレース用ディスプレイを含む、24種類のディスプレイタイプに対応します。

インスタンス表示の詳細 →


マルチフィールドスパンアノテーション

スパンアノテーションのスキームが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で支援する、4つの新しいビジョンエンドポイントです。

  • 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

コンテンツモデレーション、対話QA、医療レビューの3つのレイアウト例が含まれています。

レイアウトのカスタマイズの詳細 →


ラベルの根拠

4つ目の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
エクスポートCLIなしなしなしあり(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の機能:

コア機能: