Files
comfyui_o1key/utils/nano_banana_models.py
T
Jony ba920f2b66 Publish current ComfyUI O1Key code baseline
Replace the prior release tree with the current plugin, frontend, tests, and documentation. Document retired node IDs and the public Gitea update source.
2026-09-24 19:56:48 +08:00

50 lines
1.9 KiB
Python

"""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