* add form builder * cover VariImage * test for closing errors * simplify tests * add audio api test coverage * don't leak authToken when printed * rename api->client * fix test
71 lines
1.4 KiB
Go
71 lines
1.4 KiB
Go
package openai
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
const (
|
|
openaiAPIURLv1 = "https://api.openai.com/v1"
|
|
defaultEmptyMessagesLimit uint = 300
|
|
|
|
azureAPIPrefix = "openai"
|
|
azureDeploymentsPrefix = "deployments"
|
|
)
|
|
|
|
type APIType string
|
|
|
|
const (
|
|
APITypeOpenAI APIType = "OPEN_AI"
|
|
APITypeAzure APIType = "AZURE"
|
|
APITypeAzureAD APIType = "AZURE_AD"
|
|
)
|
|
|
|
const AzureAPIKeyHeader = "api-key"
|
|
|
|
// ClientConfig is a configuration of a client.
|
|
type ClientConfig struct {
|
|
authToken string
|
|
|
|
BaseURL string
|
|
OrgID string
|
|
APIType APIType
|
|
APIVersion string // required when APIType is APITypeAzure or APITypeAzureAD
|
|
Engine string // required when APIType is APITypeAzure or APITypeAzureAD
|
|
|
|
HTTPClient *http.Client
|
|
|
|
EmptyMessagesLimit uint
|
|
}
|
|
|
|
func DefaultConfig(authToken string) ClientConfig {
|
|
return ClientConfig{
|
|
authToken: authToken,
|
|
BaseURL: openaiAPIURLv1,
|
|
APIType: APITypeOpenAI,
|
|
OrgID: "",
|
|
|
|
HTTPClient: &http.Client{},
|
|
|
|
EmptyMessagesLimit: defaultEmptyMessagesLimit,
|
|
}
|
|
}
|
|
|
|
func DefaultAzureConfig(apiKey, baseURL, engine string) ClientConfig {
|
|
return ClientConfig{
|
|
authToken: apiKey,
|
|
BaseURL: baseURL,
|
|
OrgID: "",
|
|
APIType: APITypeAzure,
|
|
APIVersion: "2023-03-15-preview",
|
|
Engine: engine,
|
|
|
|
HTTPClient: &http.Client{},
|
|
|
|
EmptyMessagesLimit: defaultEmptyMessagesLimit,
|
|
}
|
|
}
|
|
|
|
func (ClientConfig) String() string {
|
|
return "<OpenAI API ClientConfig>"
|
|
}
|