1package provider
2
3import (
4 "context"
5 "log/slog"
6 "strings"
7
8 "github.com/charmbracelet/crush/internal/log"
9 "google.golang.org/genai"
10)
11
12type VertexAIClient ProviderClient
13
14func newVertexAIClient(opts providerClientOptions) VertexAIClient {
15 project := opts.extraParams["project"]
16 location := opts.extraParams["location"]
17 cc := &genai.ClientConfig{
18 Project: project,
19 Location: location,
20 Backend: genai.BackendVertexAI,
21 }
22 if opts.cfg.Options.Debug {
23 cc.HTTPClient = log.NewHTTPClient()
24 }
25 client, err := genai.NewClient(context.Background(), cc)
26 if err != nil {
27 slog.Error("Failed to create VertexAI client", "error", err)
28 return nil
29 }
30
31 model := opts.model(opts.modelType)
32 if strings.Contains(model.ID, "anthropic") || strings.Contains(model.ID, "claude-sonnet") {
33 return newAnthropicClient(opts, AnthropicClientTypeVertex)
34 }
35 return &geminiClient{
36 providerOptions: opts,
37 client: client,
38 }
39}