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