Skip to content
Announcements5 min read

Potato 2.3: エージェント型アノテーション、Solo Mode、そして人間による評価の未来

Potato 2.3.0は、12種類のトレース形式コンバーター付きエージェント型アノテーション、人間とLLMの協調ラベリングのためのSolo Mode、Best-Worst Scaling、SSO/OAuth、Parquetエクスポート、15のデモプロジェクトを導入します。

Potato Team·

Potato 2.3: エージェント型アノテーション、Solo Mode、そして人間による評価の未来

Potato 2.3.0のリリースを発表できることを嬉しく思います。これはPotato史上最大のリリースです。今回のアップデートでは、エージェント型アノテーションとSolo Modeという2つの主要な新システムに加え、Best-Worst Scaling、SSO/OAuth認証、Parquetエクスポート、15の新しいデモプロジェクトが導入されます。

このリリースのテーマはシンプルです:アノテーションの対象が変わり、ツールもそれに追いつく必要があるということです。研究者はもはやテキストのセンチメントや固有表現をラベリングするだけではありません。マルチステップのAIエージェントトレースを評価し、LLMの出力を大規模に比較し、ますます複雑なタスク向けのデータセットを構築しています。Potato 2.3はこの新しい現実のために構築されています。


エージェント型アノテーション

Potato 2.3の目玉機能は、人間のアノテーションによるAIエージェント評価のための完全なシステムです。

AIエージェント -- タスクを達成するためにマルチステップのアクションを実行するシステム -- は急速に普及しています。しかし、その評価は困難です。1回のエージェント実行には、数十のツール呼び出し、推論ステップ、Webページのナビゲーション、中間出力が含まれる場合があります。既存のアノテーションツールはエージェントの出力をフラットテキストとして表示し、評価者が見る必要のあるリッチな構造が失われてしまいます。

Potatoのエージェント型アノテーションシステムは、3つのコンポーネントでこの問題を解決します。

12種類のトレース形式コンバーター

エージェントトレースはフレームワークによって異なる形式で提供されます。Potatoはそれらすべてを統一表現に正規化します:

コンバーターソース
openaiOpenAI Assistants API / function calling
anthropicAnthropic Claude tool_use / Messages API
swebenchSWE-benchタスクトレース
opentelemetryOpenTelemetryスパンエクスポート
mcpModel Context Protocolセッション
multi_agentCrewAI / AutoGen / LangGraph
langchainLangChainコールバックトレース
langfuseLangFuseオブザベーションエクスポート
reactReAct Thought/Action/Observation
webarenaWebArena / VisualWebArena
atifAgent Trace Interchange Format
raw_web生ブラウザ記録(HAR + スクリーンショット)

設定は簡単です:

yaml
agentic:
  enabled: true
  trace_converter: react
  trace_file: "data/agent_traces.jsonl"

複数のソースからトレースを取り込む必要があるプロジェクトには、自動検出が利用可能です:

yaml
agentic:
  enabled: true
  trace_converter: auto

3つの表示タイプ

異なるエージェントモダリティには異なるビジュアライゼーションが必要です。

Agent Trace Displayは、ツール使用エージェントのトレースを色分けされたステップカードとして描画し、折りたたみ可能なオブザベーション、JSONのプリティプリント、タイムラインサイドバーを備えています:

yaml
agentic:
  display_type: agent_trace
  agent_trace_display:
    colors:
      thought: "#6E56CF"
      action: "#3b82f6"
      observation: "#22c55e"
      error: "#ef4444"
    collapse_observations: true
    show_step_numbers: true

Web Agent Trace Displayは、ブラウジングエージェントのトレースをフルスクリーンショット、クリックターゲットと入力フィールドを表示するSVGオーバーレイ、クイックナビゲーション用フィルムストリップとともに描画します:

yaml
agentic:
  display_type: web_agent
  web_agent_display:
    screenshot_max_width: 900
    overlay:
      enabled: true
      click_marker: "circle"
      click_color: "#ef4444"
    filmstrip:
      enabled: true

Interactive Chat Displayは、トレースレビュー(記録済み会話の評価)とライブチャット(アノテーターがリアルタイムでエージェントと対話し、その後会話を評価)の両方をサポートします:

