Human-in-the-Loopレビュー
ShannonのHuman-in-the-Loop(HITL)レビューシステムでは、ワークフローの実行開始前にAI生成の研究計画をレビューし、改善できます。これは特にディープリサーチタスクで有用で、研究の方向性を指示したり、制約を追加したり、エージェントが最も重要な点に集中するよう保証できます。学べること
- HITLレビューサイクルの仕組み(計画生成、フィードバック、承認)
- タスク送信時のHITLレビューの有効化
- レビューAPIとの対話(状態取得、フィードバック送信、承認)
- バージョン追跡による楽観的並行性制御
- レビューサイクル中に発行されるSSEイベント
- Python SDKでのHITLレビューの使用方法
- 設定オプションとタイムアウト
前提条件
- Shannonスタックが稼働中(Docker Compose)
http://localhost:8080でゲートウェイにアクセス可能- 認証のデフォルト:
- Docker Compose: 認証はデフォルトで無効(
GATEWAY_SKIP_AUTH=1)。 - ローカルビルド: 認証はデフォルトで有効。認証を無効にするには
GATEWAY_SKIP_AUTH=1を設定するか、APIキーヘッダー-H "X-API-Key: $API_KEY"を含めます。
- Docker Compose: 認証はデフォルトで無効(
HITLレビューの仕組み
HITLレビューサイクルは、タスク送信と研究実行の間に人間のチェックポイントを挿入します:アーキテクチャ
HITLレビューの有効化
リサーチタスク送信時に、タスクコンテキストへrequire_review: trueを追加します:
HITLレビューには
force_research: trueが必要です。レビューサイクルはResearchWorkflowの一部であるため、このパラメータがないとオーケストレータがレビューをサポートしない別のワークフローにタスクをルーティングする可能性があります。review_plan: "manual"も受け付けられ、動作は同一です。デスクトップアプリではディープリサーチの自動承認を無効にした際にrequire_review: trueを使用します。
レビュー状態の取得
送信後、レビュー計画の準備完了をポーリングします。ワークフローがLLMで初期計画を生成し、Redisに保存します。レスポンス
ETagヘッダーが含まれ、楽観的並行性制御に使用されます。
| フィールド | 型 | 説明 |
|---|---|---|
status | string | "reviewing" または "approved" |
round | int | 現在の会話ラウンド(1から開始) |
version | int | 並行性制御用の単調増加バージョン |
current_plan | string | 最新の実行可能な計画(LLMのインテントが"ready"のときに設定) |
rounds | array | 完全な会話履歴(ロール、メッセージ、タイムスタンプ) |
query | string | 元のタスククエリ |
フィードバックの送信
フィードバックを送信して計画を改善します。ゲートウェイがメッセージをLLMに転送し、LLMがユーザーの入力を反映した更新計画を生成します。フィードバックレスポンス
intentフィールドはLLMの評価を示します:
"feedback"— LLMが明確化のための質問をしています(まだ実行可能な計画がない)"ready"— LLMが実行可能な研究方向を提案しました
並行性制御
If-Matchヘッダー(curl)またはversionパラメータ(SDK)で楽観的並行性を有効にします。前回の読み取り以降に別のリクエストが状態を変更した場合、サーバーは409 Conflictを返します:
ラウンド制限
最大10ラウンドのフィードバックが許可されています。最終ラウンドでは、LLMに確定的な計画を生成するよう指示されます。この制限を超えると、承認のみが受け付けられます:計画の承認
計画に満足したら、承認してワークフローを再開します:承認レスポンス
- ゲートウェイが待機中のワークフローにTemporal Signalを送信
- 確認された計画とレビュー会話がタスクコンテキストに注入
- ResearchWorkflowが承認された研究方向で実行を継続
- SSEが
RESEARCH_PLAN_APPROVEDを発行
SSEイベント
HITLレビューサイクルは専用のSSEイベントを発行し、ストリーミングエンドポイントで消費できます:| イベントタイプ | 説明 | ペイロード |
|---|---|---|
RESEARCH_PLAN_READY | 初期計画生成完了、レビュー待ち | round, intent |
REVIEW_USER_FEEDBACK | ユーザーフィードバック送信済み | round, version |
RESEARCH_PLAN_UPDATED | フィードバック後の計画更新 | round, version, intent |
RESEARCH_PLAN_APPROVED | 計画承認済み、研究開始 | — |
設定
レビュータイムアウト
ワークフローはレビュー完了を最大15分(デフォルト)待ちます。この時間内に承認がない場合、ワークフローはタイムアウトします:review_timeoutコンテキストパラメータ(秒単位)でタイムアウトをカスタマイズできます:
承認ワークフロー(独立機能)
Shannonにはリサーチ以外のタスク用の承認ワークフローもあります。これはfeatures.yamlで設定し、複雑さのしきい値や危険なツールの使用に基づいてトリガーされます:
POST /api/v1/approvals/decision)を使用し、HITLリサーチレビューとは独立しています。詳細はタスク承認APIリファレンスを参照してください。
Python SDKリファレンス
Shannon Python SDKはHITLレビューサイクル専用のメソッドを提供しています:非同期SDK
ベストプラクティス
バージョン追跡の使用
競合状態を防ぐため、常に
If-Matchヘッダー(またはSDKのversionパラメータ)を渡してください。複数のユーザーやタブが同じレビューを操作する可能性がある場合に特に重要です。適切なタイムアウト設定
デフォルトの15分タイムアウトはほとんどの対話的ユースケースに適しています。非同期レビュー(メールベースの承認など)では
review_timeoutを増やしてください。intent: readyを待つ
承認前に、LLMがインテント
"ready"の計画を生成していることを確認してください。インテント"feedback"のラウンドはLLMがより多くの情報を必要としていることを示します。研究戦略との組み合わせ
HITLレビューはすべての研究戦略プリセット(
quick、standard、deep、academic)で動作します。承認された計画が後続の研究実行を導きます。トラブルシューティング
レビューセッションが見つからない(404)
レビューセッションが見つからない(404)
レビュー状態はRedisにTTL 20分(レビュータイムアウト + 5分バッファ)で保存されます。有効期限切れ後、レビューセッションにはアクセスできません。タスクを再送信して新しいレビューを開始してください。
フィードバック時のコンフリクトエラー(409)
フィードバック時のコンフリクトエラー(409)
前回の読み取り以降に別のリクエストがレビュー状態を変更したか、別のフィードバックリクエストが進行中であることを意味します。
GET /reviewで現在の状態を再取得し、最新バージョンで再試行してください。承認拒否:研究計画なし
承認拒否:研究計画なし
LLMは明確化の質問のみを行い(intent:
"feedback")、実行可能な計画をまだ生成していません。LLMが具体的な研究方向を生成するよう、少なくとも1つのフィードバックメッセージを送信してください。レビュー中にワークフローがタイムアウト
レビュー中にワークフローがタイムアウト
レビューが設定されたタイムアウト(デフォルト:15分)を超えました。タスクコンテキストで
review_timeoutを増やすか、より迅速に承認してください。