シグナルベースのトリアージキュー
アイテムごとの品質シグナルでアノテーションキューを優先順位付けし、レビュアーが到着順ではなく、最も問題のある、または最も疑わしいトレースを最初に確認できるようにします。エージェントのエラー、本番環境の低評価、低スコア、任意のカスタムフィールドでルーティングできます。
トリアージキューはアイテムごとの品質シグナルでアノテーションを優先順位付けし、レビュアーが最も問題のある、または最も疑わしいアイテムを最初に確認できるようにします。到着順(FIFO)に処理するのではありません。シグナルには、エージェントのエラー、本番環境の低評価、自動採点による低スコア、任意のカスタムフィールドを使えます。静的に読み込まれたデータと実行時に取り込まれたトレースの両方で読み取られ、アノテーション中のバナーと /admin/triage-queue のランキングページの2か所に表示されます。
人間によるレビュー時間が限られている場合、アイテムがアノテーターに届く順序が重要になります。最も有益なアイテムを先にルーティングすることは、能動的な評価ループにおけるトリアージの役割であり、ジャッジ整合性と自然に組み合わさって、意見の相違やエラーを優先的に人間へ送ります。
そのアイテムがレビュー対象としてフラグ付けされた理由を説明する優先度バッジ
設定
triage:
enabled: true
order: desc # high priority first (default); 'asc' = low first
default_priority: 0 # items matching no rule
show_badge: true # banner during annotation explaining the priority
rules: # evaluated in order; highest matching priority wins
- name: "Agent errored"
badge: "Agent errored" # banner text (defaults to name)
priority: 100
when:
field: status # dotted paths allowed, e.g. metadata.tags
equals: error
- name: "Negative feedback"
priority: 80
when:
field: feedback
in: [thumbs_down, negative]
- name: "Low quality score"
priority: 60
when:
field: score
lt: 0.5
# Serve the highest-priority items first. If you enable triage without setting
# assignment_strategy, Potato defaults to `priority` automatically.
assignment_strategy: priorityrules(および signal_field)を省略すると、Potato はそのまま使えるデフォルトセットを使用します。エラーステータス(100)、否定的なフィードバック(80)、0.5 未満のスコア(60)です。
条件演算子
| 演算子 | 意味 |
|---|---|
equals | 完全一致(文字列は大文字小文字を区別しない) |
in | 値がリストのいずれかである |
contains | リストフィールドが含む、または部分文字列の一致 |
lt / lte / gt / gte | 数値比較 |
exists | フィールドが存在するか、しないか(true/false) |
数値シグナルを直接読み取る
ルールの代わりに、またはルールに加えて、フィールドから数値を直接読み取ることができます。
triage:
enabled: true
signal_field: quality_score # used as the priority when no rule matches
invert_signal: true # lower score => higher priority優先度が割り当てを駆動する仕組み
assignment_strategy: priority を設定します。ユーザーがアイテムを必要とすると、キューは各アイテムに保存された triage_priority でソートされ(デフォルトは降順、order: asc で反転)、同値の場合は決定論的になるよう元の読み込み順で決着され、上位のアイテムが割り当てられます。シグナルは読み込み時または取り込み時に一度だけ計算されてアイテムに保存されるため、割り当ては低コストのままです。
バッジ(show_badge: true)は戦略とは独立しています。別の割り当て戦略を維持していても、そのアイテムがフラグ付けされた理由を説明します。
管理者用キューページ
GET /admin/triage-queue # JSON
GET /admin/triage-queue?format=html # rendered page
X-API-Key ヘッダーを送信してください。このページは、残っている(未完了の)すべてのアイテムを優先度順にランク付けして表示し、それをフラグ付けしたルール、現在のアノテーション数、そしてすでに割り当て済みかどうかを示します。
実行時の取り込み
スコアラーはアイテムが追加されるときに実行されるため、トレース取り込み(webhook エンドポイントまたは Langfuse ポーラー)を通じて実行時に取り込まれたトレースは、到着時にスコア付けされ、自動的に優先度キューに収まります。セッション中に投入された低スコアまたはエラーのトレースは、まだ待機しているクリーンなトレースを追い越します。
注意事項と制限
- 優先度は挿入時に計算されます。
triage.rulesを編集して再起動すると、次回の読み込み時にすべてが再スコアリングされます。 - 不正な形式のルールは警告をログに記録してスキップされます。データの読み込みを妨げることはありません。
- トリアージはどのアイテムを提供するかの順序を決めます。アイテムごとのアノテーション上限は変更しません。
関連項目
- ジャッジ ↔ 人間の整合性 — ジャッジと人間の一致度を定量化する
- 3ペインのトレース評価 — 入ってくるトレースを素早く読む
- エージェント型アノテーション — トレースの取り込みと表示
実装の詳細については、ソースドキュメントを参照してください。