providers.go

  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}