pricing_default.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package model
  2. import (
  3. "strings"
  4. )
  5. // 简化的供应商映射规则
  6. var defaultVendorRules = map[string]string{
  7. "gpt": "OpenAI",
  8. "dall-e": "OpenAI",
  9. "whisper": "OpenAI",
  10. "o1": "OpenAI",
  11. "o3": "OpenAI",
  12. "claude": "Anthropic",
  13. "gemini": "Google",
  14. "moonshot": "Moonshot",
  15. "kimi": "Moonshot",
  16. "chatglm": "智谱",
  17. "glm-": "智谱",
  18. "qwen": "阿里巴巴",
  19. "deepseek": "DeepSeek",
  20. "abab": "MiniMax",
  21. "ernie": "百度",
  22. "spark": "讯飞",
  23. "hunyuan": "腾讯",
  24. "command": "Cohere",
  25. "@cf/": "Cloudflare",
  26. "360": "360",
  27. "yi": "零一万物",
  28. "jina": "Jina",
  29. "mistral": "Mistral",
  30. "grok": "xAI",
  31. "llama": "Meta",
  32. "doubao": "字节跳动",
  33. "kling": "快手",
  34. "jimeng": "即梦",
  35. "vidu": "Vidu",
  36. }
  37. // 供应商默认图标映射
  38. var defaultVendorIcons = map[string]string{
  39. "OpenAI": "OpenAI",
  40. "Anthropic": "Claude.Color",
  41. "Google": "Gemini.Color",
  42. "Moonshot": "Moonshot",
  43. "智谱": "Zhipu.Color",
  44. "阿里巴巴": "Qwen.Color",
  45. "DeepSeek": "DeepSeek.Color",
  46. "MiniMax": "Minimax.Color",
  47. "百度": "Wenxin.Color",
  48. "讯飞": "Spark.Color",
  49. "腾讯": "Hunyuan.Color",
  50. "Cohere": "Cohere.Color",
  51. "Cloudflare": "Cloudflare.Color",
  52. "360": "Ai360.Color",
  53. "零一万物": "Yi.Color",
  54. "Jina": "Jina",
  55. "Mistral": "Mistral.Color",
  56. "xAI": "XAI",
  57. "Meta": "Ollama",
  58. "字节跳动": "Doubao.Color",
  59. "快手": "Kling.Color",
  60. "即梦": "Jimeng.Color",
  61. "Vidu": "Vidu",
  62. "微软": "AzureAI",
  63. "Microsoft": "AzureAI",
  64. "Azure": "AzureAI",
  65. }
  66. // initDefaultVendorMapping 简化的默认供应商映射
  67. func initDefaultVendorMapping(metaMap map[string]*Model, vendorMap map[int]*Vendor, enableAbilities []AbilityWithChannel) {
  68. for _, ability := range enableAbilities {
  69. modelName := ability.Model
  70. if _, exists := metaMap[modelName]; exists {
  71. continue
  72. }
  73. // 匹配供应商
  74. vendorID := 0
  75. modelLower := strings.ToLower(modelName)
  76. for pattern, vendorName := range defaultVendorRules {
  77. if strings.Contains(modelLower, pattern) {
  78. vendorID = getOrCreateVendor(vendorName, vendorMap)
  79. break
  80. }
  81. }
  82. // 创建模型元数据
  83. metaMap[modelName] = &Model{
  84. ModelName: modelName,
  85. VendorID: vendorID,
  86. Status: 1,
  87. NameRule: NameRuleExact,
  88. }
  89. }
  90. }
  91. // 查找或创建供应商
  92. func getOrCreateVendor(vendorName string, vendorMap map[int]*Vendor) int {
  93. // 查找现有供应商
  94. for id, vendor := range vendorMap {
  95. if vendor.Name == vendorName {
  96. return id
  97. }
  98. }
  99. // 创建新供应商
  100. newVendor := &Vendor{
  101. Name: vendorName,
  102. Status: 1,
  103. Icon: getDefaultVendorIcon(vendorName),
  104. }
  105. if err := newVendor.Insert(); err != nil {
  106. return 0
  107. }
  108. vendorMap[newVendor.Id] = newVendor
  109. return newVendor.Id
  110. }
  111. // 获取供应商默认图标
  112. func getDefaultVendorIcon(vendorName string) string {
  113. if icon, exists := defaultVendorIcons[vendorName]; exists {
  114. return icon
  115. }
  116. return ""
  117. }