func NewAzureOpenAIClient()

in gollm/azopenai.go [44:78]


func NewAzureOpenAIClient(ctx context.Context, u url.URL) (*AzureOpenAIClient, error) {
	azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
	if u.Host != "" {
		u.Scheme = "https"
		azureOpenAIEndpoint = u.String()

	}
	if azureOpenAIEndpoint == "" {
		return nil, fmt.Errorf("AZURE_OPENAI_ENDPOINT environment variable not set")
	}

	azureOpenAIClient := AzureOpenAIClient{}
	azureOpenAIKey := os.Getenv("AZURE_OPENAI_API_KEY")
	if azureOpenAIKey != "" {
		keyCredential := azcore.NewKeyCredential(azureOpenAIKey)
		client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, keyCredential, nil)
		if err != nil {
			return nil, err
		}
		azureOpenAIClient.client = client
	} else {
		credential, err := azidentity.NewDefaultAzureCredential(nil)
		if err != nil {
			return nil, err
		}
		client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)
		if err != nil {
			return nil, err
		}
		azureOpenAIClient.client = client
	}

	return &azureOpenAIClient, nil

}