relay_adaptor.go 5.7 KB

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