yaml
agentic:
  display_type: interactive_chat
  interactive_chat_display:
    mode: trace_review
    trace_review:
      show_token_counts: true
      show_latency: true

ターンごとの評価

どの表示タイプでも、アノテーターはトレース全体の評価に加えて個々のステップを評価できます:

yaml
annotation_schemes:
  - annotation_type: likert
    name: overall_quality
    min: 1
    max: 5
 
  - annotation_type: per_turn_rating
    name: step_correctness
    target: agentic_steps
    rating_type: radio
    labels:
      - "Correct"
      - "Partially Correct"
      - "Incorrect"

プリビルトスキーマ

9つのアノテーションスキーマが、一般的なエージェント評価の次元をすぐに使えるようにカバーしています:

yaml
annotation_schemes:
  - preset: agent_task_success
  - preset: agent_step_correctness
  - preset: agent_error_taxonomy
  - preset: agent_safety

利用可能なプリセット:agent_task_successagent_step_correctnessagent_error_taxonomyagent_safetyagent_efficiencyagent_instruction_followingagent_explanation_qualityagent_web_action_correctnessagent_conversation_quality

エージェント型アノテーションのドキュメントを読む →


Solo Mode

Potato 2.3の2つ目の主要機能はSolo Modeです:従来のマルチアノテーターパラダイムを、1人の人間エキスパートがLLMと協調する12フェーズのワークフローに置き換えます。

課題

従来のアノテーションは信頼性のために複数のアノテーターを必要とします。しかし、チームの雇用、トレーニング、調整は高コストで時間がかかります。多くの研究プロジェクトにおいて、アノテーションのボトルネックはインターフェースではなく、ロジスティクスにあります。

解決策

Solo Modeでは、1人のドメインエキスパートがデータの戦略的に選択されたサブセットにラベルを付けます。LLMはそのラベルから学習し、残りのインスタンスにラベルを提案し、人間はLLMが苦戦するケースのみをレビューします。12フェーズのワークフローがこれを自動的にオーケストレーションします。

社内ベンチマークでは、Solo Modeは全人間ラベルのわずか10〜15%で、フルのマルチアノテーターパイプラインと95%以上の一致を達成しました。

12のフェーズ

  1. シードアノテーション -- 人間が50の多様なインスタンスにラベルを付ける
  2. 初回LLMキャリブレーション -- LLMがシード例を使用してキャリブレーションバッチにラベルを付ける
  3. 混同分析 -- 体系的な人間-LLM不一致パターンを特定
  4. ガイドライン改善 -- LLMが改善されたガイドラインを提案し、人間が承認
  5. ラベリング関数生成 -- ALCHEmistに着想を得た、簡単なインスタンス用のプログラマティックルール
  6. アクティブラベリング -- 人間が最も情報量の多い残りのインスタンスにラベルを付ける
  7. 自動改善ループ -- 更新されたガイドラインによる反復的な再ラベリング
  8. 不一致探索 -- LLMとラベリング関数が矛盾するケースを人間が解決
  9. エッジケース合成 -- LLMが人間のラベリング用に合成的な曖昧な例を生成
  10. カスケード信頼度エスカレーション -- 人間がLLMの最も信頼度の低いラベルをレビュー
  11. プロンプト最適化 -- DSPyに着想を得た自動プロンプト検索
  12. 最終検証 -- ランダムサンプルレビュー;合格またはサイクルバック

クイックスタート

yaml
solo_mode:
  enabled: true
  llm:
    endpoint_type: openai
    model: "gpt-4o"
    api_key: ${OPENAI_API_KEY}
  seed_count: 50
  accuracy_threshold: 0.92
  confidence_threshold: 0.85
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    labels: [Positive, Neutral, Negative]

マルチシグナルインスタンス優先順位付け

Solo Modeは、人間のラベリングに最も価値のあるインスタンスを選択するために6つの重み付けプールを使用します:

yaml
solo_mode:
  prioritization:
    pools:
      - name: uncertain
        weight: 0.30
      - name: disagreement
        weight: 0.25
      - name: boundary
        weight: 0.20
      - name: novel
        weight: 0.10
      - name: error_pattern
        weight: 0.10
      - name: random
        weight: 0.05

