diff --git a/apps/models_provider/base_model_provider.py b/apps/models_provider/base_model_provider.py index 7873f16b1fd..a11a31ec49c 100644 --- a/apps/models_provider/base_model_provider.py +++ b/apps/models_provider/base_model_provider.py @@ -67,6 +67,12 @@ def get_model_credential(self, model_type, model_name): api_base = model_credential.api_base if hasattr(api_base, "default_value") and not api_base.default_value: api_base.default_value = "https://dashscope.aliyuncs.com/api/v1" + # MiniMax H3 视频模型固定走 v2 API + if model_type in ("TTV", "ITV") and model_name.upper().startswith(("MiniMax-H3")): + if hasattr(model_credential, "api_base"): + api_base = model_credential.api_base + if hasattr(api_base, "default_value"): + api_base.default_value = "https://api.minimaxi.com/v2" return model_credential def get_model_params(self, model_type, model_name): diff --git a/apps/models_provider/impl/minimax_model_provider/model/ttv.py b/apps/models_provider/impl/minimax_model_provider/model/ttv.py index 29caf549aa6..7a01c5b8e36 100644 --- a/apps/models_provider/impl/minimax_model_provider/model/ttv.py +++ b/apps/models_provider/impl/minimax_model_provider/model/ttv.py @@ -15,7 +15,7 @@ class GenerationVideoModel(MaxKBBaseModel, BaseGenerationVideo): api_key: str api_base: str model_name: str - params: dict + params: dict = {} max_retries: int = 3 retry_delay: int = 10 # 秒 @@ -37,8 +37,6 @@ def __init__(self, **kwargs): self.params = kwargs.get("params", {}) or {} self.max_retries = kwargs.get("max_retries", 3) self.retry_delay = kwargs.get("retry_delay", 10) - # 显式参数可覆盖自动探测(params.api_version: 'v1' / 'v2') - self.api_version = self.params.get("api_version", "auto") self._session = self._build_session() @staticmethod @@ -73,13 +71,7 @@ def _build_session(self) -> requests.Session: # ---------- API 版本探测 / URL 构建 ---------- def _detect_api_version(self) -> str: - """探测当前使用 V1 还是 V2 (MiniMax-H3)。""" - if self.api_version in ("v1", "v2"): - return self.api_version - # 模型名包含 H3 -> V2 - if self.model_name and "H3" in self.model_name.upper(): - return "v2" - # api_base 路径包含 /v2 -> V2 + """根据 api_base 路径判断当前使用 V1 还是 V2 (MiniMax-H3)。""" base_path = self.api_base.split("://", 1)[-1] if "://" in self.api_base else self.api_base if "/v2" in base_path: return "v2" @@ -228,8 +220,8 @@ def _generate_video_v1(self, prompt, first_frame_url=None, last_frame_url=None, elif first_frame_url: payload["first_frame_image"] = first_frame_url - # 合并额外参数(duration, resolution 等),跳过版本探测专用字段 - payload.update({k: v for k, v in self.params.items() if k != "api_version"}) + # 合并额外参数(duration, resolution 等) + payload.update(self.params) maxkb_logger.info(f"提交视频生成任务(V1),模型: {self.model_name}") response_data = self._request("POST", base_url, json=payload)