Change summary
internal/config/load.go | 11 +++++++++++
internal/llm/provider/azure.go | 24 +++++-------------------
2 files changed, 16 insertions(+), 19 deletions(-)
Detailed changes
@@ -157,6 +157,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 {
@@ -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...),