"""Nano Banana 节点的展示模型、线路与 API 模型名映射。""" NANO_BANANA_MODEL_OPTIONS = [ "Nano Banana 2", "Nano Banana Pro", "Nano Banana 2 Lite", "Nano Banana", ] NANO_BANANA_ROUTE_OPTIONS = ["畅速", "直连", "专线"] NANO_BANANA_MODEL_MATRIX = { ("Nano Banana Pro", "畅速"): "gemini-3-pro-image-c-sp", ("Nano Banana 2", "畅速"): "gemini-3.1-flash-image-c-sp", ("Nano Banana 2 Lite", "畅速"): "gemini-3.1-flash-lite-image-c-sp", ("Nano Banana", "畅速"): "nano-banana", ("Nano Banana Pro", "直连"): "gemini-3-pro-image-c-sd", ("Nano Banana 2", "直连"): "gemini-3.1-flash-image-c-sd", ("Nano Banana 2 Lite", "直连"): "gemini-3.1-flash-lite-image-c-sd", ("Nano Banana", "直连"): "nano-banana", ("Nano Banana Pro", "专线"): "gemini-3-pro-image", ("Nano Banana 2", "专线"): "gemini-3.1-flash-image", ("Nano Banana 2 Lite", "专线"): "gemini-3.1-flash-lite-image", ("Nano Banana", "专线"): "gemini-2.5-flash-image", } _LEGACY_BILLING_ROUTE_MAP = { "特价": "畅速", "官方": "专线", } def normalize_nano_banana_route(route: str) -> str: """兼容旧“计费”值,并校验新模型线路。""" normalized = _LEGACY_BILLING_ROUTE_MAP.get(route, route) if normalized not in NANO_BANANA_ROUTE_OPTIONS: raise ValueError( f"模型线路 '{route}' 无效,支持的线路:{', '.join(NANO_BANANA_ROUTE_OPTIONS)}" ) return normalized def resolve_nano_banana_model(model_name: str, route: str) -> str: """由界面模型和模型线路解析实际 API 模型名。""" normalized_route = normalize_nano_banana_route(route) model = NANO_BANANA_MODEL_MATRIX.get((model_name, normalized_route)) if model is None: raise ValueError(f"模型 '{model_name}' 不支持模型线路 '{normalized_route}'") return model