Skip to content
Announcements2 min read

Potato 2.6:定性データ分析とエージェント評価の融合

Potato 2.6 がリリース:定性コーディングのための QDA モード、LLM-as-judge のキャリブレーションとアラインメントのワークフロー、SFT と DPO の学習データを生成する軌跡編集、3 倍速い起動、そして GPL-3.0-or-later への再ライセンス。

Potato Team

Potato 2.6 がリリースされました。これは二つの重心を持つリリースです。一方では、Potato を定性データ分析、すなわちインタビューの文字起こし、コードブック、メモといった、これまで専有のデスクトップツールが占めてきた世界へと導きます。もう一方では、エージェント評価のツールキットを、単にスコアを出すだけでなく学習データを生成する方向へと深めます。そして両者の土台として、起動が目に見えて速くなり、ライセンスも変わります。

これまで追ってこられた方なら、ここ数週間の記事がこれらの機能を一つずつ予告してきたのにお気づきでしょう。本リリースは、それらを実際に出荷するものです。

Potato 2.6、定性データ分析とエージェント評価に二分される様子Potato 2.6

最初に一言:Potato は GPL-3.0 になりました

Potato は PolyForm Shield から GPL-3.0-or-later へ再ライセンスされました。この種の変更はさらりと流されがちですが、そうすべきではありません。なぜなら、このプロジェクトであなたが行ってよいことが変わるからです。

GPL-3.0-or-later の下では、派生物が GPL のままである限り、商用も含めて Potato を使用、改変、再配布できます。以前の PolyForm Shield ライセンスには競業避止の制限があり、一部の採用者(とその法務チーム)をためらわせていました。GPL は、そうしたチームがすでに理解しているライセンスです。ライセンスに関する疑問があなたの研究室や会社の足を引っ張っていたのなら、その疑問には今や馴染みのある答えがあります。詳しくはAbout ページをご覧ください。

QDA モード

定性研究者にとっての目玉は QDA モードです。一つのスイッチで、Potato を協働型の定性コーディング・ワークスペースに変えます。

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

これを有効にすると、生きたコードブック、in-vivo コーディング、アナリストのメモ、ケース、全文検索が組み合わさり、デフォルトは一人のアナリストがコーパス全体をコーディングする状況に合わせて調整されています。読み進めながらコードブックを育てて再編成し、ハイライトした一節からキー操作一つでコードを生成し、任意の抜粋にプライベートまたは共有のメモを付け、参加者ごとに抜粋をケースへまとめ、コーパス全体に対して FTS5 検索を実行できます。これは NVivo、ATLAS.ti、MAXQDA、Dedoose に代わる、無料・オープンソース・Web ベースの選択肢であり、ほかの注釈作業と同じツールの中に収まっています。

その設計については定性コーディングを Potato へで書きました。完全なリファレンスはQDA モードのドキュメントです。

LLM-as-judge:キャリブレーション、アラインメント、トリアージ

モデル出力の採点に LLM を使うのは、もはや日常です。それをどこまで信頼してよいかが 2.6 の扱う部分であり、互いに連携する三つの機能で応えます。

**Judge Calibration(判定者のキャリブレーション)**は、一つまたは複数の LLM 判定者でデータを自動ラベリングし、各データを k 回サンプリングして経験的な確信度を得たうえで、ブラインドの人手パス(注釈者はモデルのラベルを決して見ません)を実行し、精度、Cohen's と Fleiss' kappa、Krippendorff's alpha、そして期待キャリブレーション誤差を報告します。「この判定者を信頼すべきか?」という問いに、根拠として示せる数字で答えます。これはあなたの LLM 判定者を信頼できますか?で取り上げました。

**Judge Alignment(判定者のアラインメント)**は、あなたの人手によるゴールドラベルに対して一つの判定者を調整し、ルーブリックを洗練していく過程で Cohen's kappa を追跡します。注釈中には、人手ラベルの横にインラインで判定結果を任意で表示することもできます。

**The Triage Queue(トリアージ・キュー)**は、項目ごとのシグナル(エージェントのエラー、本番でのサムズダウン、低いスコア)によって注釈キューに優先順位を付け、到着順ではなく、最も疑わしい軌跡からレビュアーが見られるようにします。

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

アラインメントとトリアージは組み合わさって能動的な評価ループになります。その流れはループを閉じるで辿りました。リファレンス:Judge CalibrationJudge AlignmentTriage Queue

SFT と DPO のための軌跡編集

