mirror of
https://github.com/Sea-Haven-Industries/open-swe.git
synced 2026-09-30 10:23:14 +00:00
feat: add Gemini 3.5 Flash provider (#1420)
This commit is contained in:
parent
6f330f777d
commit
f1baceb8ab
3 changed files with 46 additions and 3 deletions
|
|
@ -25,6 +25,12 @@ SUPPORTED_MODELS: list[ModelOption] = [
|
|||
"efforts": ["none", "low", "medium", "high", "xhigh"],
|
||||
"default_effort": "xhigh",
|
||||
},
|
||||
{
|
||||
"id": "google_genai:gemini-3.5-flash",
|
||||
"label": "Gemini 3.5 Flash",
|
||||
"efforts": ["minimal", "low", "medium", "high"],
|
||||
"default_effort": "medium",
|
||||
},
|
||||
{
|
||||
"id": "fireworks:accounts/fireworks/models/kimi-k2p6",
|
||||
"label": "Kimi K2.6",
|
||||
|
|
@ -63,6 +69,20 @@ def _provider_of(model_id: str) -> str | None:
|
|||
return provider if rest else None
|
||||
|
||||
|
||||
def _fallback_effort_for(model: ModelOption, effort: object) -> str | None:
|
||||
if not isinstance(effort, str):
|
||||
return None
|
||||
if effort in model["efforts"]:
|
||||
return effort
|
||||
if (
|
||||
model["id"].startswith("google_genai:")
|
||||
and effort == "none"
|
||||
and "minimal" in model["efforts"]
|
||||
):
|
||||
return "minimal"
|
||||
return None
|
||||
|
||||
|
||||
def provider_fallback_pair(model_id: object, effort: object = None) -> tuple[str, str] | None:
|
||||
"""Newest supported ``(model_id, effort)`` for the same provider as ``model_id``.
|
||||
|
||||
|
|
@ -79,8 +99,7 @@ def provider_fallback_pair(model_id: object, effort: object = None) -> tuple[str
|
|||
return None
|
||||
for m in SUPPORTED_MODELS:
|
||||
if _provider_of(m["id"]) == provider:
|
||||
new_effort = effort if (isinstance(effort, str) and effort in m["efforts"]) else None
|
||||
return m["id"], new_effort or m["default_effort"]
|
||||
return m["id"], _fallback_effort_for(m, effort) or m["default_effort"]
|
||||
return None
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ def fireworks_reasoning_effort_for(profile_effort: str | None) -> FireworksReaso
|
|||
|
||||
def google_thinking_level_for(profile_effort: str | None) -> GoogleThinkingLevel | None:
|
||||
"""Map profile effort to Gemini 3+ ``thinking_level``."""
|
||||
if profile_effort == "none":
|
||||
if profile_effort in ("minimal", "none"):
|
||||
return "minimal"
|
||||
if profile_effort == "low":
|
||||
return "low"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
from agent.dashboard.options import SUPPORTED_MODELS, provider_fallback_pair
|
||||
from agent.utils.model import (
|
||||
google_thinking_level_for,
|
||||
is_gemini_3_family,
|
||||
|
|
@ -11,11 +12,34 @@ def test_gemini_3_family_detection() -> None:
|
|||
|
||||
|
||||
def test_google_thinking_level_maps_effort() -> None:
|
||||
assert google_thinking_level_for("minimal") == "minimal"
|
||||
assert google_thinking_level_for("none") == "minimal"
|
||||
assert google_thinking_level_for("medium") == "medium"
|
||||
assert google_thinking_level_for("high") == "high"
|
||||
assert google_thinking_level_for("unknown") is None
|
||||
|
||||
|
||||
def test_gemini_35_flash_is_supported_with_documented_efforts() -> None:
|
||||
gemini = next(m for m in SUPPORTED_MODELS if m["id"] == "google_genai:gemini-3.5-flash")
|
||||
assert gemini["label"] == "Gemini 3.5 Flash"
|
||||
assert gemini["efforts"] == ["minimal", "low", "medium", "high"]
|
||||
assert gemini["default_effort"] == "medium"
|
||||
|
||||
|
||||
def test_google_provider_fallback_uses_gemini_35_flash() -> None:
|
||||
assert provider_fallback_pair("google_genai:gemini-3-flash-preview", "high") == (
|
||||
"google_genai:gemini-3.5-flash",
|
||||
"high",
|
||||
)
|
||||
|
||||
|
||||
def test_google_provider_fallback_maps_legacy_none_to_minimal() -> None:
|
||||
assert provider_fallback_pair("google_genai:gemini-3-flash-preview", "none") == (
|
||||
"google_genai:gemini-3.5-flash",
|
||||
"minimal",
|
||||
)
|
||||
|
||||
|
||||
def test_provider_model_kwargs_for_google() -> None:
|
||||
kwargs = provider_model_kwargs(
|
||||
"google_genai:gemini-3.5-flash",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue