メインコンテンツへスキップ

概要

Shannonは、タスク実行の可視性を提供するために、Server-Sent Events (SSE)を介してリアルタイムイベントを発信します。この文書では、プラットフォームによって実際に発信される35種類のイベント、その構造、および発生タイミングをカタログ化しています。 イベントは以下を提供します:
  • リアルタイムの進捗 - タスク実行をリアルタイムで追跡
  • デバッグの洞察 - LLMプロンプト、ツール呼び出し、エージェントの推論
  • コスト監視 - トークン使用量とコストをリアルタイムで追跡
  • マルチエージェントの調整 - チーム形成とコラボレーションの観察
  • エラー回復 - エラー処理と回復の試みを監視

イベント構造

すべてのイベントはこの基本構造に従います:

基本フィールド


イベントカテゴリ

イベントは論理的なカテゴリに整理されています:
  1. ワークフローイベント - タスクライフサイクル
  2. エージェントイベント - エージェントの実行
  3. ツールイベント - ツールの呼び出し
  4. パターンイベント - 認知パターンの実行
  5. チームイベント - マルチエージェントの調整
  6. LLMイベント - 言語モデルとのインタラクション
  7. 進捗イベント - タスクの進捗とステータス
  8. システムイベント - エラーとシステム状態

イベントタイプのクイックリファレンス

Shannonによって発信されるイベントタイプの権威あるリスト: 合計: 35種類のイベントタイプ 注:WORKFLOW_FAILEDTASK_COMPLETEDTOOL_COMPLETEDTOOL_FAILED、およびBUDGET_UPDATEなどのイベントはストリーミングAPIによって発信されません。失敗はERROR_OCCURREDを介して表示され、完了はWORKFLOW_COMPLETEDで示されます。STREAM_ENDは、ストリーミングが終了した際のライフサイクル信号として発信されます。

ワークフローイベント

全体のタスクワークフローに関連するイベント。

WORKFLOW_STARTED

発信タイミング: タスクの実行が開始されたとき データ:
フィールド:
  • query: 元のタスククエリ
  • mode: 実行モード (SIMPLE, STANDARD, COMPLEX)
  • session_id: セッション識別子
  • estimated_complexity: 複雑さスコア (0.0-1.0)

WORKFLOW_COMPLETED

発生: タスクが正常に完了したとき データ:
フィールド:
  • result: 最終タスク結果
  • duration_ms: 総実行時間
  • total_tokens: 累積トークン使用量
  • total_cost_usd: 総コスト
  • agents_used: 呼び出されたエージェントの数
  • tools_invoked: 呼び出されたツールの数

選択された例

AGENT_THINKING

TOOL_INVOKED / TOOL_OBSERVATION

LLM_OUTPUT

ERROR_OCCURRED

APPROVAL_REQUESTED

一般的なエラータイプ:
  • BUDGET_EXCEEDED - コスト/トークン制限に達した
  • TIMEOUT - 実行タイムアウト
  • TOOL_EXECUTION_FAILED - ツールエラー
  • LLM_ERROR - LLMプロバイダーエラー
  • INVALID_INPUT - 不正なリクエスト

エージェントイベント

個々のエージェント実行に関連するイベント。

AGENT_STARTED

発生: エージェントが処理を開始したとき データ:

AGENT_THINKING

発生: エージェントが推論/処理中(最も頻繁なイベント) データ:
使用法: ユーザーへの進捗インジケーターとして表示

AGENT_COMPLETED

発生: エージェントがサブタスクを完了したとき データ:

AGENT_FAILED

発生: エージェントがエラーに遭遇したとき データ:

ツールイベント

ツール呼び出しに関連するイベント。

TOOL_INVOKED

発生: ツールが呼び出されたとき データ:

TOOL_OBSERVATION

発生: エージェントがツールの結果を観察したとき データ:
フィールド:
  • tool_name: 呼び出されたツールの名前
  • result: ツール出力(構造化データまたはテキスト)
  • duration_ms: ツール実行時間
  • truncated: 結果が切り捨てられたかどうか(2000文字を超える場合はtrue)
注意: 大きなツール結果は、ストリーミング接続を圧倒しないようにUTF-8安全で2000文字に自動的に切り捨てられます。truncatedフィールドは、これが発生したかどうかを示します。完全な結果は常にタスク完了レスポンスで利用可能です。

パターンイベント

パターン選択および分解イベントは公開ストリーミングスキーマの一部ではなく、簡潔さのために省略されています。

チームイベント

複数のエージェントのチーム調整と管理。

TEAM_RECRUITED

発生: エージェントのチームが実行のために編成されたとき データ:

TEAM_RETIRED

発生: タスク完了後にチームが解散されたとき データ:

TEAM_STATUS

発生: マルチエージェントチームの調整に関する定期的な更新 データ:

DEPENDENCY_SATISFIED

発生: タスクの依存関係が解決され、実行が進められるとき データ:

メッセージイベント

エージェント間の通信。

MESSAGE_SENT

発生: エージェントが別のエージェントにメッセージを送信 データ:

MESSAGE_RECEIVED

発生: エージェントがメッセージを受信 データ:

LLMイベント

デバッグと監視のための言語モデルのインタラクションイベント。

LLM_PROMPT

発生: プロンプトがLLMに送信されたとき(プライバシーのためにサニタイズ済み) データ:

LLM_PARTIAL

発生: ストリーミング中のLLM出力のインクリメンタルチャンク データ:

