From 13f7623cb516a4320d05eaa974bd24b5e150c860 Mon Sep 17 00:00:00 2001 From: wsb1224 Date: Fri, 24 Jul 2026 15:59:22 +0800 Subject: [PATCH] fix: infer model brand name from model prefix instead of provider identifier All Dify models use openai_api_compatible as provider_name, causing the frontend to display 'openai_api_compatible' for every model. Now infers brand (DeepSeek, OpenAI, Google, etc.) from model name prefix to match Dify admin panel display. Co-Authored-By: Claude Fable 5 --- api/insurance/admin/ppt_admin_service.py | 29 ++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/api/insurance/admin/ppt_admin_service.py b/api/insurance/admin/ppt_admin_service.py index 6cec844..c738f8b 100644 --- a/api/insurance/admin/ppt_admin_service.py +++ b/api/insurance/admin/ppt_admin_service.py @@ -496,6 +496,28 @@ class PptAdminService: return {"code": 0, "data": {"models": dify_models, "source": "dify"}} return {"code": 0, "data": {"models": self._BUILTIN_MODELS, "source": "builtin"}} + # 模型名前缀 → 品牌名映射(Dify 用 openai_api_compatible 统一接口,需要从模型名推断品牌) + _MODEL_BRAND_MAP = { + "deepseek": "DeepSeek", + "gpt": "OpenAI", + "o1": "OpenAI", + "o3": "OpenAI", + "o4": "OpenAI", + "claude": "Anthropic", + "gemini": "Google", + "qwen": "通义千问", + "glm": "智谱", + "MiniMax": "MiniMax", + "moonshot": "月之暗面", + } + + def _infer_brand(self, model_name: str) -> str: + """从模型名推断品牌名。""" + for prefix, brand in self._MODEL_BRAND_MAP.items(): + if model_name.lower().startswith(prefix.lower()): + return brand + return "其他" + def _fetch_dify_models(self) -> list | None: """从 Dify 数据库直接查询已配置的 LLM 模型列表。""" try: @@ -511,12 +533,11 @@ class PptAdminService: for row in rows: model_name = row[0] provider_name = row[1] - # 从插件标识中提取简短供应商名 - short_provider = provider_name.split("/")[-1] if "/" in provider_name else provider_name + brand = self._infer_brand(model_name) models.append({ - "provider": short_provider, + "provider": brand, "model": model_name, - "label": f"{model_name}", + "label": f"{brand} / {model_name}", }) return models except Exception as e: