- Notifications
You must be signed in to change notification settings - Fork 1.6k
/
Copy pathconfig.go
109 lines (85 loc) · 2.5 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package openai
import (
"net/http"
"regexp"
)
const (
openaiAPIURLv1="https://api.openai.com/v1"
defaultEmptyMessagesLimituint=300
azureAPIPrefix="openai"
azureDeploymentsPrefix="deployments"
AnthropicAPIVersion="2023-06-01"
)
typeAPITypestring
const (
APITypeOpenAIAPIType="OPEN_AI"
APITypeAzureAPIType="AZURE"
APITypeAzureADAPIType="AZURE_AD"
APITypeCloudflareAzureAPIType="CLOUDFLARE_AZURE"
APITypeAnthropicAPIType="ANTHROPIC"
)
constAzureAPIKeyHeader="api-key"
constdefaultAssistantVersion="v2"// upgrade to v2 to support vector store
typeHTTPDoerinterface {
Do(req*http.Request) (*http.Response, error)
}
// ClientConfig is a configuration of a client.
typeClientConfigstruct {
authTokenstring
BaseURLstring
OrgIDstring
APITypeAPIType
APIVersionstring// required when APIType is APITypeAzure or APITypeAzureAD or APITypeAnthropic
AssistantVersionstring
AzureModelMapperFuncfunc(modelstring) string// replace model to azure deployment name func
HTTPClientHTTPDoer
EmptyMessagesLimituint
}
funcDefaultConfig(authTokenstring) ClientConfig {
returnClientConfig{
authToken: authToken,
BaseURL: openaiAPIURLv1,
APIType: APITypeOpenAI,
AssistantVersion: defaultAssistantVersion,
OrgID: "",
HTTPClient: &http.Client{},
EmptyMessagesLimit: defaultEmptyMessagesLimit,
}
}
funcDefaultAzureConfig(apiKey, baseURLstring) ClientConfig {
returnClientConfig{
authToken: apiKey,
BaseURL: baseURL,
OrgID: "",
APIType: APITypeAzure,
APIVersion: "2023-05-15",
AzureModelMapperFunc: func(modelstring) string {
returnregexp.MustCompile(`[.:]`).ReplaceAllString(model, "")
},
HTTPClient: &http.Client{},
EmptyMessagesLimit: defaultEmptyMessagesLimit,
}
}
funcDefaultAnthropicConfig(apiKey, baseURLstring) ClientConfig {
ifbaseURL=="" {
baseURL="https://api.anthropic.com/v1"
}
returnClientConfig{
authToken: apiKey,
BaseURL: baseURL,
OrgID: "",
APIType: APITypeAnthropic,
APIVersion: AnthropicAPIVersion,
HTTPClient: &http.Client{},
EmptyMessagesLimit: defaultEmptyMessagesLimit,
}
}
func (ClientConfig) String() string {
return"<OpenAI API ClientConfig>"
}
func (cClientConfig) GetAzureDeploymentByModel(modelstring) string {
ifc.AzureModelMapperFunc!=nil {
returnc.AzureModelMapperFunc(model)
}
returnmodel
}