Skip to content

ICLラベリング

スケーラブルなアノテーションのためのAI支援インコンテキスト学習と人間による検証。

AI支援ICLラベリング

PotatoのICL(In-Context Learning)ラベリング機能は、高信頼度の人間アノテーションをインコンテキスト例として使用してLLMに残りのデータのラベリングを誘導することで、AI支援アノテーションを実現します。システムはLLMの信頼度を追跡し、予測を人間に戻して検証を行います。

概要

ICLラベリングシステムは:

  1. 高信頼度の例を収集:アノテーターが一致するインスタンスを特定する(例:80%以上の一致)
  2. LLMでラベリング:例を使用してLLMに未ラベルインスタンスのラベリングをプロンプトする
  3. 信頼度を追跡:各予測のLLM信頼度スコアを記録する
  4. 精度を検証:LLMラベル付きインスタンスのサンプルを人間にブラインド検証のために送る
  5. メトリクスを報告:検証結果に基づいてLLM精度を計算・表示する

機能

自動例収集

システムは複数のアノテーターが一致する高信頼度の例を自動的に特定します:

  • 設定可能な一致閾値(デフォルト:80%)
  • 最小アノテーター数要件(デフォルト:2)
  • 設定可能な間隔での自動リフレッシュ
  • スキーマごとの例プール

制限付きLLMラベリング

一括ラベリングではなく反復的な改善を可能にするために:

  • 最大総ラベル数:LLM予測の総数を制限
  • 最大未ラベル比率:残りデータの一定割合のみをラベリング
  • 精度低下時の一時停止:精度が閾値を下回ると自動的に一時停止

ブラインド検証

検証は「ブラインドラベリング」を使用します - アノテーターはLLMの予測を知らずに通常のタスクとしてインスタンスを見ます:

  • 設定可能なサンプリング率(デフォルト:LLMラベルの20%)
  • 複数の選択戦略:low_confidencerandommixed
  • 検証タスクは通常の割り当てに自然に混ぜられる

設定

ICLラベリングにはai_supportが有効である必要があります:

yaml
# AI endpoint configuration (required)
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
 
# ICL labeling configuration
icl_labeling:
  enabled: true
 
  # Example selection settings
  example_selection:
    min_agreement_threshold: 0.8      # 80% annotators must agree
    min_annotators_per_instance: 2    # Minimum annotations for consensus
    max_examples_per_schema: 10       # Max examples per schema in prompt
    refresh_interval_seconds: 300     # How often to refresh examples
 
  # LLM labeling settings
  llm_labeling:
    batch_size: 20
    trigger_threshold: 5              # Min examples before LLM labeling starts
    confidence_threshold: 0.7         # Min confidence to accept prediction
    batch_interval_seconds: 600
    max_total_labels: 100             # Max instances to label total
    max_unlabeled_ratio: 0.5          # Max portion of unlabeled to label
    pause_on_low_accuracy: true
    min_accuracy_threshold: 0.7
 
  # Human verification settings
  verification:
    enabled: true
    sample_rate: 0.2                  # 20% of LLM labels verified
    selection_strategy: "low_confidence"
    mix_with_regular_assignments: true
    assignment_mix_rate: 0.2

選択戦略

  • low_confidence:LLMの最も信頼度の低い予測の検証を優先
  • random:すべての予測からランダムサンプリング
  • mixed:50%低信頼度 + 50%ランダム

管理者API

ステータスエンドポイント

http
GET /admin/api/icl/status

スキーマごとの例数、予測数、検証キューサイズ、精度メトリクスを含む全体的なICLラベラーステータスを返します。

例エンドポイント

http
GET /admin/api/icl/examples?schema=sentiment

オプションでスキーマでフィルタリングした高信頼度の例を返します。

精度エンドポイント

http
GET /admin/api/icl/accuracy?schema=sentiment

人間による検証結果に基づく精度メトリクスを返します。

手動トリガーエンドポイント

http
POST /admin/api/icl/trigger
Content-Type: application/json
 
{"schema_name": "sentiment"}

特定のスキーマのバッチラベリングを手動でトリガーします。

使用ワークフロー

1. プロジェクトの設定

yaml
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
 
icl_labeling:
  enabled: true
  example_selection:
    min_agreement_threshold: 0.8
  llm_labeling:
    max_total_labels: 50  # Start small
  verification:
    enabled: true
    sample_rate: 0.3  # Verify 30% initially

2. 人間アノテーションの収集

アノテーターに通常通りデータにラベルを付けてもらいます。コンセンサス(80%以上の一致)に達すると、それらのインスタンスが例として利用可能になります。

3. 進捗の監視

bash
curl http://localhost:8000/admin/api/icl/status

4. 精度の確認

bash
curl http://localhost:8000/admin/api/icl/accuracy

5. 反復

精度に基づいて:

  • 精度が高い場合(>80%)、max_total_labelsを増やす
  • 精度が低い場合、続行前に人間の例を追加する

ベストプラクティス

  1. 小さく始める:精度を評価してからスケールアップするために、保守的な制限(max_total_labels: 50)から始める

  2. 早期に検証する:信頼できる精度推定を得るために、最初は高いsample_rate(0.3-0.5)を使用する

  3. 積極的に監視する:管理者APIを通じて定期的に精度メトリクスを確認する

  4. 閾値を調整する:LLM精度が低い場合:

    • よりクリーンな例のためにmin_agreement_thresholdを上げる
    • ラベリング前により多くの例を集めるためにtrigger_thresholdを上げる
    • 不確実な予測を拒否するためにconfidence_thresholdを下げる
  5. 選択戦略を使用する

    • low_confidence:問題のあるカテゴリの特定に最適
    • random:偏りのない精度推定に最適
    • mixed:バランスの取れたアプローチ

トラブルシューティング

LLMがラベリングしない

  1. ai_supportが適切に設定されているか確認する
  2. 十分な高信頼度の例が存在するか確認する
  3. 制限や低精度によりラベリングが一時停止されていないか確認する

精度が低い

  1. よりクリーンな例のためにmin_agreement_thresholdを上げる
  2. アノテーションガイドライン/指示を追加する
  3. 使用されている例を確認する(/admin/api/icl/examples

検証タスクが表示されない

  1. verification.enabledがtrueであることを確認する
  2. mix_with_regular_assignmentsがtrueであることを確認する
  3. キューに保留中の検証があることを確認する

関連情報

実装の詳細については、ソースドキュメントを参照してください。