registry.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package channels
  2. import (
  3. "fmt"
  4. "github.com/QuantumNous/new-api/common"
  5. "github.com/QuantumNous/new-api/constant"
  6. "github.com/QuantumNous/new-api/core/registry"
  7. "github.com/QuantumNous/new-api/relay/channel"
  8. "github.com/QuantumNous/new-api/relay/channel/ali"
  9. "github.com/QuantumNous/new-api/relay/channel/aws"
  10. "github.com/QuantumNous/new-api/relay/channel/baidu"
  11. "github.com/QuantumNous/new-api/relay/channel/baidu_v2"
  12. "github.com/QuantumNous/new-api/relay/channel/claude"
  13. "github.com/QuantumNous/new-api/relay/channel/cloudflare"
  14. "github.com/QuantumNous/new-api/relay/channel/cohere"
  15. "github.com/QuantumNous/new-api/relay/channel/coze"
  16. "github.com/QuantumNous/new-api/relay/channel/deepseek"
  17. "github.com/QuantumNous/new-api/relay/channel/dify"
  18. "github.com/QuantumNous/new-api/relay/channel/gemini"
  19. "github.com/QuantumNous/new-api/relay/channel/jimeng"
  20. "github.com/QuantumNous/new-api/relay/channel/jina"
  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/siliconflow"
  29. "github.com/QuantumNous/new-api/relay/channel/submodel"
  30. "github.com/QuantumNous/new-api/relay/channel/tencent"
  31. "github.com/QuantumNous/new-api/relay/channel/vertex"
  32. "github.com/QuantumNous/new-api/relay/channel/volcengine"
  33. "github.com/QuantumNous/new-api/relay/channel/xai"
  34. "github.com/QuantumNous/new-api/relay/channel/xunfei"
  35. "github.com/QuantumNous/new-api/relay/channel/zhipu"
  36. "github.com/QuantumNous/new-api/relay/channel/zhipu_4v"
  37. )
  38. // init 包初始化时自动注册所有Channel插件
  39. func init() {
  40. RegisterAllChannels()
  41. }
  42. // RegisterAllChannels 注册所有Channel插件
  43. func RegisterAllChannels() {
  44. // 包装现有的Adaptor并注册为插件
  45. channels := []struct {
  46. channelType int
  47. adaptor channel.Adaptor
  48. name string
  49. }{
  50. {constant.APITypeOpenAI, &openai.Adaptor{}, "openai"},
  51. {constant.APITypeAnthropic, &claude.Adaptor{}, "claude"},
  52. {constant.APITypeGemini, &gemini.Adaptor{}, "gemini"},
  53. {constant.APITypeAli, &ali.Adaptor{}, "ali"},
  54. {constant.APITypeBaidu, &baidu.Adaptor{}, "baidu"},
  55. {constant.APITypeBaiduV2, &baidu_v2.Adaptor{}, "baidu_v2"},
  56. {constant.APITypeTencent, &tencent.Adaptor{}, "tencent"},
  57. {constant.APITypeXunfei, &xunfei.Adaptor{}, "xunfei"},
  58. {constant.APITypeZhipu, &zhipu.Adaptor{}, "zhipu"},
  59. {constant.APITypeZhipuV4, &zhipu_4v.Adaptor{}, "zhipu_v4"},
  60. {constant.APITypeOllama, &ollama.Adaptor{}, "ollama"},
  61. {constant.APITypePerplexity, &perplexity.Adaptor{}, "perplexity"},
  62. {constant.APITypeAws, &aws.Adaptor{}, "aws"},
  63. {constant.APITypeCohere, &cohere.Adaptor{}, "cohere"},
  64. {constant.APITypeDify, &dify.Adaptor{}, "dify"},
  65. {constant.APITypeJina, &jina.Adaptor{}, "jina"},
  66. {constant.APITypeCloudflare, &cloudflare.Adaptor{}, "cloudflare"},
  67. {constant.APITypeSiliconFlow, &siliconflow.Adaptor{}, "siliconflow"},
  68. {constant.APITypeVertexAi, &vertex.Adaptor{}, "vertex"},
  69. {constant.APITypeMistral, &mistral.Adaptor{}, "mistral"},
  70. {constant.APITypeDeepSeek, &deepseek.Adaptor{}, "deepseek"},
  71. {constant.APITypeMokaAI, &mokaai.Adaptor{}, "mokaai"},
  72. {constant.APITypeVolcEngine, &volcengine.Adaptor{}, "volcengine"},
  73. {constant.APITypeXai, &xai.Adaptor{}, "xai"},
  74. {constant.APITypeCoze, &coze.Adaptor{}, "coze"},
  75. {constant.APITypeJimeng, &jimeng.Adaptor{}, "jimeng"},
  76. {constant.APITypeMoonshot, &moonshot.Adaptor{}, "moonshot"},
  77. {constant.APITypeSubmodel, &submodel.Adaptor{}, "submodel"},
  78. {constant.APITypePaLM, &palm.Adaptor{}, "palm"},
  79. // OpenRouter 和 Xinference 使用 OpenAI adaptor
  80. {constant.APITypeOpenRouter, &openai.Adaptor{}, "openrouter"},
  81. {constant.APITypeXinference, &openai.Adaptor{}, "xinference"},
  82. }
  83. registeredCount := 0
  84. for _, ch := range channels {
  85. plugin := NewBaseChannelPlugin(
  86. ch.adaptor,
  87. ch.name,
  88. "1.0.0",
  89. 100, // 默认优先级
  90. )
  91. if err := registry.RegisterChannel(ch.channelType, plugin); err != nil {
  92. common.SysError("Failed to register channel plugin: " + ch.name + ", error: " + err.Error())
  93. } else {
  94. registeredCount++
  95. }
  96. }
  97. common.SysLog(fmt.Sprintf("Registered %d channel plugins", registeredCount))
  98. }