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", } // initDefaultVendorMapping 简化的默认供应商映射 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, } if err := newVendor.Insert(); err != nil { return 0 } vendorMap[newVendor.Id] = newVendor return newVendor.Id }