Spaces:
Sleeping
Sleeping
| """Model definitions and mapping from Gemini frontend JS source.""" | |
| # MODE_CATEGORY enum from 028-6eb337387583.js: | |
| # 1=FAST, 2=THINKING, 3=PRO, 4=AUTO, 5=FAST_DYNAMIC_THINKING, 6=FLASH_LITE | |
| MODELS = { | |
| "gemini-3.5-flash": { | |
| "mode": 1, "think": 4, | |
| "desc": "Fast general-purpose model", | |
| }, | |
| "gemini-3.5-flash-thinking": { | |
| "mode": 2, "think": 0, | |
| "desc": "Deep thinking mode, longest output (~20k chars)", | |
| }, | |
| "gemini-3.1-pro": { | |
| "mode": 3, "think": 4, | |
| "desc": "Pro model (requires cookie for real routing)", | |
| }, | |
| "gemini-3.1-pro-enhanced": { | |
| "mode": 3, "think": 4, "extra": {31: 2, 80: 3}, | |
| "desc": "Pro with enhanced output (experimental)", | |
| }, | |
| "gemini-auto": { | |
| "mode": 4, "think": 4, | |
| "desc": "Auto model selection", | |
| }, | |
| "gemini-3.5-flash-thinking-lite": { | |
| "mode": 5, "think": 0, | |
| "desc": "Dynamic thinking with adaptive depth", | |
| }, | |
| "gemini-flash-lite": { | |
| "mode": 6, "think": 4, | |
| "desc": "Lightweight fast model", | |
| }, | |
| } | |
| def resolve_model(model_name: str, default: str = "gemini-3.5-flash"): | |
| """Resolve model name to (name, mode_id, think_mode, error, extra_fields). | |
| Unknown model names fall back to default rather than erroring, | |
| since upstream clients may request arbitrary model identifiers. | |
| """ | |
| think_override = None | |
| if "@think=" in model_name: | |
| model_name, think_str = model_name.rsplit("@think=", 1) | |
| try: | |
| think_override = int(think_str) | |
| except ValueError: | |
| return None, None, None, f"Invalid think level: {think_str}", None | |
| cfg = MODELS.get(model_name) | |
| if not cfg: | |
| from .gemini import log | |
| log(f"Unknown model '{model_name}', falling back to '{default}'") | |
| model_name = default | |
| cfg = MODELS[default] | |
| mode_id = cfg["mode"] | |
| think_mode = think_override if think_override is not None else cfg["think"] | |
| extra = cfg.get("extra") | |
| return model_name, mode_id, think_mode, None, extra | |