| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- 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",
- }
- // 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,
- 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 ""
- }
|