From 8427eb00b0eb8fc4cafceddc986e29d2b6f0fd80 Mon Sep 17 00:00:00 2001 From: Connor Etherington Date: Tue, 17 Mar 2026 19:53:36 +0200 Subject: [PATCH] fix: Handle Gemini Deprecation Removed retired Gemini models from SDK-supported model lists, prevented reintroduction in the Gemini model update script, and updated template/test references to supported model IDs so router/docs-der --- packages/sdk/ts/scripts/update-gemini-models.ts | 8 +++++++- .../sdk/ts/src/supported-models/chat/gemini.ts | 14 -------------- .../provider-smoke/gemini-generate-text.test.ts | 1 - .../next-image/src/app/api/edit-image/google.ts | 2 +- .../src/app/api/generate-image/google.ts | 2 +- 5 files changed, 9 insertions(+), 18 deletions(-) diff --git a/packages/sdk/ts/scripts/update-gemini-models.ts b/packages/sdk/ts/scripts/update-gemini-models.ts index 845cda201..fe93f93fc 100644 --- a/packages/sdk/ts/scripts/update-gemini-models.ts +++ b/packages/sdk/ts/scripts/update-gemini-models.ts @@ -20,6 +20,11 @@ interface GeminiApiResponse { models: GeminiApiModel[]; } +const RETIRED_GEMINI_MODELS = new Set([ + 'gemini-2.0-flash-preview-image-generation', + 'gemini-2.5-flash-image-preview', +]); + async function fetchGeminiModels(): Promise { const apiKey = process.env.GEMINI_API_KEY; if (!apiKey) { @@ -68,7 +73,8 @@ async function fetchGeminiModels(): Promise { // Extract model ID from the full name (e.g., "models/gemini-pro" -> "gemini-pro") const modelId = model.name.replace('models/', ''); return modelId; - }); + }) + .filter(modelId => !RETIRED_GEMINI_MODELS.has(modelId)); console.log(`📝 Filtered to ${modelIds.length} language models:`); modelIds.forEach(id => console.log(` - ${id}`)); diff --git a/packages/sdk/ts/src/supported-models/chat/gemini.ts b/packages/sdk/ts/src/supported-models/chat/gemini.ts index 53197b7f5..92073a22d 100644 --- a/packages/sdk/ts/src/supported-models/chat/gemini.ts +++ b/packages/sdk/ts/src/supported-models/chat/gemini.ts @@ -10,13 +10,11 @@ export type GeminiModel = | 'gemini-2.0-flash-lite-001' | 'gemini-2.0-flash-lite-preview' | 'gemini-2.0-flash-lite-preview-02-05' - | 'gemini-2.0-flash-preview-image-generation' | 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-flash-thinking-exp-01-21' | 'gemini-2.0-flash-thinking-exp-1219' | 'gemini-2.5-flash' | 'gemini-2.5-flash-image' - | 'gemini-2.5-flash-image-preview' | 'gemini-2.5-flash-lite' | 'gemini-2.5-flash-lite-preview-06-17' | 'gemini-2.5-flash-lite-preview-09-2025' @@ -78,12 +76,6 @@ export const GeminiModels: SupportedModel[] = [ output_cost_per_token: 3e-7, provider: 'Gemini', }, - { - model_id: 'gemini-2.0-flash-preview-image-generation', - input_cost_per_token: 1e-7, - output_cost_per_token: 4e-7, - provider: 'Gemini', - }, { model_id: 'gemini-2.0-flash-thinking-exp', input_cost_per_token: 1e-7, @@ -114,12 +106,6 @@ export const GeminiModels: SupportedModel[] = [ output_cost_per_token: 0.0000025, provider: 'Gemini', }, - { - model_id: 'gemini-2.5-flash-image-preview', - input_cost_per_token: 3e-7, - output_cost_per_token: 0.0000025, - provider: 'Gemini', - }, { model_id: 'gemini-2.5-flash-lite', input_cost_per_token: 1e-7, diff --git a/packages/tests/provider-smoke/gemini-generate-text.test.ts b/packages/tests/provider-smoke/gemini-generate-text.test.ts index da2339df1..8867a7704 100644 --- a/packages/tests/provider-smoke/gemini-generate-text.test.ts +++ b/packages/tests/provider-smoke/gemini-generate-text.test.ts @@ -15,7 +15,6 @@ import { beforeAll(assertEnv); export const BLACKLISTED_MODELS = new Set([ - 'gemini-2.0-flash-preview-image-generation', 'veo-3.0-fast-generate', 'gemini-2.0-flash-exp', 'gemini-2.0-flash-thinking-exp-1219', diff --git a/templates/next-image/src/app/api/edit-image/google.ts b/templates/next-image/src/app/api/edit-image/google.ts index 527c4879d..616f53a3f 100644 --- a/templates/next-image/src/app/api/edit-image/google.ts +++ b/templates/next-image/src/app/api/edit-image/google.ts @@ -28,7 +28,7 @@ export async function handleGoogleEdit( ]; const result = await generateText({ - model: google('gemini-2.5-flash-image-preview'), + model: google('gemini-2.5-flash-image'), prompt: [ { role: 'user', diff --git a/templates/next-image/src/app/api/generate-image/google.ts b/templates/next-image/src/app/api/generate-image/google.ts index 4fcdffb3a..1a1710be9 100644 --- a/templates/next-image/src/app/api/generate-image/google.ts +++ b/templates/next-image/src/app/api/generate-image/google.ts @@ -12,7 +12,7 @@ import { ERROR_MESSAGES } from '@/lib/constants'; export async function handleGoogleGenerate(prompt: string): Promise { try { const result = await generateText({ - model: google('gemini-2.5-flash-image-preview'), + model: google('gemini-2.5-flash-image'), prompt, });