英語版は IProvider.md を参照。
IProvider (インターフェース仕様)
1. 責務の境界 (Responsibility Boundary)
IProvider は、外部AIサービス差異を吸収し、カーネルに一貫した計算資源インターフェースを提供する抽象境界です。
- 役割:
- 非役割:
プロバイダー識別、能力提示、可用性確認、初期化/停止、ヘルス診断の共通ライフサイクルを定義します。
ルーティング決定は IModelVectorRouter、上位推論ロジックはオーケストレーション側責務です。
2. 契約シグネチャ (Signature)
namespace AIKernel.Abstractions.Providers;\n\npublic interface IProvider\n{\n string ProviderId { get; }\n string Name { get; }\n string Version { get; }\n IProviderCapabilities GetCapabilities();\n Task<bool> IsAvailableAsync();\n Task InitializeAsync();\n Task ShutdownAsync();\n Task<ProviderHealthStatus> GetHealthAsync();\n}
3. 関連ユースケース (Related UCs)
UC-03モデルベクトルルーティング:UC-22動的キャパシティ制御とモデルルーティング:UC-23マルチプロバイダー切替・フェイルオーバー:
GetCapabilities() が候補選定の前提データを提供します。
GetHealthAsync() / IsAvailableAsync() が動的重み付けや候補除外に寄与します。
可用性変動時の安全な切替運用を支えます。
4. 統治上の制約 (Governance & Determinism)
- Fail-Closed:
- 状態透過性:
IsAvailableAsync() 失敗や InitializeAsync() 異常時は、当該プロバイダーを実行経路から除外します。
GetCapabilities() と GetHealthAsync() は実運用状態を反映し、監査説明可能性を担保する必要があります。
5. 実装時の注意 (Notes)
- レジリエンス:
- 認証秘匿:
リトライやサーキットブレーカを導入する場合でも、状態を GetHealthAsync() で観測可能にしてください。
APIキー等の機密情報は実装内部で保護し、契約シグネチャへ露出させないでください。
変更履歴
- v0.0.0 / v0.0.0.0: 初期ドラフト
- v0.0.1 (2026-05-06): ドキュメント規約に基づくバージョン更新
Source:
architecture/interfaces/provider/IProvider-jp.md