diff --git a/core/docs/docs.go b/core/docs/docs.go index d8d4562cf..72d1b5aac 100644 --- a/core/docs/docs.go +++ b/core/docs/docs.go @@ -5677,7 +5677,8 @@ const docTemplate = `{ 55, 56, 57, - 58 + 58, + 59 ], "type": "integer", "description": "Channel type", @@ -12029,7 +12030,8 @@ const docTemplate = `{ 55, 56, 57, - 58 + 58, + 59 ], "x-enum-varnames": [ "ChannelTypeOpenAI", @@ -12077,7 +12079,8 @@ const docTemplate = `{ "ChannelTypeFakeError", "ChannelTypeQwenCloud", "ChannelTypeAIProxyHZH", - "ChannelTypeAIProxyUSW1" + "ChannelTypeAIProxyUSW1", + "ChannelTypeTokenDance" ] }, "model.ChartData": { diff --git a/core/docs/swagger.json b/core/docs/swagger.json index 3cc64b281..356e66cf8 100644 --- a/core/docs/swagger.json +++ b/core/docs/swagger.json @@ -5668,7 +5668,8 @@ 55, 56, 57, - 58 + 58, + 59 ], "type": "integer", "description": "Channel type", @@ -12020,7 +12021,8 @@ 55, 56, 57, - 58 + 58, + 59 ], "x-enum-varnames": [ "ChannelTypeOpenAI", @@ -12068,7 +12070,8 @@ "ChannelTypeFakeError", "ChannelTypeQwenCloud", "ChannelTypeAIProxyHZH", - "ChannelTypeAIProxyUSW1" + "ChannelTypeAIProxyUSW1", + "ChannelTypeTokenDance" ] }, "model.ChartData": { diff --git a/core/docs/swagger.yaml b/core/docs/swagger.yaml index f2071b979..d8a3c6aa5 100644 --- a/core/docs/swagger.yaml +++ b/core/docs/swagger.yaml @@ -1474,6 +1474,7 @@ definitions: - 56 - 57 - 58 + - 59 type: integer x-enum-varnames: - ChannelTypeOpenAI @@ -1522,6 +1523,7 @@ definitions: - ChannelTypeQwenCloud - ChannelTypeAIProxyHZH - ChannelTypeAIProxyUSW1 + - ChannelTypeTokenDance model.ChartData: properties: audio_input_amount: @@ -7376,6 +7378,7 @@ paths: - 56 - 57 - 58 + - 59 in: path name: type required: true diff --git a/core/model/chtype.go b/core/model/chtype.go index c3012af28..264b17413 100644 --- a/core/model/chtype.go +++ b/core/model/chtype.go @@ -58,6 +58,7 @@ const ( ChannelTypeQwenCloud ChannelType = 56 ChannelTypeAIProxyHZH ChannelType = 57 ChannelTypeAIProxyUSW1 ChannelType = 58 + ChannelTypeTokenDance ChannelType = 59 ) var channelTypeNames = map[ChannelType]string{ @@ -107,4 +108,5 @@ var channelTypeNames = map[ChannelType]string{ ChannelTypeQwenCloud: "QwenCloud", ChannelTypeAIProxyHZH: "AIProxy HZH", ChannelTypeAIProxyUSW1: "AIProxy USW-1", + ChannelTypeTokenDance: "TokenDance", } diff --git a/core/relay/adaptor/tokendance/adaptor.go b/core/relay/adaptor/tokendance/adaptor.go new file mode 100644 index 000000000..643d570a5 --- /dev/null +++ b/core/relay/adaptor/tokendance/adaptor.go @@ -0,0 +1,47 @@ +package tokendance + +import ( + "github.com/labring/aiproxy/core/model" + "github.com/labring/aiproxy/core/relay/adaptor" + "github.com/labring/aiproxy/core/relay/adaptor/openai" + "github.com/labring/aiproxy/core/relay/adaptor/registry" + "github.com/labring/aiproxy/core/relay/meta" + "github.com/labring/aiproxy/core/relay/mode" +) + +type Adaptor struct { + openai.Adaptor +} + +func init() { + registry.Register(model.ChannelTypeTokenDance, &Adaptor{}) +} + +func (a *Adaptor) DefaultBaseURL() string { + return "https://tokendance.space/gateway/v1" +} + +func (a *Adaptor) SupportMode(mt *meta.Meta) bool { + m := adaptor.ModeFromMeta(mt) + + return m == mode.ChatCompletions || + m == mode.Responses || + m == mode.Embeddings || + m == mode.ImagesGenerations || + m == mode.ImagesEdits || + m == mode.Anthropic || + m == mode.Gemini +} + +func (a *Adaptor) Metadata() adaptor.Metadata { + return adaptor.Metadata{ + KeyHelp: "Create an API key at https://tokendance.space/keys", + Readme: "TokenDance OpenAI-compatible API\n" + + "Supports chat completions, Responses, embeddings, image generation and editing\n" + + "Anthropic/Gemini requests are converted to OpenAI-compatible requests\n" + + "Configure model IDs with the corresponding OpenAI protocol in supported_protocols\n" + + "Model catalog: https://tokendance.space/gateway/v1/models\n" + + "Documentation: https://tokendance.space/docs/quickstart", + ConfigSchema: openai.ConfigSchema(), + } +} diff --git a/core/relay/adaptors/register.go b/core/relay/adaptors/register.go index a187b58cb..234953a4a 100644 --- a/core/relay/adaptors/register.go +++ b/core/relay/adaptors/register.go @@ -44,6 +44,7 @@ import ( _ "github.com/labring/aiproxy/core/relay/adaptor/streamlake" _ "github.com/labring/aiproxy/core/relay/adaptor/tencent" _ "github.com/labring/aiproxy/core/relay/adaptor/text-embeddings-inference" + _ "github.com/labring/aiproxy/core/relay/adaptor/tokendance" _ "github.com/labring/aiproxy/core/relay/adaptor/vertexai" _ "github.com/labring/aiproxy/core/relay/adaptor/xai" _ "github.com/labring/aiproxy/core/relay/adaptor/xunfei"