From 835ed6ef27b17abd4198679c682a1502babde9f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hartmut=20N=C3=B6renberg?= Date: Mon, 23 Mar 2026 17:46:41 +0100 Subject: [PATCH] fix: correct Gemini model names + add model dropdown Corrected model names (per Google AI docs): - gemini-2.5-flash-image (was gemini-2.0-flash-preview-image-generation) - gemini-3-pro-image-preview (Nano Banana Pro) - gemini-3.1-flash-image-preview (Nano Banana 2) UI: replaced text input with dropdown selector showing all 3 models with human-readable descriptions. Default changed to gemini-2.5-flash-image (fast, high-volume). AI Assistant: generate_project_cover tool description updated to be provider-agnostic (works with both DALL-E and Gemini). Co-Authored-By: claude-flow --- .../src/components/admin/SystemSettingsClient.tsx | 12 +++++++----- packages/api/src/gemini-client.ts | 2 +- packages/api/src/router/assistant-tools.ts | 2 +- packages/api/src/router/settings.ts | 4 ++-- packages/db/prisma/schema.prisma | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/web/src/components/admin/SystemSettingsClient.tsx b/apps/web/src/components/admin/SystemSettingsClient.tsx index aeaf39a..afd467c 100644 --- a/apps/web/src/components/admin/SystemSettingsClient.tsx +++ b/apps/web/src/components/admin/SystemSettingsClient.tsx @@ -1181,13 +1181,15 @@ export function SystemSettingsClient() { Model - setGeminiModel(e.target.value)} - placeholder="gemini-2.0-flash-preview-image-generation" - /> + > + + + + diff --git a/packages/api/src/gemini-client.ts b/packages/api/src/gemini-client.ts index d0d558a..d84757a 100644 --- a/packages/api/src/gemini-client.ts +++ b/packages/api/src/gemini-client.ts @@ -15,7 +15,7 @@ export function isGeminiConfigured(settings: GeminiSettings | null | undefined): export async function generateGeminiImage( apiKey: string, prompt: string, - model = "gemini-2.0-flash-preview-image-generation", + model = "gemini-2.5-flash-image", ): Promise { const fullPrompt = `Generate a professional, cinematic cover image for a 3D production project. ${prompt}`; diff --git a/packages/api/src/router/assistant-tools.ts b/packages/api/src/router/assistant-tools.ts index 00366ae..81acd7d 100644 --- a/packages/api/src/router/assistant-tools.ts +++ b/packages/api/src/router/assistant-tools.ts @@ -1020,7 +1020,7 @@ export const TOOL_DEFINITIONS: ToolDef[] = [ type: "function", function: { name: "generate_project_cover", - description: "Generate an AI cover art image for a project using DALL-E. The image will be stored as the project's cover. Requires manageProjects permission and DALL-E to be configured.", + description: "Generate an AI cover art image for a project. Uses the configured image provider (DALL-E or Google Gemini). The image will be stored as the project's cover. Requires manageProjects permission.", parameters: { type: "object", properties: { diff --git a/packages/api/src/router/settings.ts b/packages/api/src/router/settings.ts index d1ddba5..59a75ed 100644 --- a/packages/api/src/router/settings.ts +++ b/packages/api/src/router/settings.ts @@ -57,7 +57,7 @@ export const settingsRouter = createTRPCRouter({ azureDalleEndpoint: settings?.azureDalleEndpoint ?? null, hasDalleApiKey: !!settings?.azureDalleApiKey, // Gemini - geminiModel: settings?.geminiModel ?? "gemini-2.0-flash-preview-image-generation", + geminiModel: settings?.geminiModel ?? "gemini-2.5-flash-image", hasGeminiApiKey: !!settings?.geminiApiKey, // Image provider imageProvider: settings?.imageProvider ?? "dalle", @@ -331,7 +331,7 @@ export const settingsRouter = createTRPCRouter({ try { const { generateGeminiImage } = await import("../gemini-client.js"); - const model = settings.geminiModel ?? "gemini-2.0-flash-preview-image-generation"; + const model = settings.geminiModel ?? "gemini-2.5-flash-image"; // Generate a tiny test image with a simple prompt const dataUrl = await generateGeminiImage( diff --git a/packages/db/prisma/schema.prisma b/packages/db/prisma/schema.prisma index ce12af6..ed25f65 100644 --- a/packages/db/prisma/schema.prisma +++ b/packages/db/prisma/schema.prisma @@ -1449,7 +1449,7 @@ model SystemSettings { azureDalleApiKey String? // Optional: separate API key for DALL-E // Gemini image generation geminiApiKey String? - geminiModel String? @default("gemini-2.0-flash-preview-image-generation") + geminiModel String? @default("gemini-2.5-flash-image") imageProvider String? @default("dalle") // "dalle" | "gemini" updatedAt DateTime @updatedAt