feat: gemini adapter with bidirectional translation incl streaming and embeddings

This commit is contained in:
2026-08-20 04:16:10 +01:00
parent 876d340054
commit 2891766b5f
48 changed files with 2463 additions and 7 deletions
+7 -3
View File
@@ -182,8 +182,8 @@ func upstreamJSON(ctx context.Context, client *http.Client, method, url string,
// keyless upstream for openai-type providers, but a constructor error for
// anthropic-type ones — newAnthropicAdapter enforces that, per ruling (c);
// this function just propagates whatever error it returns. A configured
// gemini provider currently errors too — Task 10 fills in that switch
// case.
// gemini provider follows the same constructor-error ruling —
// newGeminiAdapter enforces it too.
func buildAdapters(cfg *Config) (map[string]providerAdapter, error) {
adapters := make(map[string]providerAdapter, len(cfg.Providers))
for name, pc := range cfg.Providers {
@@ -207,7 +207,11 @@ func buildAdapters(cfg *Config) (map[string]providerAdapter, error) {
}
adapters[name] = a
case providerTypeGemini:
return nil, fmt.Errorf("llmgateway: provider %q: type %q not yet implemented", name, pc.Type)
g, err := newGeminiAdapter(name, base, apiKey)
if err != nil {
return nil, err
}
adapters[name] = g
default:
return nil, fmt.Errorf("llmgateway: provider %q: unknown type %q", name, pc.Type)
}