Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

172 řádky
6.1 KiB

  1. package relay
  2. import (
  3. "strconv"
  4. "github.com/QuantumNous/new-api/constant"
  5. "github.com/QuantumNous/new-api/relay/channel"
  6. "github.com/QuantumNous/new-api/relay/channel/ali"
  7. "github.com/QuantumNous/new-api/relay/channel/aws"
  8. "github.com/QuantumNous/new-api/relay/channel/baidu"
  9. "github.com/QuantumNous/new-api/relay/channel/baidu_v2"
  10. "github.com/QuantumNous/new-api/relay/channel/claude"
  11. "github.com/QuantumNous/new-api/relay/channel/cloudflare"
  12. "github.com/QuantumNous/new-api/relay/channel/codex"
  13. "github.com/QuantumNous/new-api/relay/channel/cohere"
  14. "github.com/QuantumNous/new-api/relay/channel/coze"
  15. "github.com/QuantumNous/new-api/relay/channel/deepseek"
  16. "github.com/QuantumNous/new-api/relay/channel/dify"
  17. "github.com/QuantumNous/new-api/relay/channel/gemini"
  18. "github.com/QuantumNous/new-api/relay/channel/jimeng"
  19. "github.com/QuantumNous/new-api/relay/channel/jina"
  20. "github.com/QuantumNous/new-api/relay/channel/minimax"
  21. "github.com/QuantumNous/new-api/relay/channel/mistral"
  22. "github.com/QuantumNous/new-api/relay/channel/mokaai"
  23. "github.com/QuantumNous/new-api/relay/channel/moonshot"
  24. "github.com/QuantumNous/new-api/relay/channel/ollama"
  25. "github.com/QuantumNous/new-api/relay/channel/openai"
  26. "github.com/QuantumNous/new-api/relay/channel/palm"
  27. "github.com/QuantumNous/new-api/relay/channel/perplexity"
  28. "github.com/QuantumNous/new-api/relay/channel/replicate"
  29. "github.com/QuantumNous/new-api/relay/channel/siliconflow"
  30. "github.com/QuantumNous/new-api/relay/channel/submodel"
  31. taskali "github.com/QuantumNous/new-api/relay/channel/task/ali"
  32. taskdoubao "github.com/QuantumNous/new-api/relay/channel/task/doubao"
  33. taskdoubaoaiping "github.com/QuantumNous/new-api/relay/channel/task/doubao_aiping"
  34. taskGemini "github.com/QuantumNous/new-api/relay/channel/task/gemini"
  35. "github.com/QuantumNous/new-api/relay/channel/task/hailuo"
  36. taskjimeng "github.com/QuantumNous/new-api/relay/channel/task/jimeng"
  37. "github.com/QuantumNous/new-api/relay/channel/task/kling"
  38. klingaiping "github.com/QuantumNous/new-api/relay/channel/task/kling/aiping"
  39. tasksora "github.com/QuantumNous/new-api/relay/channel/task/sora"
  40. "github.com/QuantumNous/new-api/relay/channel/task/suno"
  41. taskvertex "github.com/QuantumNous/new-api/relay/channel/task/vertex"
  42. taskVidu "github.com/QuantumNous/new-api/relay/channel/task/vidu"
  43. "github.com/QuantumNous/new-api/relay/channel/tencent"
  44. "github.com/QuantumNous/new-api/relay/channel/vertex"
  45. "github.com/QuantumNous/new-api/relay/channel/volcengine"
  46. "github.com/QuantumNous/new-api/relay/channel/xai"
  47. "github.com/QuantumNous/new-api/relay/channel/xunfei"
  48. "github.com/QuantumNous/new-api/relay/channel/zhipu"
  49. "github.com/QuantumNous/new-api/relay/channel/zhipu_4v"
  50. "github.com/gin-gonic/gin"
  51. )
  52. func GetAdaptor(apiType int) channel.Adaptor {
  53. switch apiType {
  54. case constant.APITypeAli:
  55. return &ali.Adaptor{}
  56. case constant.APITypeAnthropic:
  57. return &claude.Adaptor{}
  58. case constant.APITypeBaidu:
  59. return &baidu.Adaptor{}
  60. case constant.APITypeGemini:
  61. return &gemini.Adaptor{}
  62. case constant.APITypeOpenAI:
  63. return &openai.Adaptor{}
  64. case constant.APITypePaLM:
  65. return &palm.Adaptor{}
  66. case constant.APITypeTencent:
  67. return &tencent.Adaptor{}
  68. case constant.APITypeXunfei:
  69. return &xunfei.Adaptor{}
  70. case constant.APITypeZhipu:
  71. return &zhipu.Adaptor{}
  72. case constant.APITypeZhipuV4:
  73. return &zhipu_4v.Adaptor{}
  74. case constant.APITypeOllama:
  75. return &ollama.Adaptor{}
  76. case constant.APITypePerplexity:
  77. return &perplexity.Adaptor{}
  78. case constant.APITypeAws:
  79. return &aws.Adaptor{}
  80. case constant.APITypeCohere:
  81. return &cohere.Adaptor{}
  82. case constant.APITypeDify:
  83. return &dify.Adaptor{}
  84. case constant.APITypeJina:
  85. return &jina.Adaptor{}
  86. case constant.APITypeCloudflare:
  87. return &cloudflare.Adaptor{}
  88. case constant.APITypeSiliconFlow:
  89. return &siliconflow.Adaptor{}
  90. case constant.APITypeVertexAi:
  91. return &vertex.Adaptor{}
  92. case constant.APITypeMistral:
  93. return &mistral.Adaptor{}
  94. case constant.APITypeDeepSeek:
  95. return &deepseek.Adaptor{}
  96. case constant.APITypeMokaAI:
  97. return &mokaai.Adaptor{}
  98. case constant.APITypeVolcEngine:
  99. return &volcengine.Adaptor{}
  100. case constant.APITypeBaiduV2:
  101. return &baidu_v2.Adaptor{}
  102. case constant.APITypeOpenRouter:
  103. return &openai.Adaptor{}
  104. case constant.APITypeXinference:
  105. return &openai.Adaptor{}
  106. case constant.APITypeXai:
  107. return &xai.Adaptor{}
  108. case constant.APITypeCoze:
  109. return &coze.Adaptor{}
  110. case constant.APITypeJimeng:
  111. return &jimeng.Adaptor{}
  112. case constant.APITypeMoonshot:
  113. return &moonshot.Adaptor{} // Moonshot uses Claude API
  114. case constant.APITypeSubmodel:
  115. return &submodel.Adaptor{}
  116. case constant.APITypeMiniMax:
  117. return &minimax.Adaptor{}
  118. case constant.APITypeReplicate:
  119. return &replicate.Adaptor{}
  120. case constant.APITypeCodex:
  121. return &codex.Adaptor{}
  122. }
  123. return nil
  124. }
  125. func GetTaskPlatform(c *gin.Context) constant.TaskPlatform {
  126. channelType := c.GetInt("channel_type")
  127. if channelType > 0 {
  128. return constant.TaskPlatform(strconv.Itoa(channelType))
  129. }
  130. return constant.TaskPlatform(c.GetString("platform"))
  131. }
  132. func GetTaskAdaptor(platform constant.TaskPlatform) channel.TaskAdaptor {
  133. switch platform {
  134. //case constant.APITypeAIProxyLibrary:
  135. // return &aiproxy.Adaptor{}
  136. case constant.TaskPlatformSuno:
  137. return &suno.TaskAdaptor{}
  138. }
  139. if channelType, err := strconv.ParseInt(string(platform), 10, 64); err == nil {
  140. switch channelType {
  141. case constant.ChannelTypeAli:
  142. return &taskali.TaskAdaptor{}
  143. case constant.ChannelTypeKling:
  144. return &kling.TaskAdaptor{}
  145. case constant.ChannelTypeJimeng:
  146. return &taskjimeng.TaskAdaptor{}
  147. case constant.ChannelTypeVertexAi:
  148. return &taskvertex.TaskAdaptor{}
  149. case constant.ChannelTypeVidu:
  150. return &taskVidu.TaskAdaptor{}
  151. case constant.ChannelTypeDoubaoVideo, constant.ChannelTypeVolcEngine:
  152. return &taskdoubao.TaskAdaptor{}
  153. case constant.ChannelTypeDoubaoVideoCompatibleAiping:
  154. return &taskdoubaoaiping.TaskAdaptor{}
  155. case constant.ChannelTypeKlingAiping:
  156. return &klingaiping.TaskAdaptor{}
  157. case constant.ChannelTypeSora, constant.ChannelTypeOpenAI:
  158. return &tasksora.TaskAdaptor{}
  159. case constant.ChannelTypeGemini:
  160. return &taskGemini.TaskAdaptor{}
  161. case constant.ChannelTypeMiniMax:
  162. return &hailuo.TaskAdaptor{}
  163. }
  164. }
  165. return nil
  166. }