modelsとprovidersをカタログ化

This commit is contained in:
2026-04-24 10:45:03 +09:00
parent 7ecb1e6fc1
commit 30f9abacb8
16 changed files with 777 additions and 561 deletions
+10 -5
View File
@@ -1,15 +1,20 @@
# provider
マニフェストの `ModelConfig` から適切な `LlmClient``HttpTransport<S>`)を構築するファクトリクレート。APIキーの環境変数 / ファイル解決scheme ↔ auth の整合検証を担う。
マニフェストの `ModelManifest` から適切な `LlmClient``HttpTransport<S>`)を構築するファクトリクレート。プロバイダ / モデルカタログの解決、API キーの環境変数 / ファイル解決scheme ↔ auth の整合検証を担う。
## 公開型
- `build_client(config: &ModelConfig) -> Result<Box<dyn LlmClient>, ProviderError>``SchemeKind``AuthRef` から `HttpTransport<S>` 構築
- `ProviderError`クライアント構築エラー
- `build_client(manifest: &ModelManifest) -> Result<Box<dyn LlmClient>, ProviderError>`ref / inline を受け取り、カタログ解決 → `HttpTransport<S>` 構築までを行う
- `build_client_from_config(config: &ModelConfig) -> Result<Box<dyn LlmClient>, ProviderError>`解決済み `ModelConfig` から構築
- `catalog::resolve_model_manifest(&ModelManifest) -> Result<ModelConfig, ResolveError>` — ref / inline を `ModelConfig` へ解決(build せずに参照のみ欲しいケース向け)
- `catalog::{load_providers, load_models}` — builtin + user override を解決したカタログ
- `ProviderError` / `CatalogError` / `catalog::ResolveError` — エラー種別
## 責務
- プロバイダ / モデルカタログの builtin (`resources/{providers,models}/builtin.toml`) と user override (`$XDG_CONFIG_HOME/insomnia/{providers,models}.toml`) の解決
- `ModelManifest` の ref 形を `(provider, model_id)` に split し、`ModelConfig` へ展開
- `AuthRef::ApiKey``ResolvedAuth::ApiKey` に解決(env → file の優先順位)
- `AuthRef::None` `ResolvedAuth::None` に変換
- `AuthRef::None` / `AuthRef::CodexOAuth` の解決
- `Scheme::required_auth()``ResolvedAuth` の妥当性検証(非対応組合せは構築エラー)
- 既知モデルは scheme の静的テーブル、未知モデルは scheme 既定の `ModelCapability` を採用
- capability は manifest 明示 > model catalog > provider.default_capability > `Scheme::default_capability()` の順で解決