新しい trajectory_edit スキーマは、注釈者がエージェントの軌跡の各ステップを書き換えられるようにし、リアルタイムの単語レベル diff を備えて、誤った推論ステップの修正、ツール呼び出しの修復、最終回答の強化を行えます。続いて trajectory_correction エクスポーターが、各々の元/修正後のペアを学習データに変換します。すなわち trajectory_sft.jsonl に教師ありファインチューニングのターゲットを、trajectory_dpo.jsonl に DPO の選好ペアを生成します。編集されていない軌跡はスキップされます。変更のない軌跡で学習しても何も教えられないからです。

これにより Potato は評価ツールであるだけでなく、学習データの生産ツールにもなります。詳しい手順は評価から学習データへに、リファレンスは軌跡編集のドキュメントにあります。

eval_trace 表示

エージェントの軌跡をすばやく読み解くこと自体が一つの課題です。新しい eval_trace 表示は、一本の軌跡を同期した三つのペイン(推論、関数呼び出し、最終回答)に分割し、評価者がエージェントの考えたこと、行ったこと、生み出したものを一目で把握できるようにします。これは継続的な評価のために作られています。そこでは軌跡が webhook、Langfuse のポーラー、あるいは監視対象ディレクトリ経由で次々と届き、到着するそばから判定される必要があります。eval_trace のドキュメントをご覧ください。

ワークフローとデプロイ

運用面の機能群がリリースを締めくくります。

  • 不均一なカバレッジ。 項目ごとに異なる人数の注釈者を割り当てます。大半は一人、層化サンプルには三人とし、適応的な不一致ブースト、そして自動の裁定ルーティングを備えます。完全重複を超えてで取り上げ、リファレンスは不均一カバレッジのドキュメントにあります。
  • 放棄された割り当ての回収。 Prolific や QC でブロックされたワーカーが残した項目を回収します。保持期間を設定でき、回収は冪等です。タスク割り当てをご覧ください。
  • カスタムバッチ割り当て。 あらかじめ定義した項目のバッチを特定の注釈者に割り当てます。複数ラウンドを繰り返す研究設計のために作られています。
  • リバースプロキシの URL プレフィックス。 リバースプロキシの背後でサブパス下に Potato を提供します。リバースプロキシのドキュメントをご覧ください。

より速く、そしてスキーマ名の変更

二つの変更がすべてのプロジェクトに影響します。

起動はおよそ 3 倍速くなりました。 機械学習スタックは起動時に先読み(eager-load)されなくなり、代わりに初回使用時に読み込まれます。インポート時間は約 6.5 秒から 2 秒へ、50,000 項目の起動は約 10 秒から 5.7 秒へ、常駐メモリは約 750MB から 365MB へと下がりました。コンテナの再起動は速くなり、水平スケーリングのメモリフットプリントもおよそ半減します。

annotation_type: highlightspan になりました。 マイグレーションが用意されており、既存の span 設定には影響ありません。古い設定はタイプ名を変更して更新してください。「span」は NLP 全体で標準の用語であり、今回の名称変更でこの注釈タイプをそれに合わせました。

おさらい:2.5 と 2.4.5

2.4 と 2.6 のあいだに、ここに記事を出さないままリリースされたものがいくつかあります。その目玉は触れておく価値があります。とくに定性コーディングの取り組みは QDA モードの土台になっているからです。

2.5.0 は定性コーディングの波でした。Krippendorff's alpha に加えて Cohen's kappa と Fleiss' kappacodebookquotation_report エクスポーター、そしてコードの共起についての管理者向け分析と、属性別にコードを示すクロス集計表を追加しました。これらは QDA モードが土台とする信頼性とエクスポートの部品です。

2.4.5 は、ソロモードで注釈ガイドラインを改善するための検証付きリファインメント・フレームワーク、設定バリデーターの CLI(python -m potato.validate_cli)、そしてパストラバーサル回避に対するセキュリティ修正(GHSA-q9m2-fhv9-3jcf)をもたらしました。古い 2.4.x をお使いなら、アップグレードでその修正が取り込まれます。

すべての履歴は新着情報ページにあります。

入手方法

bash
pip install --upgrade potato-annotation

そのうえで、同梱の例(examples/advanced/qda-mode-example/examples/ai-assisted/judge-calibration/examples/agent-traces/trajectory-correction/)のいずれかに Potato を向ければ、新しい画面が動くのを確認できます。ここでの各リリースは、このツールを使う誰かからの問いとして始まりました。もし 2.6 があなたに一つの問いを呼び起こしたなら、GitHub リポジトリがそれを尋ねる場所です。