|
| 1 | +# AIKernel.Providers |
| 2 | + |
| 3 | +[English README](README.md) |
| 4 | + |
| 5 | +AIKernel.Providers は、AIKernel.NET 向けの公式拡張 Provider ワークスペースです。 |
| 6 | + |
| 7 | +AIKernel.Core は contract、決定論的 runtime boundary、VFS、DSL、標準 OS-level |
| 8 | +Provider を所有します。AIKernel.Tools は instrumentation、replay、inspection、 |
| 9 | +canonical formatting を所有します。AIKernel.Providers は、AIKernel capability |
| 10 | +contract を具体的な service、local runtime、native module、または移管済み |
| 11 | +Provider 実装へ接続する外部 Provider driver を所有します。 |
| 12 | + |
| 13 | +これにより、Provider 固有の endpoint、credential、runtime、native driver |
| 14 | +logic を Core と Tools から分離します。 |
| 15 | + |
| 16 | +AIOS SDK において、AIKernel.Providers は driver model layer です。具体的な |
| 17 | +OS-style driver、外部 model Provider、local runtime、標準 host service を組み合わせ、 |
| 18 | +Provider 固有の logic を kernel runtime に戻さずに独自の AIOS を構築できます。 |
| 19 | + |
| 20 | +AIKernel には、公式 AIOS ディストリビューションである **AIKernel.Monolith** もあります。 |
| 21 | +Monolith は 0.1.x 系の安定化後に、公式 Provider driver を含む SDK layer を |
| 22 | +統合する標準 AIOS として開発が開始されています。 |
| 23 | + |
| 24 | +## リポジトリの役割 |
| 25 | + |
| 26 | +AIKernel.Providers は、AIKernel Semantic Runtime 向けの公式拡張 Provider を |
| 27 | +収容します。 |
| 28 | + |
| 29 | +この repository の Provider は、AIKernel.NET package が定義する Provider |
| 30 | +contract を実装し、CLI、host application、Python wrapper から外部 Provider |
| 31 | +module として読み込まれることを想定しています。AIKernel.Core と |
| 32 | +AIKernel.Abstractions が定義する contract boundary を維持しながら、capability |
| 33 | +descriptor と invocation surface を公開します。 |
| 34 | + |
| 35 | +AIKernel.Providers は、2026-06-10 に予定している 0.1.1 公開に参加します。 |
| 36 | +`0.1.1` はこの repository の初版公開です。local validation で development build |
| 37 | +を使う場合がありますが、利用者向けの package history は公開 release のみを単位とし、 |
| 38 | +開発中の変更は次の公開 release note に統合して記載します。 |
| 39 | + |
| 40 | +リリースノート: |
| 41 | + |
| 42 | +- [English](RELEASE_NOTES.md) |
| 43 | +- [日本語](RELEASE_NOTES-ja.md) |
| 44 | + |
| 45 | +## クイックスタート |
| 46 | + |
| 47 | +host が必要とする Provider family だけを導入してください。live endpoint、 |
| 48 | +credential、local model runtime、native driver を有効化する前に、まず descriptor と |
| 49 | +manifest の検証から始めます。 |
| 50 | + |
| 51 | +```bash |
| 52 | +dotnet add package AIKernel.Providers.Standard --version 0.1.1 |
| 53 | +dotnet add package AIKernel.Providers.ChatOpenAI --version 0.1.1 |
| 54 | +dotnet add package AIKernel.Providers.MicrosoftAI --version 0.1.1 |
| 55 | +``` |
| 56 | + |
| 57 | +Python host: |
| 58 | + |
| 59 | +```bash |
| 60 | +pip install aikernel-providers |
| 61 | +``` |
| 62 | + |
| 63 | +OS driver surface が必要な場合は `AIKernel.Providers.Standard` を使用します。LLM、 |
| 64 | +chat、pipeline、CUDA、MicrosoftAI の Provider package は、その capability が host に |
| 65 | +必要な場合だけ追加してください。 |
| 66 | + |
| 67 | +## どの Provider を選ぶべきか |
| 68 | + |
| 69 | +- ローカルだけで model runtime を動かしたい -> `AIKernel.Providers.LocalLlm` |
| 70 | +- OpenAI-compatible API を使いたい -> `AIKernel.Providers.ChatOpenAI` |
| 71 | +- Microsoft.Extensions.AI / Azure AI 系 integration を使いたい -> `AIKernel.Providers.MicrosoftAI` |
| 72 | +- 履歴ベースの軽量 chat surface を使いたい -> `AIKernel.Providers.ChatHistory` |
| 73 | + |
| 74 | +file system、logging、event bus、network、process supervisor、scheduler、 |
| 75 | +profiler、CPU compute などの OS driver surface が必要な host では、 |
| 76 | +これらに加えて `AIKernel.Providers.Standard` を使用してください。 |
| 77 | + |
| 78 | +## Provider 構成 |
| 79 | + |
| 80 | +Provider project は `src/` 配下で category ごとに整理します。 |
| 81 | + |
| 82 | +- `src/Llm` - LLM / model hosting 系 Provider。 |
| 83 | +- `src/Chat` - chat domain の storage / history 系 Provider。 |
| 84 | +- `src/Compute` - native / accelerator compute 系 Provider。 |
| 85 | +- `src/Pipeline` - semantic pipeline compiler / pipeline orchestration 系 Provider。 |
| 86 | +- `src/Standard` - OS 標準 driver Provider。 |
| 87 | + |
| 88 | +- `ChatOpenAIProvider` - OpenAI 互換 ChatCompletion、Embedding、Moderation |
| 89 | + 向け Provider manifest surface です。Tools から分離した公式外部 OpenAI |
| 90 | + Provider セットです。 |
| 91 | +- `ChatHistoryProvider` - 旧 RomStorage Provider の役割から抽出された、 |
| 92 | + deterministic chat history Provider です。 |
| 93 | +- `CudaComputeProvider` - CUDA 13 系 native capability manifest を含む、 |
| 94 | + native CUDA compute module 向けの抽象 Provider surface です。 |
| 95 | +- `DynamicPipelineCompilerProvider` - `aik install provider dynamic-pipeline` |
| 96 | + のような CLI-driven install を想定した dynamic semantic pipeline compiler |
| 97 | + Provider です。 |
| 98 | +- `LocalLlmProvider` - Ollama、llama.cpp、vLLM などの local LLM runtime |
| 99 | + 向け Provider です。 |
| 100 | +- `AIKernel.Providers.Standard` - CPU compute、memory / physical / ZIP file |
| 101 | + system、console / file logging、process supervision、event bus、network、 |
| 102 | + scheduler、profiler を含む OS 標準 driver Provider package です。 |
| 103 | +- `AIKernel.Providers.MicrosoftAI` - Microsoft.Extensions.AI を利用した |
| 104 | + Provider 実装です。これは AIKernel.Core から AIKernel.Providers 管理へ |
| 105 | + 移管されました。今後はこの repository が packaging、test、documentation、 |
| 106 | + Python wrapper への同梱を所有します。 |
| 107 | + |
| 108 | +## Provider Manifest |
| 109 | + |
| 110 | +各外部 Provider は、host の provider directory へコピーして動的ロードできる |
| 111 | +JSON manifest を持ちます。 |
| 112 | + |
| 113 | +- `src/Chat/ChatOpenAIProvider/openai.provider.json` |
| 114 | +- `src/Chat/ChatHistoryProvider/chat-history.provider.json` |
| 115 | +- `src/Compute/CudaComputeProvider/cuda.provider.json` |
| 116 | +- `src/Pipeline/DynamicPipelineCompilerProvider/dynamic-pipeline.provider.json` |
| 117 | +- `src/Llm/LocalLlmProvider/local-llm.provider.json` |
| 118 | +- `src/Standard/AIKernel.Providers.Standard/standard.provider.json` |
| 119 | + |
| 120 | +manifest には以下を記録します。 |
| 121 | + |
| 122 | +- `providerId` |
| 123 | +- Provider 名と version |
| 124 | +- managed assembly 名 |
| 125 | +- 公開 capability |
| 126 | +- host と CLI tooling に必要な provider metadata |
| 127 | +- CLI install / list / load 用の hint |
| 128 | + |
| 129 | +MicrosoftAIProvider は managed package と dependency-injection extension surface |
| 130 | +として利用されます。現時点では個別の manifest file は同梱しません。 |
| 131 | + |
| 132 | +## Python Package |
| 133 | + |
| 134 | +`aikernel-providers` は、公式拡張 Provider セットの Python wrapper package です。 |
| 135 | + |
| 136 | +C# Provider contract boundary を Python object と helper function として公開します。 |
| 137 | + |
| 138 | +- provider capability descriptor |
| 139 | +- manifest と managed assembly discovery |
| 140 | +- pythonnet runtime loading |
| 141 | +- provider-specific wrapper module |
| 142 | +- 同梱 provider assembly と manifest JSON file |
| 143 | + |
| 144 | +Python package は Provider behavior を再実装しません。C# assembly を |
| 145 | +`aikernel_providers/native` に同梱し、managed contract surface へ委譲します。 |
| 146 | + |
| 147 | +関連ドキュメント: |
| 148 | + |
| 149 | +- [Python provider wrapper](docs/python/index.md) |
| 150 | +- [Python provider wrapper 日本語](docs/python/index-ja.md) |
| 151 | + |
| 152 | +## 依存関係の方向 |
| 153 | + |
| 154 | +想定する依存方向は以下です。 |
| 155 | + |
| 156 | +- AIKernel.NET が contract、DTO、enum、Core runtime boundary を定義します。 |
| 157 | +- AIKernel.Providers が公式外部 Provider driver を実装します。 |
| 158 | +- AIKernel.Tools は、外部 capability が必要な tool で Provider を package として |
| 159 | + 参照します。 |
| 160 | +- Core と Tools は、Provider 固有の endpoint、HTTP、credential、native-driver |
| 161 | + logic を所有しません。 |
| 162 | + |
| 163 | +ルール: |
| 164 | + |
| 165 | +- Provider は AIKernel.NET contract package と AIKernel.Core に依存できます。 |
| 166 | +- Provider は AIKernel.Tools に依存してはいけません。 |
| 167 | +- Tools は Provider 固有の capability descriptor を含めてはいけません。 |
| 168 | +- Core は外部 Provider に依存してはいけません。 |
| 169 | + |
| 170 | +## ビルド |
| 171 | + |
| 172 | +```powershell |
| 173 | +dotnet build AIKernel.Providers.slnx |
| 174 | +dotnet test AIKernel.Providers.slnx |
| 175 | +``` |
| 176 | + |
| 177 | +共通 package metadata は `Directory.Build.props` に集約されています。 |
| 178 | + |
| 179 | +## パッケージインストール |
| 180 | + |
| 181 | +.NET host では、公開後に NuGet package を使用します。 |
| 182 | + |
| 183 | +```bash |
| 184 | +dotnet add package AIKernel.Providers.ChatOpenAI --version 0.1.1 |
| 185 | +dotnet add package AIKernel.Providers.ChatHistory --version 0.1.1 |
| 186 | +dotnet add package AIKernel.Providers.CudaCompute --version 0.1.1 |
| 187 | +dotnet add package AIKernel.Providers.DynamicPipelineCompiler --version 0.1.1 |
| 188 | +dotnet add package AIKernel.Providers.LocalLlm --version 0.1.1 |
| 189 | +dotnet add package AIKernel.Providers.MicrosoftAI --version 0.1.1 |
| 190 | +``` |
| 191 | + |
| 192 | +Python host では PyPI package を使用します。 |
| 193 | + |
| 194 | +```bash |
| 195 | +pip install aikernel-providers |
| 196 | +``` |
| 197 | + |
| 198 | +Python module は `aikernel_providers` として import します。 |
| 199 | + |
| 200 | +```python |
| 201 | +from aikernel_providers import ( |
| 202 | + ChatOpenAICapability, |
| 203 | + ChatHistoryCapability, |
| 204 | + CudaComputeCapability, |
| 205 | + DynamicPipelineCompilerCapability, |
| 206 | + LocalLlmCapability, |
| 207 | + MicrosoftAIProviderOptions, |
| 208 | +) |
| 209 | +``` |
| 210 | + |
| 211 | +wheel は managed provider assemblies を `aikernel_providers/native` に同梱します。 |
| 212 | +これは public C# Provider surface への wrapper であり、Provider semantics を |
| 213 | +Python で別実装するものではありません。 |
| 214 | + |
| 215 | +## ドキュメント |
| 216 | + |
| 217 | +- [Documentation index](docs/README-ja.md) |
| 218 | +- [User Guide](docs/user-guide/index-ja.md) |
| 219 | +- [Architecture](docs/architecture/index-ja.md) |
| 220 | +- [Provider catalog](docs/providers/index-ja.md) |
| 221 | +- [Python wrapper](docs/python/index-ja.md) |
| 222 | +- [Licensing](docs/licensing/index-ja.md) |
| 223 | + |
| 224 | +## コントリビュータ向けガイドライン |
| 225 | + |
| 226 | +Provider の変更は、AIKernel 共通の開発規律に従ってください。 |
| 227 | + |
| 228 | +- [AIKernel 開発ガイドライン](../AIKernel.NET/docs/guidelines/AIKERNEL_DEVELOPMENT_GUIDELINES-jp.md) |
| 229 | +- [AIKernel Development Guidelines](../AIKernel.NET/docs/guidelines/AIKERNEL_DEVELOPMENT_GUIDELINES.md) |
| 230 | + |
| 231 | +Provider implementation は endpoint / native-driver behavior を Core の外に保ち、 |
| 232 | +fail-closed contract を公開し、failure composition には monadic LINQ を使用し、 |
| 233 | +Python wrapper を public C# surface と整合させてください。 |
0 commit comments