| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- package adaptors
- import (
- "github.com/labring/aiproxy/core/model"
- "github.com/labring/aiproxy/core/relay/adaptor"
- "github.com/labring/aiproxy/core/relay/adaptor/ai360"
- "github.com/labring/aiproxy/core/relay/adaptor/ali"
- "github.com/labring/aiproxy/core/relay/adaptor/anthropic"
- "github.com/labring/aiproxy/core/relay/adaptor/aws"
- "github.com/labring/aiproxy/core/relay/adaptor/azure"
- "github.com/labring/aiproxy/core/relay/adaptor/azure2"
- "github.com/labring/aiproxy/core/relay/adaptor/baichuan"
- "github.com/labring/aiproxy/core/relay/adaptor/baidu"
- "github.com/labring/aiproxy/core/relay/adaptor/baiduv2"
- "github.com/labring/aiproxy/core/relay/adaptor/cloudflare"
- "github.com/labring/aiproxy/core/relay/adaptor/cohere"
- "github.com/labring/aiproxy/core/relay/adaptor/coze"
- "github.com/labring/aiproxy/core/relay/adaptor/deepseek"
- "github.com/labring/aiproxy/core/relay/adaptor/doc2x"
- "github.com/labring/aiproxy/core/relay/adaptor/doubao"
- "github.com/labring/aiproxy/core/relay/adaptor/doubaoaudio"
- "github.com/labring/aiproxy/core/relay/adaptor/gemini"
- "github.com/labring/aiproxy/core/relay/adaptor/geminiopenai"
- "github.com/labring/aiproxy/core/relay/adaptor/groq"
- "github.com/labring/aiproxy/core/relay/adaptor/jina"
- "github.com/labring/aiproxy/core/relay/adaptor/lingyiwanwu"
- "github.com/labring/aiproxy/core/relay/adaptor/minimax"
- "github.com/labring/aiproxy/core/relay/adaptor/mistral"
- "github.com/labring/aiproxy/core/relay/adaptor/moonshot"
- "github.com/labring/aiproxy/core/relay/adaptor/novita"
- "github.com/labring/aiproxy/core/relay/adaptor/ollama"
- "github.com/labring/aiproxy/core/relay/adaptor/openai"
- "github.com/labring/aiproxy/core/relay/adaptor/openrouter"
- "github.com/labring/aiproxy/core/relay/adaptor/qianfan"
- "github.com/labring/aiproxy/core/relay/adaptor/sangforaicp"
- "github.com/labring/aiproxy/core/relay/adaptor/siliconflow"
- "github.com/labring/aiproxy/core/relay/adaptor/stepfun"
- "github.com/labring/aiproxy/core/relay/adaptor/streamlake"
- "github.com/labring/aiproxy/core/relay/adaptor/tencent"
- textembeddingsinference "github.com/labring/aiproxy/core/relay/adaptor/text-embeddings-inference"
- "github.com/labring/aiproxy/core/relay/adaptor/vertexai"
- "github.com/labring/aiproxy/core/relay/adaptor/xai"
- "github.com/labring/aiproxy/core/relay/adaptor/xunfei"
- "github.com/labring/aiproxy/core/relay/adaptor/zhipu"
- "github.com/labring/aiproxy/core/relay/adaptor/zhipucoding"
- log "github.com/sirupsen/logrus"
- )
- var ChannelAdaptor = map[model.ChannelType]adaptor.Adaptor{
- model.ChannelTypeOpenAI: &openai.Adaptor{},
- model.ChannelTypeAzure: &azure.Adaptor{},
- model.ChannelTypeAzure2: &azure2.Adaptor{},
- model.ChannelTypeGoogleGeminiOpenAI: &geminiopenai.Adaptor{},
- model.ChannelTypeBaiduV2: &baiduv2.Adaptor{},
- model.ChannelTypeAnthropic: &anthropic.Adaptor{},
- model.ChannelTypeBaidu: &baidu.Adaptor{},
- model.ChannelTypeZhipu: &zhipu.Adaptor{},
- model.ChannelTypeAli: &ali.Adaptor{},
- model.ChannelTypeXunfei: &xunfei.Adaptor{},
- model.ChannelTypeAI360: &ai360.Adaptor{},
- model.ChannelTypeOpenRouter: &openrouter.Adaptor{},
- model.ChannelTypeTencent: &tencent.Adaptor{},
- model.ChannelTypeGoogleGemini: &gemini.Adaptor{},
- model.ChannelTypeMoonshot: &moonshot.Adaptor{},
- model.ChannelTypeBaichuan: &baichuan.Adaptor{},
- model.ChannelTypeMinimax: &minimax.Adaptor{},
- model.ChannelTypeMistral: &mistral.Adaptor{},
- model.ChannelTypeGroq: &groq.Adaptor{},
- model.ChannelTypeOllama: &ollama.Adaptor{},
- model.ChannelTypeLingyiwanwu: &lingyiwanwu.Adaptor{},
- model.ChannelTypeStepfun: &stepfun.Adaptor{},
- model.ChannelTypeAWS: &aws.Adaptor{},
- model.ChannelTypeCoze: &coze.Adaptor{},
- model.ChannelTypeCohere: &cohere.Adaptor{},
- model.ChannelTypeDeepseek: &deepseek.Adaptor{},
- model.ChannelTypeCloudflare: &cloudflare.Adaptor{},
- model.ChannelTypeDoubao: &doubao.Adaptor{},
- model.ChannelTypeNovita: &novita.Adaptor{},
- model.ChannelTypeVertexAI: &vertexai.Adaptor{},
- model.ChannelTypeSiliconflow: &siliconflow.Adaptor{},
- model.ChannelTypeDoubaoAudio: &doubaoaudio.Adaptor{},
- model.ChannelTypeXAI: &xai.Adaptor{},
- model.ChannelTypeDoc2x: &doc2x.Adaptor{},
- model.ChannelTypeJina: &jina.Adaptor{},
- model.ChannelTypeTextEmbeddingsInference: &textembeddingsinference.Adaptor{},
- model.ChannelTypeQianfan: &qianfan.Adaptor{},
- model.ChannelTypeSangforAICP: &sangforaicp.Adaptor{},
- model.ChannelTypeStreamlake: &streamlake.Adaptor{},
- model.ChannelTypeZhipuCoding: &zhipucoding.Adaptor{},
- }
- func GetAdaptor(channelType model.ChannelType) (adaptor.Adaptor, bool) {
- a, ok := ChannelAdaptor[channelType]
- return a, ok
- }
- type AdaptorMeta struct {
- Name string `json:"name"`
- KeyHelp string `json:"keyHelp"`
- DefaultBaseURL string `json:"defaultBaseUrl"`
- Readme string `json:"readme"`
- ConfigTemplates map[string]adaptor.ConfigTemplate `json:"configs,omitempty"`
- }
- var ChannelMetas = map[model.ChannelType]AdaptorMeta{}
- func init() {
- for i, a := range ChannelAdaptor {
- adaptorMeta := a.Metadata()
- meta := AdaptorMeta{
- Name: i.String(),
- KeyHelp: adaptorMeta.KeyHelp,
- DefaultBaseURL: a.DefaultBaseURL(),
- Readme: adaptorMeta.Readme,
- ConfigTemplates: adaptorMeta.ConfigTemplates.Configs,
- }
- for key, template := range adaptorMeta.ConfigTemplates.Configs {
- if template.Name == "" {
- log.Fatalf("config template %s is invalid: name is empty", key)
- }
- }
- ChannelMetas[i] = meta
- }
- }
- var defaultKeyValidator adaptor.KeyValidator = (*KeyValidatorNoop)(nil)
- type KeyValidatorNoop struct{}
- func (a *KeyValidatorNoop) ValidateKey(_ string) error {
- return nil
- }
- func GetKeyValidator(a adaptor.Adaptor) adaptor.KeyValidator {
- if keyValidator, ok := a.(adaptor.KeyValidator); ok {
- return keyValidator
- }
- return defaultKeyValidator
- }
|