diff --git a/internal/config/load.go b/internal/config/load.go index 4e877ec15752d12fdbaf35bac241ca6f57415ead..cd4ccd08c46e48155091407962137da2cb913869 100644 --- a/internal/config/load.go +++ b/internal/config/load.go @@ -188,6 +188,17 @@ func (c *Config) configureProviders(env env.Env, resolver VariableResolver, know } prepared.ExtraParams["project"] = env.Get("GOOGLE_CLOUD_PROJECT") prepared.ExtraParams["location"] = env.Get("GOOGLE_CLOUD_LOCATION") + case provider.InferenceProviderAzure: + endpoint, err := resolver.ResolveValue(p.APIEndpoint) + if err != nil || endpoint == "" { + if configExists { + slog.Warn("Skipping Azure provider due to missing API endpoint", "provider", p.ID, "error", err) + delete(c.Providers, string(p.ID)) + } + continue + } + prepared.BaseURL = endpoint + prepared.ExtraParams["apiVersion"] = env.Get("AZURE_OPENAI_API_VERSION") case provider.InferenceProviderBedrock: if !hasAWSCredentials(env) { if configExists { diff --git a/internal/llm/provider/azure.go b/internal/llm/provider/azure.go index 33a04cb3a79be4d9cf2845031f07f3ebaf473e8c..31d06bd1b040d8f8cce3afa28fad53b0fe12eaa3 100644 --- a/internal/llm/provider/azure.go +++ b/internal/llm/provider/azure.go @@ -1,9 +1,6 @@ package provider import ( - "os" - - "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/openai/openai-go" "github.com/openai/openai-go/azure" "github.com/openai/openai-go/option" @@ -16,27 +13,16 @@ type azureClient struct { type AzureClient ProviderClient func newAzureClient(opts providerClientOptions) AzureClient { - endpoint := os.Getenv("AZURE_OPENAI_ENDPOINT") // ex: https://foo.openai.azure.com - apiVersion := os.Getenv("AZURE_OPENAI_API_VERSION") // ex: 2025-04-01-preview - - if endpoint == "" || apiVersion == "" { - return &azureClient{openaiClient: newOpenAIClient(opts).(*openaiClient)} + apiVersion := opts.extraParams["apiVersion"] + if apiVersion == "" { + apiVersion = "2025-01-01-preview" } reqOpts := []option.RequestOption{ - azure.WithEndpoint(endpoint, apiVersion), - } - - if opts.apiKey != "" || os.Getenv("AZURE_OPENAI_API_KEY") != "" { - key := opts.apiKey - if key == "" { - key = os.Getenv("AZURE_OPENAI_API_KEY") - } - reqOpts = append(reqOpts, azure.WithAPIKey(key)) - } else if cred, err := azidentity.NewDefaultAzureCredential(nil); err == nil { - reqOpts = append(reqOpts, azure.WithTokenCredential(cred)) + azure.WithEndpoint(opts.baseURL, apiVersion), } + reqOpts = append(reqOpts, azure.WithAPIKey(opts.apiKey)) base := &openaiClient{ providerOptions: opts, client: openai.NewClient(reqOpts...),