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 <noreply@anthropic.com>
This commit is contained in:
wsb1224 2026-07-24 15:59:22 +08:00
parent cecf908153
commit 13f7623cb5

View File

@ -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: