|
|
@@ -0,0 +1,89 @@
|
|
|
+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
|
|
|
+}
|