LLM_OUTPUT

発生: ステップの最終LLM出力 データ:
フィールド:
  • output: 完全なLLM応答テキスト
  • model: 使用されたモデル(正式名称)
  • provider: LLMプロバイダー(openai, anthropic, google, xaiなど)
  • usage: OpenAI互換の使用オブジェクトを含む:
    • total_tokens: 総トークン(入力 + 出力)
    • input_tokens: 入力/プロンプトトークン
    • output_tokens: 生成されたトークン
  • cost_usd: USDでの推定コスト
  • duration_ms: リクエストの所要時間(ミリ秒)
注意: 使用メタデータはOpenAIの標準フォーマットに従い、OpenAI、Anthropic、Google、Groq、xAI、OpenAI互換のエンドポイントを含むすべてのプロバイダーで利用可能です。usageオブジェクトの構造は、シームレスな統合のためにOpenAIのストリーミング応答フォーマットに一致します。OpenAI SDKでShannonを使用する方法の詳細については、OpenAI互換APIを参照してください。

TOOL_OBSERVATION

発生: エージェントによるツール結果の観察 データ:

進捗イベント

ユーザーのフィードバックのためのタスクの進捗とステータスの更新。

PROGRESS

発生: 実行中の一般的な進捗更新 データ:

DATA_PROCESSING

発生: エージェントがデータを処理または分析中 データ:

WAITING

発生: エージェントがリソースまたは応答を待機中 データ:

システムイベント

システムレベルのイベントとエラー。

ERROR_OCCURRED

発生: 実行中のシステムエラー データ:

ERROR_RECOVERY

発生: システムがエラーから回復中 データ:

APPROVAL_REQUESTED

発生: 続行するために人間の承認が必要 データ:

APPROVAL_DECISION

発生: 人間が承認の決定を下した データ:
決定値:
  • approved - アクションが続行可能
  • denied - アクションがブロックされました
  • timeout - タイムアウト期間内に決定が下されなかった

WORKSPACE_UPDATED

発生: 作業メモリ/コンテキストが更新されました データ:

ROLE_ASSIGNED

発生: 実行中にエージェントの役割が割り当てられました データ:

STATUS_UPDATE

発生: タスクまたはワークフローの一般的なステータス更新 データ:

THREAD_MESSAGE_DELTA

発生: ストリーミングレスポンス生成中のインクリメンタルコンテンツチャンク データ:

THREAD_MESSAGE_COMPLETED

発生: 完全なメッセージコンテンツが配信された データ:

BUDGET_THRESHOLD

発生: トークン予算が警告閾値に達しました(通常は制限の80%) データ:
フィールド:
  • usage_percent: 現在の使用率(例: 85.0)
  • threshold_percent: 警告閾値のパーセンテージ(例: 80.0)
  • tokens_used: これまでに消費されたトークンの累計
  • tokens_budget: タスクに許可される最大トークン数
  • level: 重大度レベル("warning"
  • budget_type: イベントをトリガーした予算タイプ("task"
使用法: このイベントを監視して、ハード予算制限に達する前にユーザーに警告し、優雅な劣化や早期終了の決定を可能にします。

イベントの順序

イベントは厳密に順序付けられています(シーケンス番号 seq による):
プロパティ:
  • シーケンス番号は単調増加
  • シーケンスにギャップなし(1からNまでのすべての番号)
  • 同じワークフローからのイベントは常に正しく順序付けられています

一般的なイベントフロー(簡略化)

イベントの永続性

イベントは以下に保存されます:
  • PostgreSQL: 永続的なイベントログ
  • Redis: 最近のイベント(ホットキャッシュ)
  • リアルタイム: SSEストリーム
過去のイベントの取得:

イベントの信頼性と保証

順序保証

Shannonは単一のワークフロー内で厳密な順序を提供します:
  • イベントはシーケンシャルに番号付けされています(seqフィールド)
  • シーケンス番号にギャップなし(1, 2, 3, …)
  • 同じワークフローからのイベントは常に順序通りに到着します
  • 異なるワークフローからのイベントは交互に到着する可能性があります

配信保証

  • 少なくとも1回の配信: イベントは複数回配信される可能性があります(重複排除には seq を使用)
  • イベントの永続性: すべてのイベントはPostgreSQLの event_logs テーブルに保存されます
  • ホットキャッシュ: 最近のイベントはRedisにキャッシュされ、迅速に取得可能
  • 過去のアクセス: REST APIを介して過去のイベントをクエリ可能

ストリーム再接続

SSE接続が切断された場合:

イベント保持

PostgreSQLの選択的永続性: データベースのパフォーマンスを最適化するために、重要なイベントのみがPostgreSQLに永続化されます。これには、WORKFLOW_COMPLETEDAGENT_COMPLETEDTOOL_INVOKEDLLM_OUTPUT、および ERROR_OCCURRED が含まれます。LLM_PARTIALHEARTBEAT、および AGENT_THINKING のような一時的なイベントはデータベースへの書き込みから除外され(書き込み負荷を約92%削減)、リアルタイムのSSEストリーミングとRedisキャッシュを介して完全に利用可能です。 イベントストレージの詳細については、Database Schemaを参照してください。

関連トピック

Streaming API

SSEおよびWebSocketストリーミング

Python SDK Streaming

SDKストリーミングガイド

List Tasks

タスク履歴の表示

Troubleshooting

ストリーミングの問題をデバッグ