fix(models): normalize google-vertex flash-lite ids

This commit is contained in:
Vincent Koc
2026-04-14 13:24:46 +01:00
parent 3329824eed
commit 10dbb21380
2 changed files with 44 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ import {
isGoogleGenerativeAiApi,
normalizeGoogleApiBaseUrl,
normalizeGoogleGenerativeAiBaseUrl,
normalizeGoogleProviderConfig,
parseGeminiAuth,
resolveGoogleGenerativeAiHttpRequestConfig,
resolveGoogleGenerativeAiApiOrigin,
@@ -106,6 +107,36 @@ describe("google generative ai helpers", () => {
});
});
it("normalizes google-vertex model ids without rewriting the OpenAI-compatible baseUrl", () => {
expect(
normalizeGoogleProviderConfig("google-vertex", {
api: "openai-completions",
baseUrl:
"https://aiplatform.googleapis.com/v1/projects/test/locations/us-central1/endpoints/openapi",
models: [
{
id: "gemini-3.1-flash-lite",
name: "Gemini Flash Lite",
input: ["text"],
reasoning: false,
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 1,
maxTokens: 1,
},
],
}),
).toMatchObject({
api: "openai-completions",
baseUrl:
"https://aiplatform.googleapis.com/v1/projects/test/locations/us-central1/endpoints/openapi",
models: [
expect.objectContaining({
id: "gemini-3.1-flash-lite-preview",
}),
],
});
});
it("derives the Gemini API origin without duplicating /v1beta", () => {
expect(resolveGoogleGenerativeAiApiOrigin()).toBe("https://generativelanguage.googleapis.com");
expect(resolveGoogleGenerativeAiApiOrigin("https://generativelanguage.googleapis.com")).toBe(

View File

@@ -152,14 +152,21 @@ export function normalizeGoogleProviderConfig(
provider: ModelProviderConfig,
): ModelProviderConfig {
let nextProvider = provider;
const shouldNormalizeModelIds =
providerKey === "google-vertex" ||
shouldNormalizeGoogleGenerativeAiProviderConfig(providerKey, nextProvider);
if (shouldNormalizeGoogleGenerativeAiProviderConfig(providerKey, nextProvider)) {
if (shouldNormalizeModelIds) {
const modelNormalized = normalizeProviderModels(nextProvider, normalizeGoogleModelId);
const normalizedBaseUrl = normalizeGoogleGenerativeAiBaseUrl(modelNormalized.baseUrl);
nextProvider =
normalizedBaseUrl !== modelNormalized.baseUrl
? { ...modelNormalized, baseUrl: normalizedBaseUrl ?? modelNormalized.baseUrl }
: modelNormalized;
if (shouldNormalizeGoogleGenerativeAiProviderConfig(providerKey, modelNormalized)) {
const normalizedBaseUrl = normalizeGoogleGenerativeAiBaseUrl(modelNormalized.baseUrl);
nextProvider =
normalizedBaseUrl !== modelNormalized.baseUrl
? { ...modelNormalized, baseUrl: normalizedBaseUrl ?? modelNormalized.baseUrl }
: modelNormalized;
} else {
nextProvider = modelNormalized;
}
}
if (providerKey === "google-antigravity") {