From a2a09b556ada7aeab66230d5a6443dd2afe2ee62 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Tue, 3 Mar 2026 13:47:16 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20feat:=20`gemini-3.1-flash-lite-p?= =?UTF-8?q?review`=20Window=20&=20Pricing=20(#12043)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🤖 feat: `gemini-3.1-flash-lite-preview` Window & Pricing - Updated `.env.example` to include `gemini-3.1-flash-lite-preview` in the list of available models. - Enhanced `tx.js` to define token values for `gemini-3.1-flash-lite`. - Adjusted `tokens.ts` to allocate input tokens for `gemini-3.1-flash-lite`. - Modified `config.ts` to include `gemini-3.1-flash-lite-preview` in the default models list. * chore: testing for `gemini-3.1-flash-lite` model, comments - Updated `tx.js` to include cache token values for `gemini-3.1-flash-lite` with specific write and read rates. - Enhanced `tx.spec.js` to include tests for the new `gemini-3.1-flash-lite-preview` model, ensuring correct rate retrieval for both prompt and completion token types. --- .env.example | 4 ++-- api/models/tx.js | 5 ++++- api/models/tx.spec.js | 18 ++++++++++++++++++ packages/api/src/utils/tokens.ts | 1 + packages/data-provider/src/config.ts | 1 + 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index e19346c4bf..06d509a3ae 100644 --- a/.env.example +++ b/.env.example @@ -196,10 +196,10 @@ GOOGLE_KEY=user_provided # GOOGLE_AUTH_HEADER=true # Gemini API (AI Studio) -# GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash,gemini-2.0-flash-lite +# GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-3.1-flash-lite-preview,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash,gemini-2.0-flash-lite # Vertex AI -# GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash-001,gemini-2.0-flash-lite-001 +# GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-3.1-flash-lite-preview,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash-001,gemini-2.0-flash-lite-001 # GOOGLE_TITLE_MODEL=gemini-2.0-flash-lite-001 diff --git a/api/models/tx.js b/api/models/tx.js index a13143a862..488ae7604e 100644 --- a/api/models/tx.js +++ b/api/models/tx.js @@ -201,6 +201,7 @@ const tokenValues = Object.assign( 'gemini-3': { prompt: 2, completion: 12 }, 'gemini-3-pro-image': { prompt: 2, completion: 120 }, 'gemini-3.1': { prompt: 2, completion: 12 }, + 'gemini-3.1-flash-lite': { prompt: 0.25, completion: 1.5 }, 'gemini-pro-vision': { prompt: 0.5, completion: 1.5 }, grok: { prompt: 2.0, completion: 10.0 }, // Base pattern defaults to grok-2 'grok-beta': { prompt: 5.0, completion: 15.0 }, @@ -331,8 +332,10 @@ const cacheTokenValues = { 'kimi-k2-0711-preview': { write: 0.6, read: 0.15 }, 'kimi-k2-thinking': { write: 0.6, read: 0.15 }, 'kimi-k2-thinking-turbo': { write: 1.15, read: 0.15 }, - // Gemini 3.1 models - cache read: $0.20/1M (<=200k), cache write: standard input price + // Gemini 3.1 Pro - cache write: $2.00/1M, cache read: $0.20/1M 'gemini-3.1': { write: 2, read: 0.2 }, + // Gemini 3.1 Flash-Lite - cache write: $0.25/1M, cache read: $0.025/1M + 'gemini-3.1-flash-lite': { write: 0.25, read: 0.025 }, }; /** diff --git a/api/models/tx.spec.js b/api/models/tx.spec.js index b58afa9c70..b5c6d1714e 100644 --- a/api/models/tx.spec.js +++ b/api/models/tx.spec.js @@ -1347,6 +1347,7 @@ describe('Google Model Tests', () => { 'gemini-3', 'gemini-3.1-pro-preview', 'gemini-3.1-pro-preview-customtools', + 'gemini-3.1-flash-lite-preview', 'gemini-2.5-pro', 'gemini-2.5-flash', 'gemini-2.5-flash-lite', @@ -1393,6 +1394,7 @@ describe('Google Model Tests', () => { 'gemini-3': 'gemini-3', 'gemini-3.1-pro-preview': 'gemini-3.1', 'gemini-3.1-pro-preview-customtools': 'gemini-3.1', + 'gemini-3.1-flash-lite-preview': 'gemini-3.1-flash-lite', 'gemini-2.5-pro': 'gemini-2.5-pro', 'gemini-2.5-flash': 'gemini-2.5-flash', 'gemini-2.5-flash-lite': 'gemini-2.5-flash-lite', @@ -1478,6 +1480,22 @@ describe('Google Model Tests', () => { ); }); }); + + it('should return correct rates for Gemini 3.1 Flash-Lite', () => { + const model = 'gemini-3.1-flash-lite-preview'; + expect(getMultiplier({ model, tokenType: 'prompt', endpoint: EModelEndpoint.google })).toBe( + tokenValues['gemini-3.1-flash-lite'].prompt, + ); + expect(getMultiplier({ model, tokenType: 'completion', endpoint: EModelEndpoint.google })).toBe( + tokenValues['gemini-3.1-flash-lite'].completion, + ); + expect(getCacheMultiplier({ model, cacheType: 'write' })).toBe( + cacheTokenValues['gemini-3.1-flash-lite'].write, + ); + expect(getCacheMultiplier({ model, cacheType: 'read' })).toBe( + cacheTokenValues['gemini-3.1-flash-lite'].read, + ); + }); }); describe('Gemini 3.1 Premium Token Pricing', () => { diff --git a/packages/api/src/utils/tokens.ts b/packages/api/src/utils/tokens.ts index faeb8f0f90..b515ed8f75 100644 --- a/packages/api/src/utils/tokens.ts +++ b/packages/api/src/utils/tokens.ts @@ -107,6 +107,7 @@ const googleModels = { 'gemini-3': 1000000, // 1M input tokens, 64k output tokens 'gemini-3-pro-image': 1000000, 'gemini-3.1': 1000000, // 1M input tokens, 64k output tokens + 'gemini-3.1-flash-lite': 1000000, // 1M input tokens, 64k output tokens 'gemini-2.5': 1000000, // 1M input tokens, 64k output tokens 'gemini-2.5-pro': 1000000, 'gemini-2.5-flash': 1000000, diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index 4a51844fb8..48d5409962 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -1196,6 +1196,7 @@ export const defaultModels = { // Gemini 3.1 Models 'gemini-3.1-pro-preview', 'gemini-3.1-pro-preview-customtools', + 'gemini-3.1-flash-lite-preview', // Gemini 3 Models 'gemini-3-pro-preview', 'gemini-3-flash-preview',