fix(opencode): route Vertex multi-regions through REP (#42648)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com> Co-authored-by: Filip <34747899+neriousy@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
fa8f17014c
commit
361a71ffad
@@ -98,6 +98,12 @@ function googleVertexAnthropicBaseURL(project: string | undefined, location: str
|
|||||||
return `https://aiplatform.${location}.rep.googleapis.com/v1/projects/${project}/locations/${location}/publishers/anthropic/models`
|
return `https://aiplatform.${location}.rep.googleapis.com/v1/projects/${project}/locations/${location}/publishers/anthropic/models`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function googleVertexEndpoint(location: string) {
|
||||||
|
if (location === "global") return "aiplatform.googleapis.com"
|
||||||
|
if (location === "eu" || location === "us") return `aiplatform.${location}.rep.googleapis.com`
|
||||||
|
return `${location}-aiplatform.googleapis.com`
|
||||||
|
}
|
||||||
|
|
||||||
type BundledSDK = {
|
type BundledSDK = {
|
||||||
languageModel(modelId: string): LanguageModelV3
|
languageModel(modelId: string): LanguageModelV3
|
||||||
chat?: (modelId: string) => LanguageModelV3
|
chat?: (modelId: string) => LanguageModelV3
|
||||||
@@ -519,11 +525,10 @@ function custom(dep: CustomDep): Record<string, CustomLoader> {
|
|||||||
return {
|
return {
|
||||||
autoload: true,
|
autoload: true,
|
||||||
vars(_options: Record<string, any>) {
|
vars(_options: Record<string, any>) {
|
||||||
const endpoint = location === "global" ? "aiplatform.googleapis.com" : `${location}-aiplatform.googleapis.com`
|
|
||||||
return {
|
return {
|
||||||
...(project && { GOOGLE_VERTEX_PROJECT: project }),
|
...(project && { GOOGLE_VERTEX_PROJECT: project }),
|
||||||
GOOGLE_VERTEX_LOCATION: location,
|
GOOGLE_VERTEX_LOCATION: location,
|
||||||
GOOGLE_VERTEX_ENDPOINT: endpoint,
|
GOOGLE_VERTEX_ENDPOINT: googleVertexEndpoint(location),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
|
|||||||
@@ -1909,6 +1909,38 @@ it.instance("Google Vertex: keeps regional Claude endpoints unchanged", () =>
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
it.instance("Google Vertex: uses REP endpoint for Gemini continental multi-regions", () =>
|
||||||
|
Effect.gen(function* () {
|
||||||
|
yield* set("GOOGLE_CLOUD_PROJECT", "test-project")
|
||||||
|
yield* set("VERTEX_LOCATION", "eu")
|
||||||
|
const provider = yield* Provider.Service
|
||||||
|
const model = yield* provider.getModel(
|
||||||
|
ProviderV2.ID.make("google-vertex"),
|
||||||
|
ModelV2.ID.make("gemini-3.5-flash"),
|
||||||
|
)
|
||||||
|
const language = yield* provider.getLanguage(model)
|
||||||
|
expect(languageBaseURL(language)).toBe(
|
||||||
|
"https://aiplatform.eu.rep.googleapis.com/v1beta1/projects/test-project/locations/eu/publishers/google",
|
||||||
|
)
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
it.instance("Google Vertex: keeps regional Gemini endpoints unchanged", () =>
|
||||||
|
Effect.gen(function* () {
|
||||||
|
yield* set("GOOGLE_CLOUD_PROJECT", "test-project")
|
||||||
|
yield* set("VERTEX_LOCATION", "europe-west1")
|
||||||
|
const provider = yield* Provider.Service
|
||||||
|
const model = yield* provider.getModel(
|
||||||
|
ProviderV2.ID.make("google-vertex"),
|
||||||
|
ModelV2.ID.make("gemini-3.5-flash"),
|
||||||
|
)
|
||||||
|
const language = yield* provider.getLanguage(model)
|
||||||
|
expect(languageBaseURL(language)).toBe(
|
||||||
|
"https://europe-west1-aiplatform.googleapis.com/v1beta1/projects/test-project/locations/europe-west1/publishers/google",
|
||||||
|
)
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
it.instance("cloudflare-ai-gateway loads with env variables", () =>
|
it.instance("cloudflare-ai-gateway loads with env variables", () =>
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
yield* set("CLOUDFLARE_ACCOUNT_ID", "test-account")
|
yield* set("CLOUDFLARE_ACCOUNT_ID", "test-account")
|
||||||
|
|||||||
Reference in New Issue
Block a user