コンテンツにスキップ

エコシステムアーキテクチャ

AI-Lib エコシステムは、各レイヤーが明確な責務を持つクリーンな 3 層アーキテクチャで構築されています。現在のバージョン:AI-Protocol v0.8.3ai-lib-rust v0.9.3ai-lib-python v0.8.3ai-lib-ts v0.5.3ai-lib-go v0.0.1ai-protocol-mock v0.1.11

1. プロトコルレイヤー — AI-Protocol

Section titled “1. プロトコルレイヤー — AI-Protocol”

仕様レイヤーです。YAML マニフェストで以下を定義します:

  • プロバイダーマニフェストproviders/*.yaml)— 37 のプロバイダーそれぞれのエンドポイント、認証、パラメータマッピング、ストリーミングデコーダー、エラー分類
  • モデルレジストリmodels/*.yaml)— コンテキストウィンドウ、機能、価格を持つモデルインスタンス
  • コア仕様spec.yaml)— 標準パラメータ、イベント、エラー型、リトライポリシー
  • スキーマschemas/)— すべての設定の JSON Schema 検証

プロトコルレイヤーは言語非依存です。あらゆる言語のランタイムから消費されます。

2. ランタイムレイヤー — Rust・Python・TypeScript・Go SDK

Section titled “2. ランタイムレイヤー — Rust・Python・TypeScript・Go SDK”

実行レイヤーです。ランタイムは以下を実装します:

  • プロトコル読み込み — ローカルファイル、環境変数、GitHub からマニフェストを読み取り検証
  • リクエストコンパイル — 統合リクエストをプロバイダー固有の HTTP 呼び出しに変換
  • ストリーミングパイプライン — プロバイダーレスポンスをデコード、選択、蓄積、統一イベントにマッピング
  • 耐障害性 — サーキットブレーカー、レート制限、リトライ、フォールバック
  • 拡張機能 — 埋め込み、キャッシュ、バッチ処理、プラグイン

3 つのランタイムは同じプロトコル駆動アーキテクチャを共有します:

コンセプトRustPythonTypeScript
クライアントAiClientAiClientAiClient
ビルダーAiClientBuilderAiClientBuilderAiClientBuilder
リクエストChatRequestBuilderChatRequestBuilderChatBuilder
イベントStreamingEvent enumStreamingEvent class統一ストリーミングイベント
トランスポートreqwest (tokio)httpx (asyncio)fetch (Node.js)
Rust structsPydantic v2 modelsTypeScript interfaces

3. アプリケーションレイヤー — あなたのコード

Section titled “3. アプリケーションレイヤー — あなたのコード”

アプリケーションは統合ランタイム API を使用します。単一の AiClient インターフェースがすべてのプロバイダーで動作します:

Your App → AiClient → Protocol Manifest → Provider API

モデル識別子を 1 つ変更するだけでプロバイダーを切り替えられます。コード変更は不要です。

client.chat().user("Hello").stream() を呼び出すと何が起こるか:

  1. AiClient がリクエストを受け取る
  2. ProtocolLoader がプロバイダーマニフェストを提供する
  3. リクエストコンパイラ が標準パラメータをプロバイダー固有の JSON にマッピングする
  4. トランスポート が正しい認証/ヘッダーで HTTP リクエストを送信する
  5. パイプライン がストリーミングレスポンスを処理する:
    • Decoder がバイト → JSON フレーム(SSE または NDJSON)に変換
    • Selector が JSONPath で関連フレームをフィルタリング
    • Accumulator が部分的なツール呼び出しを組み立てる
    • EventMapper がフレーム → 統一 StreamingEvent に変換
  6. アプリケーション が統一イベントをイテレートする

3 つのランタイムは次の順序でプロトコルマニフェストを検索します:

  1. カスタムパス — ビルダーで明示的に設定
  2. 環境変数AI_PROTOCOL_DIR または AI_PROTOCOL_PATH
  3. 相対パス — 作業ディレクトリからの ai-protocol/ または ../ai-protocol/
  4. GitHub フォールバックhiddenpath/ai-protocol リポジトリからダウンロード

つまり、ローカルセットアップなしで開発を開始できます。ランタイムが GitHub からマニフェストを自動的に取得します。

V2 プロトコルの進化とガバナンス強化

Section titled “V2 プロトコルの進化とガバナンス強化”

V2 基盤は v0.8.2 で生成系フルチェーンの運用ガバナンスまで拡張されました:

  • L1 コアプロトコル — メッセージ形式、標準エラーコード(E1001–E9999)、バージョン宣言
  • L2 機能拡張 — ストリーミング、ビジョン、ツール、MCP、Computer Use、マルチモーダル
  • L3 環境プロファイル — API キー、エンドポイント、リトライポリシー — 環境固有の設定

実行ガバナンス用のゲートスクリプトが追加されています:

  • npm run drift:check
  • npm run gate:manifest-consumption
  • npm run gate:compliance-matrix
  • npm run gate:fullchain
  • npm run release:gate

さらに --report-only により段階的な非ブロッキング導入が可能です。

ai-protocol-mock の動画非同期ライフサイクルは、終端状態 succeeded / failed / cancelled をサポートし、X-Mock-Video-Terminal または terminal_state で制御できます。

Rust/Python/TypeScript の compliance 行列は、protocol loading、error classification、retry、message、stream、request を横断的に検証します。

AI-Protocol と MCP(Model Context Protocol)は補完的です:

  • MCP は高レベルの関心事 — ツール登録、コンテキスト管理、エージェント調整
  • AI-Protocol は低レベルの関心事 — API 正規化、ストリーミング形式変換、エラー分類

これらは異なるレイヤーで動作し、併用できます。