Solo Modeのドキュメントを読む →


Best-Worst Scaling

Potato 2.3はBest-Worst Scaling(BWS)を追加しました。これはMaximum Difference Scalingとも呼ばれます。アノテーターはアイテムのタプル(通常4つ)を見て、ある基準に従って最良と最悪を選択します。BWSはシンプルな二値判断から信頼性の高いスカラースコアを生成し、同じ統計的検出力を得るためにLikertスケールよりもはるかに少ないアノテーションで済みます。

yaml
annotation_schemes:
  - annotation_type: best_worst_scaling
    name: fluency
    description: "Select the BEST and WORST translation"
    items_key: "translations"
    tuple_size: 4
    best_label: "Most Fluent"
    worst_label: "Least Fluent"
    randomize_order: true
 
    tuple_generation:
      method: balanced_incomplete
      tuples_per_item: 5
 
    scoring:
      method: bradley_terry
      auto_compute: true
      include_confidence: true

3つのスコアリング方法が利用可能です:

  • カウンティング -- シンプルな (best_count - worst_count) / appearances
  • Bradley-Terry -- ペアワイズ比較モデル(推奨デフォルト)
  • Plackett-Luce -- 最大データ効率のためのフルランキングモデル

CLIからスコアリング:

bash
python -m potato.bws score --config config.yaml --method bradley_terry --output scores.csv

管理ダッシュボードにはBWSタブがあり、スコア分布、収束チャート、分割半信頼性メトリクスが含まれています。

Best-Worst Scalingのドキュメントを読む →


SSO & OAuth認証

本番環境のアノテーションデプロイメントには適切な認証が必要です。Potato 2.3は3つのOAuthメソッドをサポートしています:

Google OAuth

yaml
authentication:
  method: google_oauth
  google_oauth:
    client_id: ${GOOGLE_CLIENT_ID}
    client_secret: ${GOOGLE_CLIENT_SECRET}
    redirect_uri: "https://annotation.example.com/auth/google/callback"
    allowed_domains:
      - "umich.edu"
    auto_register: true

GitHub OAuthと組織制限

yaml
authentication:
  method: github_oauth
  github_oauth:
    client_id: ${GITHUB_CLIENT_ID}
    client_secret: ${GITHUB_CLIENT_SECRET}
    redirect_uri: "https://annotation.example.com/auth/github/callback"
    allowed_organizations:
      - "my-research-lab"
    scopes:
      - "read:user"
      - "read:org"

汎用OIDC

Okta、Azure AD、Auth0、Keycloak、またはその他のOIDC準拠プロバイダーに接続:

yaml
authentication:
  method: oidc
  oidc:
    discovery_url: "https://accounts.example.com/.well-known/openid-configuration"
    client_id: ${OIDC_CLIENT_ID}
    client_secret: ${OIDC_CLIENT_SECRET}
    redirect_uri: "https://annotation.example.com/auth/oidc/callback"

すべてのメソッドはドメイン制限、自動登録、混合モード(1つのログインページに複数の認証メソッド)をサポートしています。

SSO & OAuthのドキュメントを読む →


Parquetエクスポート

アノテーションデータは、カラムナー形式を期待するデータサイエンスツールでますます消費されるようになっています。Potato 2.3はアノテーションをApache Parquetに直接エクスポートし、3つの構造化ファイルを生成できます:

  • annotations.parquet -- (インスタンス、アノテーター、スキーマ)ごとに1行、値、タイムスタンプ、所要時間を含む
  • spans.parquet -- アノテーション済みスパンごとに1行、オフセット、ラベル、リンクを含む
  • items.parquet -- インスタンスメタデータ、アノテーション数とステータスを含む
yaml
parquet_export:
  enabled: true
  output_dir: "output/parquet/"
  compression: zstd
  auto_export: true

pandas、DuckDB、PyArrow、Polars、またはHugging Face Datasetsで直接読み込み:

python
import pandas as pd
annotations = pd.read_parquet("output/parquet/annotations.parquet")
 
# Or with DuckDB for SQL queries
import duckdb
duckdb.sql("""
  SELECT instance_id, value, COUNT(*) as n
  FROM 'output/parquet/annotations.parquet'
  WHERE schema_name = 'sentiment'
  GROUP BY instance_id, value
""")

