JamJet

Agent-as-Tool

あらゆるエージェントを呼び出し可能なツールとしてラップ — 同期、ストリーミング、会話型に対応。

Agent-as-Tool

JamJetでは、任意のエージェントをワークフロー内で呼び出し可能なツールとしてラップできます。3つの呼び出しモードにより、クイック検索から長時間実行される分析、マルチターン会話まで、さまざまなユースケースに対応します。

3つのモード

Sync

単一リクエスト、単一レスポンス。高速でステートレスな操作に最適です。

graph.add_agent_tool("classifier",
    agent="https://classifier-agent.example.com",
    mode="sync",
    timeout_ms=5000,
)

/tasks/sendにポストし、完全なレスポンスをノード出力として返します。

Streaming

リアルタイムイベント送信による段階的なNDJSON処理。進行状況の可視化、予算管理、早期終了が必要な長時間実行エージェントに最適です。

graph.add_agent_tool("researcher",
    agent="https://research-agent.example.com",
    mode="streaming",
    budget={"max_cost_usd": 0.50},
    streaming={"idle_timeout_secs": 30},
)

/tasks/sendSubscribeにポストし、NDJSONストリームを段階的に処理します:

  • リアルタイムイベント — 各チャンクは到着時に即座にステートバックエンドに送信され、最後にまとめて送信されることはありません
  • アイドルタイムアウトidle_timeout_secs(デフォルト30秒)以内にデータが到着しない場合、ストリームは終了されます
  • 予算ガード — チャンクから累積されたcost_usdmax_cost_usdを超えると、ストリームは停止します
  • A2Aキャンセル — 早期終了時(予算またはタイムアウト)、リモートエージェントに対してベストエフォートのtasks/cancelが送信されます
  • 部分結果の保持 — すでに送信されたチャンクは、失敗時でも決して失われません

Conversational

反復的な改善のためのマルチターン交換。コーディネーターが入力を送信し、レスポンスを読み取り、次のターンの入力としてフィードバックします。

graph.add_agent_tool("editor",
    agent="https://editor-agent.example.com",
    mode={"conversational": {"max_turns": 5}},
)

ループ内で/tasks/sendにポストします。エージェントがstatus: "completed"で応答するか、max_turnsに達すると停止します。

ストリーミング設定

パラメータデフォルト説明
streaming.idle_timeout_secs30終了前の無音秒数
budget.max_cost_usdNone終了前の最大累積コスト
timeout_ms30000全体的なHTTPタイムアウト(syncおよびconversationalのみ)

ストリーミングモードでは、チャンク単位のアイドルタイムアウトが全体的なHTTPタイムアウトに置き換わります。クライアントはグローバルタイムアウトなしで構築されているため、アクティブなデータを持つ長時間実行ストリームが早期に強制終了されることはありません。

イベント

エージェントツールは構造化されたイベントをイベントログに出力します:

イベントタイミング
agent_tool_invokedリモートエージェントへのリクエスト送信時
agent_tool_progressNDJSONチャンクを受信するたび(ストリーミングのみ)
agent_tool_completed最終出力を伴う正常完了時
agent_tool_terminated早期終了時(予算超過またはアイドルタイムアウト)
agent_tool_errorストリーム途中でのネットワークエラー時

各イベントには正確なタイミング記録のための timestamp_ms が含まれます。プログレスイベントには chunk_indexaccumulated_cost_usd が含まれます。

エラーハンドリング

障害動作
ストリーム途中でのネットワークエラーノードがエラーで失敗、部分的な結果は保持される
NDJSON内の不正なJSON{"raw": "..."} としてラップされ、ストリームは継続
非UTF-8データ警告付きでスキップ、ストリームは継続
アイドルタイムアウトノードが失敗、A2Aキャンセルを送信
予算超過ノードが失敗、A2Aキャンセルを送信
エージェントがHTTPエラーを返すノードが即座に失敗

深刻な障害(タイムアウト、ネットワークエラー)はノードを失敗させ、ワークフローが再試行やエラー処理を行えるようにします。予算超過も失敗として扱われます。

プロトコル解決

エージェントURIがプロトコルを決定します:

URIプレフィックスプロトコル
https://A2A(リモートHTTP)
jamjet://ローカル(インプロセス)
その他MCP

3つのモードすべてを使用した完全なワークフローについては、agent-as-toolの例を参照してください。

On this page