yoi/crates/provider
2026-04-27 21:45:30 +09:00
..
src home-dirの整理 2026-04-27 21:45:30 +09:00
Cargo.toml llm-provider-catalog実装 2026-04-23 15:37:51 +09:00
README.md modelsとprovidersをカタログ化 2026-04-24 10:45:03 +09:00

provider

マニフェストの ModelManifest から適切な LlmClientHttpTransport<S>)を構築するファクトリクレート。プロバイダ / モデルカタログの解決、API キーの環境変数 / ファイル解決、scheme ↔ auth の整合検証を担う。

公開型

  • 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::ApiKeyResolvedAuth::ApiKey に解決env → file の優先順位)
  • AuthRef::None / AuthRef::CodexOAuth の解決
  • Scheme::required_auth()ResolvedAuth の妥当性検証(非対応組合せは構築エラー)
  • capability は manifest 明示 > model catalog > provider.default_capability > Scheme::default_capability() の順で解決