| package model
|
|
|
| import (
|
| "strings"
|
| )
|
|
|
|
|
| var defaultVendorRules = map[string]string{
|
| "gpt": "OpenAI",
|
| "dall-e": "OpenAI",
|
| "whisper": "OpenAI",
|
| "o1": "OpenAI",
|
| "o3": "OpenAI",
|
| "claude": "Anthropic",
|
| "gemini": "Google",
|
| "moonshot": "Moonshot",
|
| "kimi": "Moonshot",
|
| "chatglm": "智谱",
|
| "glm-": "智谱",
|
| "qwen": "阿里巴巴",
|
| "deepseek": "DeepSeek",
|
| "abab": "MiniMax",
|
| "ernie": "百度",
|
| "spark": "讯飞",
|
| "hunyuan": "腾讯",
|
| "command": "Cohere",
|
| "@cf/": "Cloudflare",
|
| "360": "360",
|
| "yi": "零一万物",
|
| "jina": "Jina",
|
| "mistral": "Mistral",
|
| "grok": "xAI",
|
| "llama": "Meta",
|
| "doubao": "字节跳动",
|
| "kling": "快手",
|
| "jimeng": "即梦",
|
| "vidu": "Vidu",
|
| }
|
|
|
|
|
| var defaultVendorIcons = map[string]string{
|
| "OpenAI": "OpenAI",
|
| "Anthropic": "Claude.Color",
|
| "Google": "Gemini.Color",
|
| "Moonshot": "Moonshot",
|
| "智谱": "Zhipu.Color",
|
| "阿里巴巴": "Qwen.Color",
|
| "DeepSeek": "DeepSeek.Color",
|
| "MiniMax": "Minimax.Color",
|
| "百度": "Wenxin.Color",
|
| "讯飞": "Spark.Color",
|
| "腾讯": "Hunyuan.Color",
|
| "Cohere": "Cohere.Color",
|
| "Cloudflare": "Cloudflare.Color",
|
| "360": "Ai360.Color",
|
| "零一万物": "Yi.Color",
|
| "Jina": "Jina",
|
| "Mistral": "Mistral.Color",
|
| "xAI": "XAI",
|
| "Meta": "Ollama",
|
| "字节跳动": "Doubao.Color",
|
| "快手": "Kling.Color",
|
| "即梦": "Jimeng.Color",
|
| "Vidu": "Vidu",
|
| "微软": "AzureAI",
|
| "Microsoft": "AzureAI",
|
| "Azure": "AzureAI",
|
| }
|
|
|
|
|
| func initDefaultVendorMapping(metaMap map[string]*Model, vendorMap map[int]*Vendor, enableAbilities []AbilityWithChannel) {
|
| for _, ability := range enableAbilities {
|
| modelName := ability.Model
|
| if _, exists := metaMap[modelName]; exists {
|
| continue
|
| }
|
|
|
|
|
| vendorID := 0
|
| modelLower := strings.ToLower(modelName)
|
| for pattern, vendorName := range defaultVendorRules {
|
| if strings.Contains(modelLower, pattern) {
|
| vendorID = getOrCreateVendor(vendorName, vendorMap)
|
| break
|
| }
|
| }
|
|
|
|
|
| metaMap[modelName] = &Model{
|
| ModelName: modelName,
|
| VendorID: vendorID,
|
| Status: 1,
|
| NameRule: NameRuleExact,
|
| }
|
| }
|
| }
|
|
|
|
|
| func getOrCreateVendor(vendorName string, vendorMap map[int]*Vendor) int {
|
|
|
| for id, vendor := range vendorMap {
|
| if vendor.Name == vendorName {
|
| return id
|
| }
|
| }
|
|
|
|
|
| newVendor := &Vendor{
|
| Name: vendorName,
|
| Status: 1,
|
| Icon: getDefaultVendorIcon(vendorName),
|
| }
|
|
|
| if err := newVendor.Insert(); err != nil {
|
| return 0
|
| }
|
|
|
| vendorMap[newVendor.Id] = newVendor
|
| return newVendor.Id
|
| }
|
|
|
|
|
| func getDefaultVendorIcon(vendorName string) string {
|
| if icon, exists := defaultVendorIcons[vendorName]; exists {
|
| return icon
|
| }
|
| return ""
|
| }
|
|
|