snappy、gzip、zstd、lz4、brotli圧縮、日付/アノテーターパーティショニングによる増分エクスポート、文字列カラムの辞書エンコーディングをサポートしています。

Parquetエクスポートのドキュメントを読む →


15の新しいデモプロジェクト

Potato 2.3には、project-hub/ディレクトリに新機能をカバーする15の新しいデモプロジェクトが同梱されています:

エージェント型アノテーションデモ

  1. react-agent-eval -- ステップレベル評価によるReActエージェントトレースの評価
  2. web-agent-eval -- スクリーンショットオーバーレイ付きWebArenaトレース評価
  3. chatbot-eval -- ライブエージェントプロキシによるインタラクティブチャット評価
  4. multi-agent-eval -- CrewAIマルチエージェントシステムの評価
  5. swebench-eval -- コーディングエージェント向けSWE-benchトレース評価

Solo Modeデモ

  1. solo-sentiment -- 商品レビューのSolo Modeセンチメント分類
  2. solo-ner -- Solo Mode固有表現認識
  3. solo-toxicity -- エッジケース合成付きSolo Mode毒性検出

Best-Worst Scalingデモ

  1. bws-translation -- 機械翻訳品質ランキング
  2. bws-summarization -- 要約品質比較
  3. bws-image-quality -- 画像生成品質ランキング

認証デモ

  1. google-oauth-demo -- Google OAuthセットアップ例
  2. github-oauth-demo -- 組織制限付きGitHub OAuth

エクスポートデモ

  1. parquet-export-demo -- DuckDB分析スクリプト付きParquetエクスポート
  2. huggingface-upload -- Parquetにエクスポートし、Hugging Face Hubにプッシュ

各デモには完全なconfig.yaml、サンプルデータ、セットアップ手順付きREADMEが含まれています。任意のデモを以下で開始:

bash
cd project-hub/react-agent-eval
potato start config.yaml

セキュリティ強化

Potato 2.3にはいくつかのセキュリティ改善が含まれています:

  • セッショントークンは、設定可能な有効期限付きの暗号学的に安全なランダム生成を使用
  • CSRF保護は、すべてのフォーム送信でデフォルトで有効
  • レート制限が認証エンドポイントに適用(設定可能、デフォルトは1分あたり10回の試行)
  • 入力サニタイゼーションは、アノテーションインターフェースに表示されるすべてのユーザー提供コンテンツに適用
  • 依存関係の監査 -- すべてのPythonおよびJavaScript依存関係を最新のセキュアバージョンに更新
  • Content Security PolicyヘッダーがXSS防止のために追加
yaml
security:
  csrf_protection: true
  rate_limiting:
    auth_attempts: 10            # per minute
    api_requests: 100            # per minute
  session:
    token_length: 64
    lifetime_hours: 24
  content_security_policy: true

アップグレード

Potato 2.2.xからのアップグレード

bash
pip install --upgrade potato-annotation

すべてのv2.2設定は完全な後方互換性があります。既存の設定への変更は必要ありません。

新しい依存関係

ParquetエクスポートにはPyArrowが必要です:

bash
pip install potato-annotation[parquet]

Solo ModeにはLLMプロバイダーSDKが必要です:

bash
pip install potato-annotation[solo]    # installs openai + anthropic SDKs

すべてをインストールする場合:

bash
pip install potato-annotation[all]

今後の展望

Potato 2.3は、アノテーションツールができることの大幅な拡張を表しています。次の機能セットの開発はすでに進行中です:

  • アノテーション差分 -- ラウンドやアノテーター間でアノテーションをビジュアル差分で比較
  • フェデレーテッドアノテーション -- 複数のPotatoインスタンス間でアノテーションを調整
  • ストリーミングデータソース -- Kafka、Pub/Sub、その他のストリーミングシステムからのデータをアノテーション
  • モバイル最適化インターフェース -- タブレットとスマートフォン向けのレスポンシブアノテーション

フィードバックをお待ちしております。GitHubでIssueを報告し、GitHub Discussionsでディスカッションに参加するか、チームに直接お問い合わせください。


リンク