Merge pull request #378 from j-sperling/chore/gemini-3.1-flash-lite-ga
chore: migrate to gemini-3.1-flash-lite GA model
This commit is contained in:
@@ -20,6 +20,7 @@ sys.path.insert(0, str(Path(__file__).parent))
|
|||||||
|
|
||||||
from lib import env as envlib
|
from lib import env as envlib
|
||||||
from lib import schema
|
from lib import schema
|
||||||
|
from lib.providers import GEMINI_FLASH_LITE
|
||||||
|
|
||||||
|
|
||||||
SKILL_ROOT = Path(__file__).resolve().parents[1]
|
SKILL_ROOT = Path(__file__).resolve().parents[1]
|
||||||
@@ -43,7 +44,7 @@ def _load_default_topics() -> list[tuple[str, str]]:
|
|||||||
|
|
||||||
DEFAULT_TOPICS = _load_default_topics()
|
DEFAULT_TOPICS = _load_default_topics()
|
||||||
DEFAULT_SEARCH = ""
|
DEFAULT_SEARCH = ""
|
||||||
DEFAULT_JUDGE_MODEL = "gemini-3.1-flash-lite-preview"
|
DEFAULT_JUDGE_MODEL = GEMINI_FLASH_LITE
|
||||||
GEMINI_API_URL = "https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent?key={api_key}"
|
GEMINI_API_URL = "https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent?key={api_key}"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from typing import Any
|
|||||||
|
|
||||||
from . import env, http, schema
|
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"
|
GEMINI_PRO = "gemini-3.1-pro-preview"
|
||||||
OPENAI_DEFAULT = "gpt-5.4-nano"
|
OPENAI_DEFAULT = "gpt-5.4-nano"
|
||||||
XAI_DEFAULT = "grok-4-1-fast"
|
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
|
rerank_model = config.get("LAST30DAYS_RERANK_MODEL") or default_rerank
|
||||||
|
|
||||||
if provider_name == "gemini":
|
if provider_name == "gemini":
|
||||||
_require_gemini_31_preview(planner_model, role="planner")
|
_require_gemini_31(planner_model, role="planner")
|
||||||
_require_gemini_31_preview(rerank_model, role="rerank")
|
_require_gemini_31(rerank_model, role="rerank")
|
||||||
|
|
||||||
return planner_model, rerank_model
|
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)
|
return env.get_x_source(config)
|
||||||
|
|
||||||
|
|
||||||
def _require_gemini_31_preview(model: str, *, role: str) -> None:
|
def _require_gemini_31(model: str, *, role: str) -> None:
|
||||||
if model.startswith("gemini-3.1-") and model.endswith("-preview"):
|
if model.startswith("gemini-3.1-"):
|
||||||
return
|
return
|
||||||
raise RuntimeError(
|
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}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ class CliV3Tests(unittest.TestCase):
|
|||||||
generated_at="2026-03-16T00:00:00+00:00",
|
generated_at="2026-03-16T00:00:00+00:00",
|
||||||
provider_runtime=schema.ProviderRuntime(
|
provider_runtime=schema.ProviderRuntime(
|
||||||
reasoning_provider="gemini",
|
reasoning_provider="gemini",
|
||||||
planner_model="gemini-3.1-flash-lite-preview",
|
planner_model="gemini-3.1-flash-lite",
|
||||||
rerank_model="gemini-3.1-flash-lite-preview",
|
rerank_model="gemini-3.1-flash-lite",
|
||||||
),
|
),
|
||||||
query_plan=schema.QueryPlan(
|
query_plan=schema.QueryPlan(
|
||||||
intent="comparison",
|
intent="comparison",
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ class EvaluatorV3Tests(unittest.TestCase):
|
|||||||
topic="test topic",
|
topic="test topic",
|
||||||
query_type="general",
|
query_type="general",
|
||||||
items=[{"key": "a"}],
|
items=[{"key": "a"}],
|
||||||
judge_model="gemini-3.1-flash-lite-preview",
|
judge_model="gemini-3.1-flash-lite",
|
||||||
gemini_api_key="key",
|
gemini_api_key="key",
|
||||||
)
|
)
|
||||||
self.assertEqual({"a": 3}, cached)
|
self.assertEqual({"a": 3}, cached)
|
||||||
@@ -136,7 +136,7 @@ class EvaluatorV3Tests(unittest.TestCase):
|
|||||||
topic="test topic",
|
topic="test topic",
|
||||||
query_type="general",
|
query_type="general",
|
||||||
items=[],
|
items=[],
|
||||||
judge_model="gemini-3.1-flash-lite-preview",
|
judge_model="gemini-3.1-flash-lite",
|
||||||
gemini_api_key=None,
|
gemini_api_key=None,
|
||||||
)
|
)
|
||||||
self.assertEqual({}, skipped)
|
self.assertEqual({}, skipped)
|
||||||
|
|||||||
@@ -70,8 +70,8 @@ def sample_report() -> schema.Report:
|
|||||||
generated_at="2026-03-16T00:00:00+00:00",
|
generated_at="2026-03-16T00:00:00+00:00",
|
||||||
provider_runtime=schema.ProviderRuntime(
|
provider_runtime=schema.ProviderRuntime(
|
||||||
reasoning_provider="gemini",
|
reasoning_provider="gemini",
|
||||||
planner_model="gemini-3.1-flash-lite-preview",
|
planner_model="gemini-3.1-flash-lite",
|
||||||
rerank_model="gemini-3.1-flash-lite-preview",
|
rerank_model="gemini-3.1-flash-lite",
|
||||||
),
|
),
|
||||||
query_plan=schema.QueryPlan(
|
query_plan=schema.QueryPlan(
|
||||||
intent="breaking_news",
|
intent="breaking_news",
|
||||||
@@ -239,8 +239,8 @@ class RenderTopCommentsTests(unittest.TestCase):
|
|||||||
generated_at="2026-03-16T00:00:00+00:00",
|
generated_at="2026-03-16T00:00:00+00:00",
|
||||||
provider_runtime=schema.ProviderRuntime(
|
provider_runtime=schema.ProviderRuntime(
|
||||||
reasoning_provider="gemini",
|
reasoning_provider="gemini",
|
||||||
planner_model="gemini-3.1-flash-lite-preview",
|
planner_model="gemini-3.1-flash-lite",
|
||||||
rerank_model="gemini-3.1-flash-lite-preview",
|
rerank_model="gemini-3.1-flash-lite",
|
||||||
),
|
),
|
||||||
query_plan=schema.QueryPlan(
|
query_plan=schema.QueryPlan(
|
||||||
intent="breaking_news",
|
intent="breaking_news",
|
||||||
@@ -424,8 +424,8 @@ class RenderBestTakesCompactTests(unittest.TestCase):
|
|||||||
generated_at="2026-03-16T00:00:00+00:00",
|
generated_at="2026-03-16T00:00:00+00:00",
|
||||||
provider_runtime=schema.ProviderRuntime(
|
provider_runtime=schema.ProviderRuntime(
|
||||||
reasoning_provider="gemini",
|
reasoning_provider="gemini",
|
||||||
planner_model="gemini-3.1-flash-lite-preview",
|
planner_model="gemini-3.1-flash-lite",
|
||||||
rerank_model="gemini-3.1-flash-lite-preview",
|
rerank_model="gemini-3.1-flash-lite",
|
||||||
),
|
),
|
||||||
query_plan=schema.QueryPlan(
|
query_plan=schema.QueryPlan(
|
||||||
intent="breaking_news",
|
intent="breaking_news",
|
||||||
|
|||||||
@@ -172,10 +172,10 @@ class RerankV3Tests(unittest.TestCase):
|
|||||||
plan=make_plan(),
|
plan=make_plan(),
|
||||||
candidates=[first, second],
|
candidates=[first, second],
|
||||||
provider=provider,
|
provider=provider,
|
||||||
model="gemini-3.1-flash-lite-preview",
|
model="gemini-3.1-flash-lite",
|
||||||
shortlist_size=1,
|
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(95.0, first.rerank_score)
|
||||||
self.assertEqual("high fit", first.explanation)
|
self.assertEqual("high fit", first.explanation)
|
||||||
# Tail is scored via the fallback (may or may not carry the entity-miss
|
# Tail is scored via the fallback (may or may not carry the entity-miss
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ class SchemaV3Tests(unittest.TestCase):
|
|||||||
generated_at="2026-03-16T00:00:00+00:00",
|
generated_at="2026-03-16T00:00:00+00:00",
|
||||||
provider_runtime=schema.ProviderRuntime(
|
provider_runtime=schema.ProviderRuntime(
|
||||||
reasoning_provider="gemini",
|
reasoning_provider="gemini",
|
||||||
planner_model="gemini-3.1-flash-lite-preview",
|
planner_model="gemini-3.1-flash-lite",
|
||||||
rerank_model="gemini-3.1-flash-lite-preview",
|
rerank_model="gemini-3.1-flash-lite",
|
||||||
),
|
),
|
||||||
query_plan=schema.QueryPlan(
|
query_plan=schema.QueryPlan(
|
||||||
intent="breaking_news",
|
intent="breaking_news",
|
||||||
|
|||||||
Reference in New Issue
Block a user