主な機能
V2 エラーコード&フィーチャーフラグ
13種類のV2標準エラーコードでプロバイダー間の一貫したエラー処理。フィーチャーゲートモジュール:7つのオプション機能と完全メタ機能で最小またはフルビルドをサポート。
オペレータベースパイプライン
ストリーミング応答はコンポーザブルなオペレータを経由:Decoder → Selector → Accumulator → FanOut → EventMapper。各ステージはプロトコルで設定。
プロトコルローディング
ローカルファイル、環境変数、または GitHub フォールバックからプロバイダーマニフェストを読み込み。ファイル監視によるホットリロードをサポート。設定更新に再起動不要。
レジリエンスパターン
内蔵サーキットブレーカー、トークンバケットレートリミッター、指数バックオフリトライ、最大同時実行バックプレッシャー。すべて環境変数で設定可能。
埋め込み&ベクトル
EmbeddingClient にベクトル演算 — コサイン類似度、ユークリッド距離、ドット積。セマンティック検索と RAG アプリケーションをネイティブに構築。
キャッシュ&バッチ
TTL付き応答キャッシュ(メモリバックエンド)。設定可能な並行処理、タイムアウト、複数処理戦略でのバッチ実行。
プラグインシステム
フックとミドルウェアチェーンを備えた拡張可能なプラグインアーキテクチャ。コアコードを変更せずにカスタム動作を追加。コンテンツフィルタリングと PII 検出用ガードレール。
シンプルで統一された API
同じコードで 35以上のプロバイダーすべてに動作。モデル識別子を変えるだけ — プロトコルマニフェストがエンドポイント、認証、パラメータマッピング、ストリーミング形式をすべて処理。
ビルダーパターンでリクエスト構築のフルエント API を提供。ストリーム結果は、基盤プロバイダーに関係なく統一された StreamingEvent 型で到着。
use ai_lib::{AiClient, Message, StreamingEvent};
// Works with ANY provider — protocol-driven
let client = AiClient::new(
"anthropic/claude-3-5-sonnet"
).await?;
// Builder pattern for chat requests
let mut stream = client.chat()
.user("Explain AI-Protocol")
.temperature(0.7)
.max_tokens(1000)
.stream()
.execute_stream()
.await?;
// Unified streaming events
while let Some(event) = stream.next().await {
match event? {
StreamingEvent::ContentDelta { text, .. }
=> print!("{text}"),
StreamingEvent::StreamEnd { stats, .. }
=> println!("\nTokens: {}",
stats.total_tokens),
_ => {} // ToolCall, Metadata, etc.
}
} 内部アーキテクチャ
ユーザー向け API から HTTP トランスポートまでの5層。ストリーミングパイプラインがシステムの中心。
モジュール概要
client/ + error_code/
AiClient、AiClientBuilder、ChatRequestBuilder、実行ロジック、ポリシーエンジン、プリフライトチェック、エラー分類、CallStats、CancelHandle。
protocol/
ProtocolLoader(ローカル/URL/GitHub)、JSON Schema バリデーター、ProtocolManifest 構造、UnifiedRequest コンパイル、設定型。
pipeline/
Decoder(SSE、JSON Lines)、Selector(JSONPath)、Accumulator(ツール呼び出し)、FanOut(マルチ候補)、EventMapper(統一イベント)、Retry と Fallback オペレータ。
transport/
HttpTransport(reqwest)、API キー解決(keyring + env vars)、プロキシ/タイムアウト設定、ミドルウェアサポート。
resilience/
サーキットブレーカー(オープン/ハーフオープン/クローズ)、トークンバケットレートリミッター、最大同時実行セマフォバックプレッシャー。
embeddings/
EmbeddingClient、EmbeddingClientBuilder、ベクトル演算(コサイン類似度、ユークリッド距離、ドット積)。
cache/ + batch/
TTL付き CacheManager(MemoryCache、NullCache)。並行制御と複数戦略を備えた BatchCollector と BatchExecutor。
plugins/ + guardrails/ + structured/
Plugin trait、PluginRegistry、HookManager、ミドルウェアチェーン。キーワード/パターンフィルターと PII 検出のガードレール。