Skip to main content

エージェント実行フロー

エージェントはユーザーの入力を分析し、自動的にツールを選択して実行します。一部のツール(plan / report / matrix)は、実行前に人間の確認が必要な Human-in-the-Loop(HITL)ポイントを含んでいます。 このページでは、すべての実行パターンのイベントフローと、APIユーザーが各状態でどう操作すべきかを説明します。

共通フロー

すべての実行は以下の形式で開始されます。

ツール分岐一覧

エージェントは chat-routing で入力を分析し、以下のツールから自動的に選択します。

パターン1: 直接回答

ツールを使わず、エージェントが直接テキストで回答します。
API操作: 不要

パターン2: search(Web検索)

API操作: 不要(全自動)

パターン3: browse(ブラウザ操作)

API操作: 不要。maxBrowsingSteps パラメータで最大ステップ数を制御できます。

browse 中に人間の入力が必要な場合

browse は通常は全自動ですが、ログイン画面・Cookie確認・判断が必要な画面などで人間に質問することがあります。この場合は plan/report/matrix の HITL とは扱いが違います。
この状態では /agent/run/{runId}/plan/answer などは使いません。browse-start イベントで受け取った websocketInfo.session_id を使って、ブラウザ操作APIに回答します。
ファイルを添付して回答する場合は /browser/answer-question-with-files を使います。
質問待ちではないが、実行中のブラウザへ追加指示を出したい場合は /browser/spontaneous-input を使います。例: 「次は価格ページを開いて」「そのフォームには入力しないで」。
GET /agent/run/{runId}/statusbrowseState.askHumanQuestion でも質問待ちかどうかは確認できます。ただし回答には sessionId が必要です。APIクライアントは browse-start.payload.websocketInfo.session_id を受け取った時点で保存しておいてください。

パターン4: skill(サンドボックス実行)

API操作: 不要(全自動)

パターン5: plan(調査計画) — HITLあり

ステップ1: 状態確認

ステップ2: 確認操作(いずれか1つ)

質問に回答してドラフトを修正:
regenerated_plan イベントが返り、再度確認待ちになります。 プランを確定:
plan_confirmed が返ります。 質問をスキップして確定:

ステップ3: レジューム

→ 調査が開始され、search/browse等のツールイベントがストリーミングされます。

パターン6: report(レポート生成) — HITLあり

ステップ1: 状態確認

ステップ2: 確認操作

質問に回答:
確定:

ステップ3: レジューム → セクション自動生成


パターン7: matrix(マトリクス生成) — HITLあり

ステップ1: 状態確認

ステップ2: 確認操作

質問に回答:
確定:

ステップ3: レジューム → データ自動抽出


複合パターン: plan → report

1つの実行で複数の HITL が発生する場合があります。
この場合、レジューム → pendingReportDraft: true を検出 → confirm → 再レジューム、という流れを繰り返します。

状態判定早見表

skill の secret 登録待ち

skill が外部APIキーなどを必要とする場合、SSE に skill-ask-secret が流れ、GET /agent/run/{runId}/statusskillState.pendingSecretKeys に不足キーが表示されます。
不足しているキーごとに /secret へ登録します。
secret 登録は待機中の skill に通知されるため、通常は /agent/run/stream/{runId} を呼び直す必要はありません。クライアントは同じSSEを読み続けるか、GET /agent/run/{runId}/statuspendingSecretKeys が空になることを確認します。

plan / report / matrix の回答API

pendingPlanDraftpendingReportDraftpendingMatrixDraft は、どれも「ドラフトに対する確認待ち」です。修正したい場合は /answer に回答を送り、返ってきた再生成ドラフトを確認します。問題なければ /confirm で確定し、最後に /agent/run/stream/{runId} で実行を再開します。

/answer のリクエストボディ

Plan / Report / Matrix の /answer は共通の形です。
例:

/confirm/skip のリクエストボディ

確定系APIは runId だけを送ります。
plan/skip は「追加回答なしでプランを確定する」操作です。Report と Matrix には skip はありません。

APIユーザーの基本ループ

plan / report / matrix は「エージェント実行全体が一度止まる」ため、確認後に /agent/run/stream/{runId} でレジュームします。browse の質問は「ブラウザセッションへの入力待ち」なので、/browser/answer-question に回答し、同じ実行をそのまま続けます。

実装例: 完全なエージェント実行クライアント

以下は、SSEストリーミング・HITL確認・レジュームをすべて自動で処理するPython実装例です。APIをどう組み合わせて進行させるかの参考にしてください。

シンプルな実行(HITLなし)

ツールなし or search/browse/skill など、HITLが発生しないケースです。

HITL対応の完全ループ

plan → report → matrix など、複数回のHITL確認が発生するケースです。

HITL確認に人間の判断を挟む場合

自動確定ではなく、質問内容を表示して人間が判断するパターンです。

非ストリーミング版(ポーリング方式)

SSEではなく、非ストリーミングAPI + ポーリングで進行する方式です。

TypeScript実装例