Files
synapbus/internal/search/embedding/factory.go
T
Algis DumbrisandClaude Opus 4.6 f12824cda9 feat: add Gemini embedding provider, agent registration UI, and UI polish
- Add Gemini embedding provider alongside OpenAI and Ollama
- Improve agent registration form with API key display and MCP config
- Polish dashboard, login page, and overall UI styling
- Update CLAUDE.md with embedding environment variables
- Add console command infrastructure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 06:46:16 +02:00

43 lines
1.3 KiB
Go

package embedding
import (
"fmt"
"os"
)
// ProviderInfo describes an available embedding provider.
type ProviderInfo struct {
Name string
Model string
Dimensions int
Configured bool
}
// AvailableProviders returns info about all supported providers and whether
// they have the required credentials configured.
func AvailableProviders(apiKey, ollamaURL string) []ProviderInfo {
geminiKey := os.Getenv("GEMINI_API_KEY")
return []ProviderInfo{
{Name: "openai", Model: openAIModel, Dimensions: openAIDimensions, Configured: apiKey != ""},
{Name: "gemini", Model: geminiModel, Dimensions: geminiDimensions, Configured: geminiKey != ""},
{Name: "ollama", Model: ollamaDefaultModel, Dimensions: ollamaDimensions, Configured: true},
}
}
// NewProvider creates an EmbeddingProvider based on the provider name.
func NewProvider(provider, apiKey, ollamaURL string) (EmbeddingProvider, error) {
switch provider {
case "openai":
return NewOpenAIProvider(apiKey)
case "gemini":
geminiKey := os.Getenv("GEMINI_API_KEY")
return NewGeminiProvider(geminiKey)
case "ollama":
return NewOllamaProvider(ollamaURL)
case "":
return nil, fmt.Errorf("no embedding provider specified")
default:
return nil, fmt.Errorf("unknown embedding provider: %q (supported: openai, gemini, ollama)", provider)
}
}