So I use AI Studio to write apps. Some of these apps rely on the use of Google Gemini or other engines for all kinds of purposes. And it does provide some good functionality.
But when my app gets deployed, the user has to provide an API key, so their usage of my app is not on my quota, but theirs. So in a file types.ts I have this list of models I want to support:
export const GEMINI_MODELS: ModelInfo[] = [
{ family: 'Gemini', name: 'gemini-2.5-pro', status: 'Stable', description: 'Our most advanced reasoning model, capable of solving complex problems.' },
{ family: 'Gemini', name: 'gemini-2.5-flash', status: 'Stable', description: "Our thinking model that offers great, well-rounded capabilities. It's designed to offer a balance between price and performance." },
{ family: 'Gemini', name: 'gemini-2.5-flash-lite-preview-06-17', status: 'Preview', description: 'Our most cost-efficient model supporting high throughput.' },
{ family: 'Gemini', name: 'gemini-2.5-flash-preview-native-audio-dialog', status: 'Preview', description: 'High quality, natural conversational audio outputs, with or without thinking.' },
{ family: 'Gemini', name: 'gemini-2.5-flash-exp-native-audio-thinking-dialog', status: 'Experimental', description: 'High quality, natural conversational audio outputs, with or without thinking.' },
{ family: 'Gemini', name: 'gemini-2.5-flash-preview-tts', status: 'Preview', description: 'Low latency, controllable, single- and multi-speaker text-to-speech audio generation.' },
{ family: 'Gemini', name: 'gemini-2.5-pro-preview-tts', status: 'Preview', description: 'Low latency, controllable, single- and multi-speaker text-to-speech audio generation.' },
{ family: 'Gemini', name: 'gemini-2.0-flash', status: 'Active', description: 'Multimodal model with next-gen features and improved capabilities, including superior speed, built-in tool use, and a 1M token context window.' },
{ family: 'Gemini', name: 'gemini-2.0-flash-preview-image-generation', status: 'Preview', description: 'Multimodal model that supports multimodal input and image output (conversational image generation and editing).' },
{ family: 'Gemini', name: 'gemini-2.0-flash-lite', status: 'Active', description: "Our fastest and most cost-efficient Flash model. It's an upgrade path for 1.5 Flash users who want better quality for the same price and speed." },
{ family: 'Gemini', name: 'gemini-live-2.5-flash-preview', status: 'Preview', description: 'Low-latency bidirectional voice and video interactions.' },
{ family: 'Gemini', name: 'gemini-2.0-flash-live-001', status: 'Active', description: 'Low-latency bidirectional voice and video interactions.' },
{ family: 'Gemini', name: 'gemini-embedding-001', status: 'Stable', description: 'Converts text data into vector representations for semantic search, classification, clustering, and similar tasks.' },
{ family: 'Imagen', name: 'imagen-3.0-generate-002', status: 'Stable', description: 'High quality image generation model.' },
{ family: 'Imagen', name: 'imagen-4.0-generate-preview-06-06', status: 'Preview', description: 'Our most up-to-date image generation model.' },
{ family: 'Imagen', name: 'imagen-4.0-ultra-generate-preview-06-06', status: 'Preview', description: 'Our most up-to-date image generation model with higher quality.' },
];
But it repeatedly gets replaced by just:
// Updated model list based on guidelines
export const GEMINI_MODELS: ModelInfo[] = [
{ family: 'Gemini', name: 'gemini-2.5-flash', status: 'Stable', description: "Our thinking model that offers great, well-rounded capabilities. It's designed to offer a balance between price and performance." },
{ family: 'Imagen', name: 'imagen-3.0-generate-002', status: 'Stable', description: 'High quality image generation model.' },
];
And that breaks my code, of course.
And not just that. It also keeps changing the settings dialog where the user can provide their API code. And while it just uses the Studio API key while in Studio, it ends up with no API key in the deployed application, nor does the user have any way to set it.
There’s probably some good reason why this happens over and over again, but it’s not helping me to make this project. (In this case, a code generator for C# to create new applications fast.)