概要
Shannonの内部アーキテクチャは、gRPC(HTTP/2 + Protocol Buffers)を使用して高性能なサービス間通信を実現しています。このドキュメントでは、5つのサービスと39のRPCメソッドに関する完全なProtocol Buffer定義を提供します。公開APIと内部API: gRPCサービスは内部用であり、公開SDKでは利用できません。アプリケーション統合には、Gateway REST API(
http://localhost:8080/api/v1/*)またはPython SDK(ShannonClient(base_url=...))を使用してください。- OrchestratorService(20 RPC) - タスクオーケストレーション、ワークフロー管理、スケジューリング
- StreamingService(1 RPC) - リアルタイムイベントストリーミング
- AgentService(6 RPC) - エージェント実行とツール管理
- LLMService(5 RPC) - LLMプロバイダーゲートウェイ
- SessionService(7 RPC) - マルチターン会話管理
共通タイプ
すべてのサービスで使用される共有タイプ。ExecutionMode
SIMPLE: 直接ツール呼び出しまたはキャッシュ検索(最速)STANDARD: 単一エージェントによるLLM駆動の実行(バランスが取れている)COMPLEX: 並列実行を伴うマルチエージェントDAG(最も能力が高い)
ModelTier
- 小: $0.001-0.002 / 1Kトークン
- 中: $0.01-0.03 / 1Kトークン
- 大: $0.03-0.075 / 1Kトークン
StatusCode
TaskMetadata
TokenUsage
ExecutionMetrics
OrchestratorService
タスクオーケストレーションとワークフロー管理サービス。サービス定義
SubmitTask
新しいタスクを実行のために提出します。 リクエスト:GetTaskStatus
タスクの現在のステータスと結果を取得します。 リクエスト:CancelTask
実行中のタスクをキャンセルします。 リクエスト:ListTasks
タスクをリスト表示し、オプションでフィルタリングします。 リクエスト:GetSessionContext
セッションのコンテキストと履歴を取得します。 リクエスト:ListTemplates
利用可能なタスクテンプレートをリスト表示します。 リクエスト:ApproveTask
人間の承認が必要なタスクを承認または拒否します。 リクエスト:GetPendingApprovals
保留中の承認リクエストをリスト表示します。 リクエスト:StreamingService
リアルタイムイベントストリーミングサービス。サービス定義
StreamTaskExecution
タスクのリアルタイムイベントをストリームします(サーバーストリーミングRPC)。 リクエスト:AgentService
エージェント実行およびツール管理サービス。サービス定義
ExecuteTask
単一エージェントでタスクを実行します(単一RPC)。 リクエスト:StreamExecuteTask
ストリーミング更新でタスクを実行します(サーバーストリーミングRPC)。 リクエスト:ExecuteTaskと同じ
レスポンス(ストリーム):
GetCapabilities
エージェントの機能を取得します。 リクエスト:HealthCheck
エージェントサービスの健康状態を確認します。 リクエスト:DiscoverTools
クエリまたはカテゴリによって利用可能なツールを発見します。 リクエスト:GetToolCapability
特定のツールの詳細な機能を取得します。 リクエスト:LLMService
LLMプロバイダーゲートウェイサービス。サービス定義
GenerateCompletion
LLMの補完を生成します(単一RPC)。 リクエスト:StreamCompletion
ストリーミング LLM 完成を生成します(サーバーストリーミング RPC)。 リクエスト:GenerateCompletion と同様
レスポンス (ストリーム):
EmbedText
テキスト埋め込みを生成します。 リクエスト:AnalyzeComplexity
クエリの複雑さを分析し、実行モードを推奨します。 リクエスト:ListModels
利用可能な LLM モデルをリストします。 リクエスト:SessionService
マルチターン会話管理サービス。サービス定義
CreateSession
新しい会話セッションを作成します。 リクエスト:GetSession
セッションの詳細を取得します。 リクエスト:UpdateSession
セッションのコンテキストを更新するか、TTLを延長します。 リクエスト:DeleteSession
セッションを削除します。 リクエスト:ListSessions
ユーザーのセッションをリストします。 リクエスト:AddMessage
セッション履歴にメッセージを追加します。 リクエスト:ClearHistory
セッションメッセージ履歴をクリアします。 リクエスト:エラーハンドリング
ステータスコード
すべてのレスポンスにはStatusCode が含まれます:
STATUS_CODE_OK (1)- 成功STATUS_CODE_ERROR (2)- 一般的なエラーSTATUS_CODE_TIMEOUT (3)- 操作タイムアウトSTATUS_CODE_RATE_LIMITED (4)- レート制限を超過STATUS_CODE_BUDGET_EXCEEDED (5)- トークン/コスト予算を超過
gRPC ステータスコード
使用される標準 gRPC ステータスコード:OK (0)- 成功CANCELLED (1)- リクエストがキャンセルされましたINVALID_ARGUMENT (3)- 無効なリクエストパラメータDEADLINE_EXCEEDED (4)- タイムアウトNOT_FOUND (5)- リソースが見つかりませんALREADY_EXISTS (6)- リソースはすでに存在しますPERMISSION_DENIED (7)- 権限が不十分ですRESOURCE_EXHAUSTED (8)- レート制限/クォータを超過UNAUTHENTICATED (16)- 認証情報が欠落または無効ですUNAVAILABLE (14)- サービスが利用できませんINTERNAL (13)- 内部サーバーエラー
エラーハンドリングの例 (Python)
サービスエンドポイント
Gateway REST API はポート 8080 でも利用可能です (gRPC の HTTP/REST ラッパー)。
HTTP エンドポイントについては REST API リファレンス を参照してください。
コード生成
.proto ファイルからクライアントコードを生成します:Python
Go
TypeScript
関連トピック
REST API
HTTP REST エンドポイント
Event Types
ストリーミングイベントカタログ
Python SDK
Python クライアントライブラリ
Database Schema
データ永続化