pub struct ModelConfig {Show 13 fields
pub id: String,
pub name: String,
pub api: ApiProtocol,
pub provider: String,
pub base_url: String,
pub api_key: String,
pub reasoning: bool,
pub context_window: u32,
pub max_tokens: u32,
pub cost: CostConfig,
pub headers: HashMap<String, String>,
pub compat: Option<OpenAiCompat>,
pub credentials: Option<Arc<dyn CredentialProvider>>,
}Expand description
Full model configuration. Knows everything needed to make API calls.
Fields§
§id: StringModel identifier sent to the API (e.g. “gpt-4o”, “claude-sonnet-4-20250514”).
name: StringHuman-friendly name.
api: ApiProtocolWhich API protocol to use.
provider: StringProvider name (e.g. “openai”, “anthropic”, “xai”).
base_url: StringBase URL for API requests (without trailing slash).
api_key: StringAuthentication credential for this provider (API key, Bearer token, or
access_key:secret[:session_token] for Bedrock).
Defaults to an empty string so config files can omit it and supply via env instead.
reasoning: boolWhether this model supports reasoning/thinking.
context_window: u32Context window size in tokens.
max_tokens: u32Default max output tokens.
cost: CostConfigCost configuration.
headers: HashMap<String, String>Additional headers to send with requests.
compat: Option<OpenAiCompat>OpenAI-compat quirk flags (only for OpenAiCompletions protocol).
credentials: Option<Arc<dyn CredentialProvider>>Optional refreshable credential source. When Some, every stream() call
resolves the API key via credentials.current().await instead of reading
api_key directly; the retry loop calls credentials.invalidate().await
once on ProviderError::Auth and retries the call before propagating.
When None (the default), api_key is used verbatim, preserving the legacy
static-key behaviour.
Implementations§
Source§impl ModelConfig
impl ModelConfig
Sourcepub fn anthropic(
id: impl Into<String>,
name: impl Into<String>,
api_key: impl Into<String>,
) -> Self
pub fn anthropic( id: impl Into<String>, name: impl Into<String>, api_key: impl Into<String>, ) -> Self
Create a new Anthropic model config.
Sourcepub fn openai(
id: impl Into<String>,
name: impl Into<String>,
api_key: impl Into<String>,
) -> Self
pub fn openai( id: impl Into<String>, name: impl Into<String>, api_key: impl Into<String>, ) -> Self
Create a new OpenAI model config.
Sourcepub fn local(
base_url: impl Into<String>,
model_id: impl Into<String>,
api_key: impl Into<String>,
) -> Self
pub fn local( base_url: impl Into<String>, model_id: impl Into<String>, api_key: impl Into<String>, ) -> Self
Create a config for a local OpenAI-compatible server (LM Studio, Ollama, etc.).
Pass an empty string for api_key — most local servers don’t require authentication.
Sourcepub fn google(
id: impl Into<String>,
name: impl Into<String>,
api_key: impl Into<String>,
) -> Self
pub fn google( id: impl Into<String>, name: impl Into<String>, api_key: impl Into<String>, ) -> Self
Create a new Google Generative AI (Gemini) model config.
Sourcepub fn openrouter(
model_id: impl Into<String>,
api_key: impl Into<String>,
) -> Self
pub fn openrouter( model_id: impl Into<String>, api_key: impl Into<String>, ) -> Self
Create a new OpenRouter model config.
model_id uses the provider/model format (e.g. "anthropic/claude-sonnet-4").
Sourcepub fn with_credentials(self, creds: Arc<dyn CredentialProvider>) -> Self
pub fn with_credentials(self, creds: Arc<dyn CredentialProvider>) -> Self
Attach a refreshable credential source. When set, the API key is resolved
per-call via credentials.current().await instead of being read directly
from self.api_key. The retry loop also calls credentials.invalidate()
once on ProviderError::Auth and re-tries the stream call.
Sourcepub async fn resolve_api_key(&self) -> Result<String, ProviderError>
pub async fn resolve_api_key(&self) -> Result<String, ProviderError>
Resolve the API key for an outgoing request.
When credentials is set, delegate to its current() method (which may
re-fetch from a metadata service or return a cached value). Otherwise fall
back to the static api_key field. Providers should call this once at the
top of stream() instead of reading api_key directly.
Sourcepub async fn invalidate_credentials(&self) -> Result<(), ProviderError>
pub async fn invalidate_credentials(&self) -> Result<(), ProviderError>
Signal that the currently cached credential has been rejected. If
credentials is set, delegate to its invalidate(); otherwise a no-op.
Invoked by the streaming retry loop on ProviderError::Auth.
Trait Implementations§
Source§impl Clone for ModelConfig
impl Clone for ModelConfig
Source§fn clone(&self) -> ModelConfig
fn clone(&self) -> ModelConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more