chore: migrate to gemini-3.1-flash-lite GA model

The Gemini 3.1 Flash Lite preview model is being discontinued on
May 25, 2026. Per Google's GA announcement, the underlying model
architecture is identical and only the model identifier needs to
be updated from `gemini-3.1-flash-lite-preview` to
`gemini-3.1-flash-lite`.

Also relaxes the `_require_gemini_31_preview` guard to accept any
`gemini-3.1-*` identifier (renamed to `_require_gemini_31`), so the
GA name and the still-preview `gemini-3.1-pro-preview` both pass.
This commit is contained in:
Jeffrey Sperling
2026-05-12 10:50:35 -07:00
committed by Trevin Chow
parent 602de1ebda
commit 96a4a78faa
7 changed files with 21 additions and 21 deletions
@@ -43,7 +43,7 @@ def _load_default_topics() -> list[tuple[str, str]]:
DEFAULT_TOPICS = _load_default_topics()
DEFAULT_SEARCH = ""
DEFAULT_JUDGE_MODEL = "gemini-3.1-flash-lite-preview"
DEFAULT_JUDGE_MODEL = "gemini-3.1-flash-lite"
GEMINI_API_URL = "https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent?key={api_key}"
+6 -6
View File
@@ -9,7 +9,7 @@ from typing import Any
from . import env, http, schema
GEMINI_FLASH_LITE = "gemini-3.1-flash-lite-preview"
GEMINI_FLASH_LITE = "gemini-3.1-flash-lite"
GEMINI_PRO = "gemini-3.1-pro-preview"
OPENAI_DEFAULT = "gpt-5.4-nano"
XAI_DEFAULT = "grok-4-1-fast"
@@ -232,8 +232,8 @@ def _resolve_model_pins(config: dict[str, Any], depth: str, provider_name: str)
rerank_model = config.get("LAST30DAYS_RERANK_MODEL") or default_rerank
if provider_name == "gemini":
_require_gemini_31_preview(planner_model, role="planner")
_require_gemini_31_preview(rerank_model, role="rerank")
_require_gemini_31(planner_model, role="planner")
_require_gemini_31(rerank_model, role="rerank")
return planner_model, rerank_model
@@ -344,11 +344,11 @@ def _resolve_x_backend(config: dict[str, Any]) -> str | None:
return env.get_x_source(config)
def _require_gemini_31_preview(model: str, *, role: str) -> None:
if model.startswith("gemini-3.1-") and model.endswith("-preview"):
def _require_gemini_31(model: str, *, role: str) -> None:
if model.startswith("gemini-3.1-"):
return
raise RuntimeError(
f"{role} must use a Gemini 3.1 preview model. Got: {model}"
f"{role} must use a Gemini 3.1 model. Got: {model}"
)
+2 -2
View File
@@ -27,8 +27,8 @@ class CliV3Tests(unittest.TestCase):
generated_at="2026-03-16T00:00:00+00:00",
provider_runtime=schema.ProviderRuntime(
reasoning_provider="gemini",
planner_model="gemini-3.1-flash-lite-preview",
rerank_model="gemini-3.1-flash-lite-preview",
planner_model="gemini-3.1-flash-lite",
rerank_model="gemini-3.1-flash-lite",
),
query_plan=schema.QueryPlan(
intent="comparison",
+2 -2
View File
@@ -125,7 +125,7 @@ class EvaluatorV3Tests(unittest.TestCase):
topic="test topic",
query_type="general",
items=[{"key": "a"}],
judge_model="gemini-3.1-flash-lite-preview",
judge_model="gemini-3.1-flash-lite",
gemini_api_key="key",
)
self.assertEqual({"a": 3}, cached)
@@ -136,7 +136,7 @@ class EvaluatorV3Tests(unittest.TestCase):
topic="test topic",
query_type="general",
items=[],
judge_model="gemini-3.1-flash-lite-preview",
judge_model="gemini-3.1-flash-lite",
gemini_api_key=None,
)
self.assertEqual({}, skipped)
+6 -6
View File
@@ -70,8 +70,8 @@ def sample_report() -> schema.Report:
generated_at="2026-03-16T00:00:00+00:00",
provider_runtime=schema.ProviderRuntime(
reasoning_provider="gemini",
planner_model="gemini-3.1-flash-lite-preview",
rerank_model="gemini-3.1-flash-lite-preview",
planner_model="gemini-3.1-flash-lite",
rerank_model="gemini-3.1-flash-lite",
),
query_plan=schema.QueryPlan(
intent="breaking_news",
@@ -239,8 +239,8 @@ class RenderTopCommentsTests(unittest.TestCase):
generated_at="2026-03-16T00:00:00+00:00",
provider_runtime=schema.ProviderRuntime(
reasoning_provider="gemini",
planner_model="gemini-3.1-flash-lite-preview",
rerank_model="gemini-3.1-flash-lite-preview",
planner_model="gemini-3.1-flash-lite",
rerank_model="gemini-3.1-flash-lite",
),
query_plan=schema.QueryPlan(
intent="breaking_news",
@@ -424,8 +424,8 @@ class RenderBestTakesCompactTests(unittest.TestCase):
generated_at="2026-03-16T00:00:00+00:00",
provider_runtime=schema.ProviderRuntime(
reasoning_provider="gemini",
planner_model="gemini-3.1-flash-lite-preview",
rerank_model="gemini-3.1-flash-lite-preview",
planner_model="gemini-3.1-flash-lite",
rerank_model="gemini-3.1-flash-lite",
),
query_plan=schema.QueryPlan(
intent="breaking_news",
+2 -2
View File
@@ -172,10 +172,10 @@ class RerankV3Tests(unittest.TestCase):
plan=make_plan(),
candidates=[first, second],
provider=provider,
model="gemini-3.1-flash-lite-preview",
model="gemini-3.1-flash-lite",
shortlist_size=1,
)
self.assertEqual("gemini-3.1-flash-lite-preview", provider.model)
self.assertEqual("gemini-3.1-flash-lite", provider.model)
self.assertEqual(95.0, first.rerank_score)
self.assertEqual("high fit", first.explanation)
# Tail is scored via the fallback (may or may not carry the entity-miss
+2 -2
View File
@@ -16,8 +16,8 @@ class SchemaV3Tests(unittest.TestCase):
generated_at="2026-03-16T00:00:00+00:00",
provider_runtime=schema.ProviderRuntime(
reasoning_provider="gemini",
planner_model="gemini-3.1-flash-lite-preview",
rerank_model="gemini-3.1-flash-lite-preview",
planner_model="gemini-3.1-flash-lite",
rerank_model="gemini-3.1-flash-lite",
),
query_plan=schema.QueryPlan(
intent="breaking_news",