Fix Google Vertex global endpoint
For the global GCP endpoint, the URL is contructed starting with
https://aiplatform.googleapis.com/ instead of
https://${GOOGLE_CLOUD_LOCATION}-aiplatform.googleapis.com.- commit
- e7dc295707a4a869470b9fd317f3d2e207593c8e
- author
- Eckhart Koeppen · · 2026-07-06 09:19 UTC
- committer
- Eckhart Köppen · · 2026-07-12 13:11 UTC
- parent
- 9559c57
- signature
- unsigned
1 file · +10 -2
M packages/provider/google_vertex.go +10 -2
| @@ -311,7 +311,11 @@ func (t *vertexTransport) RoundTrip(req *http.Request) (*http.Response, error) { | |||
| 311 | 311 | newPath := fmt.Sprintf("/v1/projects/%s/locations/%s/publishers/google/models/%s%s", | |
| 312 | 312 | t.cfg.project, t.cfg.location, modelID, verb) | |
| 313 | 313 | clone := req.Clone(req.Context()) | |
| 314 | - | clone.URL.Host = t.cfg.location + "-aiplatform.googleapis.com" | |
| 314 | + | if t.cfg.location == "global" { | |
| 315 | + | clone.URL.Host = "aiplatform.googleapis.com" | |
| 316 | + | } else { | |
| 317 | + | clone.URL.Host = t.cfg.location + "-aiplatform.googleapis.com" | |
| 318 | + | } | |
| 315 | 319 | clone.URL.Path = newPath | |
| 316 | 320 | // Drop existing auth header and pick the right one. | |
| 317 | 321 | clone.Header.Del("x-goog-api-key") | |
| @@ -336,9 +340,13 @@ func NewVertex(_ string, _ string) Client { | |||
| 336 | 340 | if err != nil { | |
| 337 | 341 | return &unimplementedClient{name: "google-vertex", hint: err.Error()} | |
| 338 | 342 | } | |
| 343 | + | baseHost := "aiplatform.googleapis.com" | |
| 344 | + | if cfg.location != "global" { | |
| 345 | + | baseHost = cfg.location + "-aiplatform.googleapis.com" | |
| 346 | + | } | |
| 339 | 347 | inner := &geminiClient{ | |
| 340 | 348 | apiKey: "vertex-placeholder", // overwritten by transport | |
| 341 | - | baseURL: "https://" + cfg.location + "-aiplatform.googleapis.com", | |
| 349 | + | baseURL: "https://" + baseHost, | |
| 342 | 350 | http: &http.Client{ | |
| 343 | 351 | Transport: &vertexTransport{inner: http.DefaultTransport, cfg: cfg}, | |
| 344 | 352 | Timeout: 0, | |
| @@ -311,7 +311,11 @@ func (t *vertexTransport) RoundTrip(req *http.Request) (*http.Response, error) { | |||||
| 311 | newPath := fmt.Sprintf("/v1/projects/%s/locations/%s/publishers/google/models/%s%s", | 311 | newPath := fmt.Sprintf("/v1/projects/%s/locations/%s/publishers/google/models/%s%s", | ||
| 312 | t.cfg.project, t.cfg.location, modelID, verb) | 312 | t.cfg.project, t.cfg.location, modelID, verb) | ||
| 313 | clone := req.Clone(req.Context()) | 313 | clone := req.Clone(req.Context()) | ||
| 314 | - | clone.URL.Host = t.cfg.location + "-aiplatform.googleapis.com" | 314 | + | if t.cfg.location == "global" { |
| 315 | + | clone.URL.Host = "aiplatform.googleapis.com" | |||
| 316 | + | } else { | |||
| 317 | + | clone.URL.Host = t.cfg.location + "-aiplatform.googleapis.com" | |||
| 318 | + | } | |||
| 315 | clone.URL.Path = newPath | 319 | clone.URL.Path = newPath | ||
| 316 | // Drop existing auth header and pick the right one. | 320 | // Drop existing auth header and pick the right one. | ||
| 317 | clone.Header.Del("x-goog-api-key") | 321 | clone.Header.Del("x-goog-api-key") | ||
| @@ -336,9 +340,13 @@ func NewVertex(_ string, _ string) Client { | |||||
| 336 | if err != nil { | 340 | if err != nil { | ||
| 337 | return &unimplementedClient{name: "google-vertex", hint: err.Error()} | 341 | return &unimplementedClient{name: "google-vertex", hint: err.Error()} | ||
| 338 | } | 342 | } | ||
| 343 | + | baseHost := "aiplatform.googleapis.com" | |||
| 344 | + | if cfg.location != "global" { | |||
| 345 | + | baseHost = cfg.location + "-aiplatform.googleapis.com" | |||
| 346 | + | } | |||
| 339 | inner := &geminiClient{ | 347 | inner := &geminiClient{ | ||
| 340 | apiKey: "vertex-placeholder", // overwritten by transport | 348 | apiKey: "vertex-placeholder", // overwritten by transport | ||
| 341 | - | baseURL: "https://" + cfg.location + "-aiplatform.googleapis.com", | 349 | + | baseURL: "https://" + baseHost, |
| 342 | http: &http.Client{ | 350 | http: &http.Client{ | ||
| 343 | Transport: &vertexTransport{inner: http.DefaultTransport, cfg: cfg}, | 351 | Transport: &vertexTransport{inner: http.DefaultTransport, cfg: cfg}, | ||
| 344 | Timeout: 0, | 352 | Timeout: 0, | ||