Skip to content

Commit d6c89d8

Browse files
author
PR Bot
committed
feat: add MiniMax as chatbot provider integration
Add MiniMax AI as a new chatbot provider alongside OpenAI, Dify, Flowise, and others. MiniMax uses the OpenAI-compatible API at api.minimax.io/v1 and supports M2.5 and M2.5-highspeed models for chat completions. Changes: - New minimax chatbot integration (service, controller, router, DTOs, schemas) - Prisma schema models for MinimaxCreds, MinimaxBot, MinimaxSetting (both PostgreSQL and MySQL) - Environment configuration (MINIMAX_ENABLED) - Registration in chatbot router, controller, and server module - Think tag stripping for MiniMax M2.5 responses - 35 unit and integration tests - README documentation
1 parent cd800f2 commit d6c89d8

File tree

15 files changed

+1565
-0
lines changed

15 files changed

+1565
-0
lines changed

.env.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,9 @@ N8N_ENABLED=false
344344
# EvoAI - Environment variables
345345
EVOAI_ENABLED=false
346346

347+
# MiniMax - Environment variables
348+
MINIMAX_ENABLED=false
349+
347350
# Cache - Environment variables
348351
# Redis Cache enabled
349352
CACHE_REDIS_ENABLED=true

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ Evolution API supports various integrations to enhance its functionality. Below
7070
- [OpenAI](https://openai.com/):
7171
- Integrate your Evolution API with OpenAI for AI capabilities, including audio-to-text conversion, available across all Evolution integrations.
7272

73+
- [MiniMax](https://www.minimaxi.com/):
74+
- Integrate your Evolution API with MiniMax AI for chat completion capabilities using MiniMax M2.5 and M2.5-highspeed models via OpenAI-compatible API.
75+
7376
- Amazon S3 / Minio:
7477
- Store media files received in [Amazon S3](https://aws.amazon.com/pt/s3/) or [Minio](https://min.io/).
7578

prisma/mysql-schema.prisma

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ model Instance {
111111
Evoai Evoai[]
112112
EvoaiSetting EvoaiSetting?
113113
Pusher Pusher?
114+
MinimaxCreds MinimaxCreds[]
115+
MinimaxBot MinimaxBot[]
116+
MinimaxSetting MinimaxSetting?
114117
}
115118

116119
model Session {
@@ -494,6 +497,73 @@ model OpenaiSetting {
494497
instanceId String @unique
495498
}
496499

500+
model MinimaxCreds {
501+
id String @id @default(cuid())
502+
name String? @unique @db.VarChar(255)
503+
apiKey String? @unique @db.VarChar(255)
504+
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
505+
updatedAt DateTime @updatedAt @db.Timestamp
506+
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
507+
instanceId String
508+
MinimaxBot MinimaxBot[]
509+
MinimaxSetting MinimaxSetting?
510+
}
511+
512+
model MinimaxBot {
513+
id String @id @default(cuid())
514+
enabled Boolean @default(true)
515+
description String? @db.VarChar(255)
516+
model String? @db.VarChar(100)
517+
systemMessages Json? @db.Json
518+
assistantMessages Json? @db.Json
519+
userMessages Json? @db.Json
520+
maxTokens Int? @db.Int
521+
expire Int? @default(0) @db.Int
522+
keywordFinish String? @db.VarChar(100)
523+
delayMessage Int? @db.Int
524+
unknownMessage String? @db.VarChar(100)
525+
listeningFromMe Boolean? @default(false)
526+
stopBotFromMe Boolean? @default(false)
527+
keepOpen Boolean? @default(false)
528+
debounceTime Int? @db.Int
529+
splitMessages Boolean? @default(false)
530+
timePerChar Int? @default(50) @db.Int
531+
ignoreJids Json?
532+
triggerType TriggerType?
533+
triggerOperator TriggerOperator?
534+
triggerValue String?
535+
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
536+
updatedAt DateTime @updatedAt @db.Timestamp
537+
MinimaxCreds MinimaxCreds @relation(fields: [minimaxCredsId], references: [id], onDelete: Cascade)
538+
minimaxCredsId String
539+
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
540+
instanceId String
541+
MinimaxSetting MinimaxSetting[]
542+
}
543+
544+
model MinimaxSetting {
545+
id String @id @default(cuid())
546+
expire Int? @default(0) @db.Int
547+
keywordFinish String? @db.VarChar(100)
548+
delayMessage Int? @db.Int
549+
unknownMessage String? @db.VarChar(100)
550+
listeningFromMe Boolean? @default(false)
551+
stopBotFromMe Boolean? @default(false)
552+
keepOpen Boolean? @default(false)
553+
debounceTime Int? @db.Int
554+
ignoreJids Json?
555+
splitMessages Boolean? @default(false)
556+
timePerChar Int? @default(50) @db.Int
557+
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
558+
updatedAt DateTime @updatedAt @db.Timestamp
559+
MinimaxCreds MinimaxCreds? @relation(fields: [minimaxCredsId], references: [id])
560+
minimaxCredsId String @unique
561+
Fallback MinimaxBot? @relation(fields: [minimaxIdFallback], references: [id])
562+
minimaxIdFallback String? @db.VarChar(100)
563+
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
564+
instanceId String @unique
565+
}
566+
497567
model Template {
498568
id String @id @default(cuid())
499569
templateId String @unique @db.VarChar(255)

prisma/postgresql-schema.prisma

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ model Instance {
111111
N8nSetting N8nSetting[]
112112
Evoai Evoai[]
113113
EvoaiSetting EvoaiSetting?
114+
MinimaxCreds MinimaxCreds[]
115+
MinimaxBot MinimaxBot[]
116+
MinimaxSetting MinimaxSetting?
114117
}
115118

116119
model Session {
@@ -499,6 +502,73 @@ model OpenaiSetting {
499502
instanceId String @unique
500503
}
501504

505+
model MinimaxCreds {
506+
id String @id @default(cuid())
507+
name String? @unique @db.VarChar(255)
508+
apiKey String? @unique @db.VarChar(255)
509+
createdAt DateTime? @default(now()) @db.Timestamp
510+
updatedAt DateTime @updatedAt @db.Timestamp
511+
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
512+
instanceId String
513+
MinimaxBot MinimaxBot[]
514+
MinimaxSetting MinimaxSetting?
515+
}
516+
517+
model MinimaxBot {
518+
id String @id @default(cuid())
519+
enabled Boolean @default(true) @db.Boolean
520+
description String? @db.VarChar(255)
521+
model String? @db.VarChar(100)
522+
systemMessages Json? @db.JsonB
523+
assistantMessages Json? @db.JsonB
524+
userMessages Json? @db.JsonB
525+
maxTokens Int? @db.Integer
526+
expire Int? @default(0) @db.Integer
527+
keywordFinish String? @db.VarChar(100)
528+
delayMessage Int? @db.Integer
529+
unknownMessage String? @db.VarChar(100)
530+
listeningFromMe Boolean? @default(false) @db.Boolean
531+
stopBotFromMe Boolean? @default(false) @db.Boolean
532+
keepOpen Boolean? @default(false) @db.Boolean
533+
debounceTime Int? @db.Integer
534+
splitMessages Boolean? @default(false) @db.Boolean
535+
timePerChar Int? @default(50) @db.Integer
536+
ignoreJids Json?
537+
triggerType TriggerType?
538+
triggerOperator TriggerOperator?
539+
triggerValue String?
540+
createdAt DateTime? @default(now()) @db.Timestamp
541+
updatedAt DateTime @updatedAt @db.Timestamp
542+
MinimaxCreds MinimaxCreds @relation(fields: [minimaxCredsId], references: [id], onDelete: Cascade)
543+
minimaxCredsId String
544+
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
545+
instanceId String
546+
MinimaxSetting MinimaxSetting[]
547+
}
548+
549+
model MinimaxSetting {
550+
id String @id @default(cuid())
551+
expire Int? @default(0) @db.Integer
552+
keywordFinish String? @db.VarChar(100)
553+
delayMessage Int? @db.Integer
554+
unknownMessage String? @db.VarChar(100)
555+
listeningFromMe Boolean? @default(false) @db.Boolean
556+
stopBotFromMe Boolean? @default(false) @db.Boolean
557+
keepOpen Boolean? @default(false) @db.Boolean
558+
debounceTime Int? @db.Integer
559+
ignoreJids Json?
560+
splitMessages Boolean? @default(false) @db.Boolean
561+
timePerChar Int? @default(50) @db.Integer
562+
createdAt DateTime? @default(now()) @db.Timestamp
563+
updatedAt DateTime @updatedAt @db.Timestamp
564+
MinimaxCreds MinimaxCreds? @relation(fields: [minimaxCredsId], references: [id])
565+
minimaxCredsId String @unique
566+
Fallback MinimaxBot? @relation(fields: [minimaxIdFallback], references: [id])
567+
minimaxIdFallback String? @db.VarChar(100)
568+
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
569+
instanceId String @unique
570+
}
571+
502572
model Template {
503573
id String @id @default(cuid())
504574
templateId String @unique @db.VarChar(255)

src/api/integrations/chatbot/chatbot.controller.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
evoaiController,
66
evolutionBotController,
77
flowiseController,
8+
minimaxController,
89
n8nController,
910
openaiController,
1011
typebotController,
@@ -104,6 +105,8 @@ export class ChatbotController {
104105
evoaiController.emit(emitData);
105106

106107
flowiseController.emit(emitData);
108+
109+
minimaxController.emit(emitData);
107110
}
108111

109112
public processDebounce(

src/api/integrations/chatbot/chatbot.router.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { Router } from 'express';
77
import { EvoaiRouter } from './evoai/routes/evoai.router';
88
import { EvolutionBotRouter } from './evolutionBot/routes/evolutionBot.router';
99
import { FlowiseRouter } from './flowise/routes/flowise.router';
10+
import { MinimaxRouter } from './minimax/routes/minimax.router';
1011
import { N8nRouter } from './n8n/routes/n8n.router';
1112

1213
export class ChatbotRouter {
@@ -23,5 +24,6 @@ export class ChatbotRouter {
2324
this.router.use('/flowise', new FlowiseRouter(...guards).router);
2425
this.router.use('/n8n', new N8nRouter(...guards).router);
2526
this.router.use('/evoai', new EvoaiRouter(...guards).router);
27+
this.router.use('/minimax', new MinimaxRouter(...guards).router);
2628
}
2729
}

src/api/integrations/chatbot/chatbot.schema.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export * from '@api/integrations/chatbot/dify/validate/dify.schema';
33
export * from '@api/integrations/chatbot/evoai/validate/evoai.schema';
44
export * from '@api/integrations/chatbot/evolutionBot/validate/evolutionBot.schema';
55
export * from '@api/integrations/chatbot/flowise/validate/flowise.schema';
6+
export * from '@api/integrations/chatbot/minimax/validate/minimax.schema';
67
export * from '@api/integrations/chatbot/n8n/validate/n8n.schema';
78
export * from '@api/integrations/chatbot/openai/validate/openai.schema';
89
export * from '@api/integrations/chatbot/typebot/validate/typebot.schema';

0 commit comments

Comments
 (0)