Japanese version: IProvider (インターフェース仕様)
IProvider (Interface Specification)
1. Responsibility Boundary
IProvider is the abstraction boundary that normalizes concrete AI service differences and exposes a consistent compute-resource interface to the kernel.
- Role:
- Non-role:
Define shared lifecycle operations for identity, capabilities, availability, initialization/shutdown, and health diagnostics.
Routing decisions belong to IModelVectorRouter; higher-level reasoning orchestration is outside provider scope.
2. Contract 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 Use Cases
UC-03Model vector routing:UC-22Dynamic capacity control and routing:UC-23Multi-provider failover:
GetCapabilities() supplies prerequisite data for candidate selection.
GetHealthAsync() and IsAvailableAsync() feed dynamic weighting and exclusion decisions.
Supports safe fallback when provider availability changes.
4. Governance & Determinism
- Fail-Closed:
- State transparency:
If IsAvailableAsync() fails or InitializeAsync() cannot complete, exclude the provider from execution routes.
GetCapabilities() and GetHealthAsync() should reflect operational reality to preserve audit explainability.
5. Implementation Notes
- Resilience:
- Secret handling:
Retries/circuit breakers are acceptable, but resulting state must remain observable via GetHealthAsync().
Keep credentials internal to implementations and never leak provider-specific secrets through contracts.
Changelog
- v0.0.0 / v0.0.0.0: Initial draft
- v0.0.1 (2026-05-06): Version upgrade aligned with documentation guidelines
architecture/interfaces/provider/IProvider.md