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:
parent
cecf908153
commit
13f7623cb5
@ -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:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user