| 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 "" |
| } |
|
|