diff --git a/backend/windmill-common/src/ai_providers.rs b/backend/windmill-common/src/ai_providers.rs index b8c1aaf8fe4a1..57a6455b6056c 100644 --- a/backend/windmill-common/src/ai_providers.rs +++ b/backend/windmill-common/src/ai_providers.rs @@ -38,6 +38,12 @@ impl AIProvider { region: Option, db: &DB, ) -> Result { + // Resource-level base URL should always take precedence over any provider defaults + // (including global OpenAI Azure overrides). + if let Some(base_url) = resource_base_url { + return Ok(base_url); + } + match self { AIProvider::OpenAI => { // Check for Azure base path override @@ -71,14 +77,10 @@ impl AIProvider { AIProvider::Anthropic => Ok("https://api.anthropic.com/v1".to_string()), AIProvider::Mistral => Ok("https://api.mistral.ai/v1".to_string()), p @ (AIProvider::CustomAI | AIProvider::AzureOpenAI) => { - if let Some(base_url) = resource_base_url { - Ok(base_url) - } else { - Err(Error::BadRequest(format!( - "{:?} provider requires a base URL in the resource", - p - ))) - } + Err(Error::BadRequest(format!( + "{:?} provider requires a base URL in the resource", + p + ))) } AIProvider::AWSBedrock => Ok(format!( "https://bedrock-runtime.{}.amazonaws.com",