Skip to main content

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"を含めます。

HITLレビューの仕組み

HITLレビューサイクルは、タスク送信と研究実行の間に人間のチェックポイントを挿入します:
1

レビュー有効でタスクを送信

コンテキストにrequire_review: true(またはreview_plan: "manual")を追加してリサーチタスクを送信します。
2

AIが初期研究計画を生成

LLMサービスがクエリに基づいて研究計画を生成します。ワークフローは一時停止し、人間の入力を待ちます。
3

レビューとフィードバック提供

レビューAPIで提案された計画を確認します。フィードバックを送信して計画を反復的に改善します(最大10ラウンド)。
4

計画を承認

満足したら計画を承認します。ワークフローが再開し、確認された研究方向で実行されます。
5

研究実行

ResearchWorkflowが承認された計画をコンテキストとして注入し、焦点を絞った引用付きの研究レポートを生成します。

アーキテクチャ

HITLレビューの有効化

リサーチタスク送信時に、タスクコンテキストへrequire_review: trueを追加します:
HITLレビューにはforce_research: trueが必要です。レビューサイクルはResearchWorkflowの一部であるため、このパラメータがないとオーケストレータがレビューをサポートしない別のワークフローにタスクをルーティングする可能性があります。
代替コンテキストキーreview_plan: "manual"も受け付けられ、動作は同一です。デスクトップアプリではディープリサーチの自動承認を無効にした際にrequire_review: trueを使用します。

レビュー状態の取得

送信後、レビュー計画の準備完了をポーリングします。ワークフローがLLMで初期計画を生成し、Redisに保存します。

レスポンス

レスポンスには現在のバージョン番号を含むETagヘッダーが含まれ、楽観的並行性制御に使用されます。

フィードバックの送信

フィードバックを送信して計画を改善します。ゲートウェイがメッセージをLLMに転送し、LLMがユーザーの入力を反映した更新計画を生成します。

フィードバックレスポンス

intentフィールドはLLMの評価を示します:
  • "feedback" — LLMが明確化のための質問をしています(まだ実行可能な計画がない)
  • "ready" — LLMが実行可能な研究方向を提案しました

並行性制御

If-Matchヘッダー(curl)またはversionパラメータ(SDK)で楽観的並行性を有効にします。前回の読み取り以降に別のリクエストが状態を変更した場合、サーバーは409 Conflictを返します:
分散Redisロックにより、LLM呼び出し中に2つのフィードバックリクエストが競合することも防止されます。

ラウンド制限

最大10ラウンドのフィードバックが許可されています。最終ラウンドでは、LLMに確定的な計画を生成するよう指示されます。この制限を超えると、承認のみが受け付けられます:

計画の承認

計画に満足したら、承認してワークフローを再開します:

承認レスポンス

承認後:
  1. ゲートウェイが待機中のワークフローにTemporal Signalを送信
  2. 確認された計画とレビュー会話がタスクコンテキストに注入
  3. ResearchWorkflowが承認された研究方向で実行を継続
  4. SSEがRESEARCH_PLAN_APPROVEDを発行
current_planが空の場合、承認はできません。LLMがインテント"ready"の計画を少なくとも1つ生成している必要があります。計画なしで承認しようとすると、サーバーは以下を返します:

SSEイベント

HITLレビューサイクルは専用のSSEイベントを発行し、ストリーミングエンドポイントで消費できます:
これらのイベントはRedisイベントストリームに発行され、セッション履歴やページリロード時にレビュー会話が表示されます。

設定

レビュータイムアウト

ワークフローはレビュー完了を最大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レビューはすべての研究戦略プリセット(quickstandarddeepacademic)で動作します。承認された計画が後続の研究実行を導きます。

トラブルシューティング

レビュー状態はRedisにTTL 20分(レビュータイムアウト + 5分バッファ)で保存されます。有効期限切れ後、レビューセッションにはアクセスできません。タスクを再送信して新しいレビューを開始してください。
前回の読み取り以降に別のリクエストがレビュー状態を変更したか、別のフィードバックリクエストが進行中であることを意味します。GET /reviewで現在の状態を再取得し、最新バージョンで再試行してください。
LLMは明確化の質問のみを行い(intent: "feedback")、実行可能な計画をまだ生成していません。LLMが具体的な研究方向を生成するよう、少なくとも1つのフィードバックメッセージを送信してください。
レビューが設定されたタイムアウト(デフォルト:15分)を超えました。タスクコンテキストでreview_timeoutを増やすか、より迅速に承認してください。

次のステップ

ディープリサーチ

包括的な研究レポートの構築

タスク承認API

リサーチ以外のタスクの承認ワークフロー

HITLレビューAPI

レビューエンドポイントの完全なAPIリファレンス