1package deprecated
2
3import (
4 _ "embed"
5 "encoding/json"
6 "log"
7)
8
9//go:embed configs/openai.json
10var openAIConfig []byte
11
12//go:embed configs/anthropic.json
13var anthropicConfig []byte
14
15//go:embed configs/gemini.json
16var geminiConfig []byte
17
18//go:embed configs/openrouter.json
19var openRouterConfig []byte
20
21//go:embed configs/azure.json
22var azureConfig []byte
23
24//go:embed configs/vertexai.json
25var vertexAIConfig []byte
26
27//go:embed configs/xai.json
28var xAIConfig []byte
29
30//go:embed configs/zai.json
31var zAIConfig []byte
32
33//go:embed configs/bedrock.json
34var bedrockConfig []byte
35
36//go:embed configs/groq.json
37var groqConfig []byte
38
39//go:embed configs/cerebras.json
40var cerebrasConfig []byte
41
42//go:embed configs/venice.json
43var veniceConfig []byte
44
45//go:embed configs/chutes.json
46var chutesConfig []byte
47
48//go:embed configs/deepseek.json
49var deepSeekConfig []byte
50
51//go:embed configs/huggingface.json
52var huggingFaceConfig []byte
53
54//go:embed configs/aihubmix.json
55var aiHubMixConfig []byte
56
57// ProviderFunc is a function that returns a Provider.
58type ProviderFunc func() Provider
59
60var providerRegistry = []ProviderFunc{
61 anthropicProvider,
62 openAIProvider,
63 geminiProvider,
64 azureProvider,
65 bedrockProvider,
66 vertexAIProvider,
67 xAIProvider,
68 zAIProvider,
69 groqProvider,
70 openRouterProvider,
71 cerebrasProvider,
72 veniceProvider,
73 chutesProvider,
74 deepSeekProvider,
75 huggingFaceProvider,
76 aiHubMixProvider,
77}
78
79// GetAll returns all registered providers.
80func GetAll() []Provider {
81 providers := make([]Provider, 0, len(providerRegistry))
82 for _, providerFunc := range providerRegistry {
83 providers = append(providers, providerFunc())
84 }
85 return providers
86}
87
88func loadProviderFromConfig(configData []byte) Provider {
89 var p Provider
90 if err := json.Unmarshal(configData, &p); err != nil {
91 log.Printf("Error loading provider config: %v", err)
92 return Provider{}
93 }
94 return p
95}
96
97func openAIProvider() Provider {
98 return loadProviderFromConfig(openAIConfig)
99}
100
101func anthropicProvider() Provider {
102 return loadProviderFromConfig(anthropicConfig)
103}
104
105func geminiProvider() Provider {
106 return loadProviderFromConfig(geminiConfig)
107}
108
109func azureProvider() Provider {
110 return loadProviderFromConfig(azureConfig)
111}
112
113func bedrockProvider() Provider {
114 return loadProviderFromConfig(bedrockConfig)
115}
116
117func vertexAIProvider() Provider {
118 return loadProviderFromConfig(vertexAIConfig)
119}
120
121func xAIProvider() Provider {
122 return loadProviderFromConfig(xAIConfig)
123}
124
125func zAIProvider() Provider {
126 return loadProviderFromConfig(zAIConfig)
127}
128
129func openRouterProvider() Provider {
130 return loadProviderFromConfig(openRouterConfig)
131}
132
133func groqProvider() Provider {
134 return loadProviderFromConfig(groqConfig)
135}
136
137func cerebrasProvider() Provider {
138 return loadProviderFromConfig(cerebrasConfig)
139}
140
141func veniceProvider() Provider {
142 return loadProviderFromConfig(veniceConfig)
143}
144
145func chutesProvider() Provider {
146 return loadProviderFromConfig(chutesConfig)
147}
148
149func deepSeekProvider() Provider {
150 return loadProviderFromConfig(deepSeekConfig)
151}
152
153func huggingFaceProvider() Provider {
154 return loadProviderFromConfig(huggingFaceConfig)
155}
156
157func aiHubMixProvider() Provider {
158 return loadProviderFromConfig(aiHubMixConfig)
159}