ICLラベリング
スケーラブルなアノテーションのためのAI支援インコンテキスト学習と人間による検証。
AI支援ICLラベリング
PotatoのICL(In-Context Learning)ラベリング機能は、高信頼度の人間アノテーションをインコンテキスト例として使用してLLMに残りのデータのラベリングを誘導することで、AI支援アノテーションを実現します。システムはLLMの信頼度を追跡し、予測を人間に戻して検証を行います。
概要
ICLラベリングシステムは:
- 高信頼度の例を収集:アノテーターが一致するインスタンスを特定する(例:80%以上の一致)
- LLMでラベリング:例を使用してLLMに未ラベルインスタンスのラベリングをプロンプトする
- 信頼度を追跡:各予測のLLM信頼度スコアを記録する
- 精度を検証:LLMラベル付きインスタンスのサンプルを人間にブラインド検証のために送る
- メトリクスを報告:検証結果に基づいてLLM精度を計算・表示する
機能
自動例収集
システムは複数のアノテーターが一致する高信頼度の例を自動的に特定します:
- 設定可能な一致閾値(デフォルト:80%)
- 最小アノテーター数要件(デフォルト:2)
- 設定可能な間隔での自動リフレッシュ
- スキーマごとの例プール
制限付きLLMラベリング
一括ラベリングではなく反復的な改善を可能にするために:
- 最大総ラベル数:LLM予測の総数を制限
- 最大未ラベル比率:残りデータの一定割合のみをラベリング
- 精度低下時の一時停止:精度が閾値を下回ると自動的に一時停止
ブラインド検証
検証は「ブラインドラベリング」を使用します - アノテーターはLLMの予測を知らずに通常のタスクとしてインスタンスを見ます:
- 設定可能なサンプリング率(デフォルト:LLMラベルの20%)
- 複数の選択戦略:
low_confidence、random、mixed - 検証タスクは通常の割り当てに自然に混ぜられる
設定
ICLラベリングにはai_supportが有効である必要があります:
# 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
ステータスエンドポイント
GET /admin/api/icl/statusスキーマごとの例数、予測数、検証キューサイズ、精度メトリクスを含む全体的なICLラベラーステータスを返します。
例エンドポイント
GET /admin/api/icl/examples?schema=sentimentオプションでスキーマでフィルタリングした高信頼度の例を返します。
精度エンドポイント
GET /admin/api/icl/accuracy?schema=sentiment人間による検証結果に基づく精度メトリクスを返します。
手動トリガーエンドポイント
POST /admin/api/icl/trigger
Content-Type: application/json
{"schema_name": "sentiment"}特定のスキーマのバッチラベリングを手動でトリガーします。
使用ワークフロー
1. プロジェクトの設定
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% initially2. 人間アノテーションの収集
アノテーターに通常通りデータにラベルを付けてもらいます。コンセンサス(80%以上の一致)に達すると、それらのインスタンスが例として利用可能になります。
3. 進捗の監視
curl http://localhost:8000/admin/api/icl/status4. 精度の確認
curl http://localhost:8000/admin/api/icl/accuracy5. 反復
精度に基づいて:
- 精度が高い場合(>80%)、
max_total_labelsを増やす - 精度が低い場合、続行前に人間の例を追加する
ベストプラクティス
-
小さく始める:精度を評価してからスケールアップするために、保守的な制限(
max_total_labels: 50)から始める -
早期に検証する:信頼できる精度推定を得るために、最初は高い
sample_rate(0.3-0.5)を使用する -
積極的に監視する:管理者APIを通じて定期的に精度メトリクスを確認する
-
閾値を調整する:LLM精度が低い場合:
- よりクリーンな例のために
min_agreement_thresholdを上げる - ラベリング前により多くの例を集めるために
trigger_thresholdを上げる - 不確実な予測を拒否するために
confidence_thresholdを下げる
- よりクリーンな例のために
-
選択戦略を使用する:
low_confidence:問題のあるカテゴリの特定に最適random:偏りのない精度推定に最適mixed:バランスの取れたアプローチ
トラブルシューティング
LLMがラベリングしない
ai_supportが適切に設定されているか確認する- 十分な高信頼度の例が存在するか確認する
- 制限や低精度によりラベリングが一時停止されていないか確認する
精度が低い
- よりクリーンな例のために
min_agreement_thresholdを上げる - アノテーションガイドライン/指示を追加する
- 使用されている例を確認する(
/admin/api/icl/examples)
検証タスクが表示されない
verification.enabledがtrueであることを確認するmix_with_regular_assignmentsがtrueであることを確認する- キューに保留中の検証があることを確認する
関連情報
実装の詳細については、ソースドキュメントを参照してください。