From bbccc815de786587f7dedd22ab83d164f13e5413 Mon Sep 17 00:00:00 2001 From: Aniket Dixit Date: Wed, 22 Jul 2026 15:12:38 +0530 Subject: [PATCH] gemini model updates --- CLAUDE.md | 2 +- README.md | 2 +- tee_gateway/model_registry.py | 22 ++++++++++++++-------- tests/test_pricing.py | 34 +++++++++++++++++++++------------- 4 files changed, 37 insertions(+), 23 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 2325858..c3b6193 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -116,7 +116,7 @@ Server configuration: Model name prefixes determine routing: - **OpenAI**: gpt-4.1, gpt-5, gpt-5-mini, gpt-5.2, gpt-5.6-sol/terra/luna, o4-mini; image generation: gpt-image-2 - **Anthropic**: claude-sonnet-4-0/4-5/4-6, claude-sonnet-5, claude-haiku-4-5, claude-opus-4-5/4-6/4-7/4-8, claude-fable-5, claude-3-7-sonnet, claude-3-5-haiku -- **Google**: gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.5-pro, gemini-3-pro-preview, gemini-3-flash-preview, gemini-3.1-pro-preview, gemini-3.1-flash-lite-preview, gemini-3.5-flash; image generation: gemini-2.5-flash-image, gemini-3.1-flash-image +- **Google**: gemini-3.6-flash, gemini-3.5-flash-lite, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.5-pro, gemini-3-pro-preview, gemini-3-flash-preview, gemini-3.1-pro-preview, gemini-3.5-flash; image generation: gemini-2.5-flash-image, gemini-3.1-flash-image - **xAI**: grok-2, grok-3, grok-3-mini, grok-4, grok-4.3, grok-4.5, grok-4-fast, grok-4-1-fast; image generation: grok-2-image - **ByteDance** (BytePlus ModelArk, OpenAI-compatible, ap-southeast): seed-1.6, seed-1.8, seed-2.0-lite, deepseek-v4-flash, deepseek-v4-pro; image generation: seedream-4.0, seedream-5.0-lite, seedance-4.5 - **Nous Research** (Nous Portal, OpenAI-compatible): hermes-4-405b, hermes-4-70b diff --git a/README.md b/README.md index f861307..edd8728 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ The gateway solves this by running inside a hardware-isolated Nitro Enclave wher |----------|--------| | OpenAI | gpt-4.1, gpt-5, gpt-5-mini, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, o4-mini | | Anthropic | claude-sonnet-4-5, claude-sonnet-4-6, claude-haiku-4-5, claude-opus-4-5, claude-opus-4-6 | -| Google | gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.5-pro, gemini-3-pro-preview, gemini-3-flash-preview | +| Google | gemini-3.6-flash, gemini-3.5-flash-lite, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.5-pro, gemini-3-pro-preview, gemini-3-flash-preview | | xAI | grok-4.5, grok-4.3, grok-4, grok-4-fast, grok-4-1-fast, grok-4-1-fast-non-reasoning | | ByteDance | seed-1.6, seed-1.8, seed-2.0-lite, deepseek-v4-flash, deepseek-v4-pro | diff --git a/tee_gateway/model_registry.py b/tee_gateway/model_registry.py index ae6c51f..9e3d208 100644 --- a/tee_gateway/model_registry.py +++ b/tee_gateway/model_registry.py @@ -324,13 +324,6 @@ class SupportedModel(Enum): output_price_usd=Decimal("0.000012"), thinking_budget=128, ) - GEMINI_3_1_FLASH_LITE_PREVIEW = ModelConfig( - provider="google", - api_name="gemini-3.1-flash-lite-preview", - input_price_usd=Decimal("0.00000025"), - output_price_usd=Decimal("0.0000015"), - thinking_budget=0, - ) # Native image generation ("nano banana"). Google bills output at two rates: # text/thinking at $1.50/MTok and images at $30/MTok (~1290 tokens per # 1024x1024 image ≈ $0.039/image); input (text/image) is $0.30/MTok. @@ -360,6 +353,18 @@ class SupportedModel(Enum): input_price_usd=Decimal("0.0000015"), output_price_usd=Decimal("0.000009"), ) + GEMINI_3_5_FLASH_LITE = ModelConfig( + provider="google", + api_name="gemini-3.5-flash-lite", + input_price_usd=Decimal("0.0000003"), + output_price_usd=Decimal("0.0000025"), + ) + GEMINI_3_6_FLASH = ModelConfig( + provider="google", + api_name="gemini-3.6-flash", + input_price_usd=Decimal("0.0000015"), + output_price_usd=Decimal("0.0000075"), + ) # ── xAI Grok ──────────────────────────────────────────────────────── GROK_4_5 = ModelConfig( @@ -610,10 +615,11 @@ class SupportedModel(Enum): "gemini-2.5-flash-lite": SupportedModel.GEMINI_2_5_FLASH_LITE, "gemini-3-flash-preview": SupportedModel.GEMINI_3_FLASH_PREVIEW, "gemini-3.1-pro-preview": SupportedModel.GEMINI_3_1_PRO_PREVIEW, - "gemini-3.1-flash-lite-preview": SupportedModel.GEMINI_3_1_FLASH_LITE_PREVIEW, "gemini-2.5-flash-image": SupportedModel.GEMINI_2_5_FLASH_IMAGE, "gemini-3.1-flash-image": SupportedModel.GEMINI_3_1_FLASH_IMAGE, "gemini-3.5-flash": SupportedModel.GEMINI_3_5_FLASH, + "gemini-3.5-flash-lite": SupportedModel.GEMINI_3_5_FLASH_LITE, + "gemini-3.6-flash": SupportedModel.GEMINI_3_6_FLASH, # xAI "grok-4.5": SupportedModel.GROK_4_5, "grok-4.5-latest": SupportedModel.GROK_4_5, diff --git a/tests/test_pricing.py b/tests/test_pricing.py index 89d9136..fcaa1da 100644 --- a/tests/test_pricing.py +++ b/tests/test_pricing.py @@ -262,19 +262,24 @@ def test_gemini_3_1_pro_preview_resolves(self): self.assertEqual(cfg.output_price_usd, Decimal("0.000012")) self.assertEqual(cfg.thinking_budget, 128) - def test_gemini_3_1_flash_lite_preview_resolves(self): - cfg = get_model_config("gemini-3.1-flash-lite-preview") - self.assertEqual(cfg.provider, "google") - self.assertEqual(cfg.input_price_usd, Decimal("0.00000025")) - self.assertEqual(cfg.output_price_usd, Decimal("0.0000015")) - self.assertEqual(cfg.thinking_budget, 0) - def test_gemini_3_5_flash_resolves(self): cfg = get_model_config("gemini-3.5-flash") self.assertEqual(cfg.provider, "google") self.assertEqual(cfg.input_price_usd, Decimal("0.0000015")) self.assertEqual(cfg.output_price_usd, Decimal("0.000009")) + def test_gemini_3_5_flash_lite_resolves(self): + cfg = get_model_config("gemini-3.5-flash-lite") + self.assertEqual(cfg.provider, "google") + self.assertEqual(cfg.input_price_usd, Decimal("0.0000003")) + self.assertEqual(cfg.output_price_usd, Decimal("0.0000025")) + + def test_gemini_3_6_flash_resolves(self): + cfg = get_model_config("gemini-3.6-flash") + self.assertEqual(cfg.provider, "google") + self.assertEqual(cfg.input_price_usd, Decimal("0.0000015")) + self.assertEqual(cfg.output_price_usd, Decimal("0.0000075")) + def test_gemini_3_1_flash_image_resolves(self): cfg = get_model_config("gemini-3.1-flash-image") self.assertEqual(cfg.provider, "google") @@ -657,12 +662,15 @@ def test_gemini_3_1_pro_preview_cost(self): # 1000*0.000002 + 500*0.000012 = 0.002 + 0.006 = 0.008 USD = 8e15 wei self.assertEqual(cost, 8_000_000_000_000_000) - def test_gemini_3_1_flash_lite_preview_cost(self): - cost = self._calc("gemini-3.1-flash-lite-preview", 1000, 500) - expected = _expected_cost_opg("gemini-3.1-flash-lite-preview", 1000, 500) - self.assertEqual(cost, expected) - # 1000*0.00000025 + 500*0.0000015 = 0.00025 + 0.00075 = 0.001 USD = 1e15 wei - self.assertEqual(cost, 1_000_000_000_000_000) + def test_gemini_3_5_flash_lite_cost(self): + cost = self._calc("gemini-3.5-flash-lite", 1000, 500) + self.assertEqual(cost, _expected_cost_opg("gemini-3.5-flash-lite", 1000, 500)) + self.assertEqual(cost, 1_550_000_000_000_000) + + def test_gemini_3_6_flash_cost(self): + cost = self._calc("gemini-3.6-flash", 1000, 500) + self.assertEqual(cost, _expected_cost_opg("gemini-3.6-flash", 1000, 500)) + self.assertEqual(cost, 5_250_000_000_000_000) # ── xAI Grok ────────────────────────────────────────────────────────────