{"record":{"id":"2cf717ca9fee4268","repo":"BoundaryML/baml","slug":"invalid-client-provider","errorCode":null,"errorMessage":"Invalid client provider: {}","messagePattern":"Invalid client provider: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"engine/baml-lib/llm-client/src/clientspec.rs","lineNumber":149,"sourceCode":"            )),\n            \"openai-transcriptions\" => Ok(ClientProvider::OpenAI(\n                OpenAIClientProviderVariant::Transcriptions,\n            )),\n            \"baml-ollama-chat\" => Ok(ClientProvider::OpenAI(OpenAIClientProviderVariant::Ollama)),\n            \"ollama\" => Ok(ClientProvider::OpenAI(OpenAIClientProviderVariant::Ollama)),\n            \"openrouter\" => Ok(ClientProvider::OpenAI(\n                OpenAIClientProviderVariant::OpenRouter,\n            )),\n            \"anthropic\" => Ok(ClientProvider::Anthropic),\n            \"baml-anthropic-chat\" => Ok(ClientProvider::Anthropic),\n            \"aws-bedrock\" => Ok(ClientProvider::AwsBedrock),\n            \"google-ai\" => Ok(ClientProvider::GoogleAi),\n            \"vertex-ai\" => Ok(ClientProvider::Vertex),\n            \"fallback\" => Ok(ClientProvider::Strategy(StrategyClientProvider::Fallback)),\n            \"baml-fallback\" => Ok(ClientProvider::Strategy(StrategyClientProvider::Fallback)),\n            \"round-robin\" => Ok(ClientProvider::Strategy(StrategyClientProvider::RoundRobin)),\n            \"baml-round-robin\" => Ok(ClientProvider::Strategy(StrategyClientProvider::RoundRobin)),\n            _ => Err(anyhow::anyhow!(\"Invalid client provider: {}\", s)),\n        }\n    }\n}\n\nimpl std::str::FromStr for OpenAIClientProviderVariant {\n    type Err = anyhow::Error;\n\n    fn from_str(s: &str) -> Result<Self, Self::Err> {\n        match s {\n            \"openai\" => Ok(OpenAIClientProviderVariant::Base),\n            \"ollama\" => Ok(OpenAIClientProviderVariant::Ollama),\n            \"azure-openai\" => Ok(OpenAIClientProviderVariant::Azure),\n            \"openai-responses\" => Ok(OpenAIClientProviderVariant::Responses),\n            \"openai-transcriptions\" => Ok(OpenAIClientProviderVariant::Transcriptions),\n            \"openai-generic\" => Ok(OpenAIClientProviderVariant::Generic),\n            \"openrouter\" => Ok(OpenAIClientProviderVariant::OpenRouter),\n            _ => Err(anyhow::anyhow!(\n                \"Invalid OpenAI client provider variant: {}\",","sourceCodeStart":131,"sourceCodeEnd":167,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/engine/baml-lib/llm-client/src/clientspec.rs#L131-L167","documentation":"ClientProvider::from_str parses a provider name string into the ClientProvider enum. Any string not matching the known providers (openai, azure-openai, google-ai, vertex-ai, fallback, round-robin, etc.) raises \"Invalid client provider: {s}\".","triggerScenarios":"Declaring a BAML client with `provider \"...\"` set to an unrecognized string, or calling ClientProvider::from_str programmatically with an arbitrary name.","commonSituations":"Typo like \"openai_chat\" or \"bedrock\" (should be \"aws-bedrock\"); casing mismatches; using a provider added in a newer BAML version than installed.","solutions":["Use an exact valid provider string: openai, azure-openai, aws-bedrock, google-ai, vertex-ai, fallback, round-robin (or baml- prefixed aliases).","Check BAML docs for the exact provider name for your target model.","Upgrade the BAML runtime if the provider exists only in newer versions."],"exampleFix":"// before\nclient \"Mine\" {\n  provider \"Bedrock\"\n  options { ... }\n}\n// after\nclient \"Mine\" {\n  provider \"aws-bedrock\"\n  options { ... }\n}","handlingStrategy":"try-catch","validationCode":"const PROVIDERS = [\"openai\",\"azure-openai\",\"aws-bedrock\",\"google-ai\",\"vertex-ai\",\"fallback\",\"round-robin\"];\nif (!PROVIDERS.includes(providerName)) throw new Error(`unknown provider: ${providerName}`);","typeGuard":null,"tryCatchPattern":"match s.parse::<ClientProvider>() {\n    Ok(p) => p,\n    Err(e) => { log::error!(\"bad provider name: {e}\"); return Err(e); }\n}","preventionTips":["Copy provider strings from BAML docs, never from memory.","Providers are lowercase-hyphenated — beware casing and underscores.","Pin and upgrade BAML runtime together with generator version to avoid name drift."],"tags":["provider","enum","parsing"],"backgroundTag":"invalid-enum-value","analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}