Skip to content

Commit d9d074d

Browse files
kapelamekapelame
authored andcommitted
feat(provider): add MiniMax-M2.7 (Global + CN) as built-in chat model
1 parent 2e3d6ba commit d9d074d

4 files changed

Lines changed: 79 additions & 0 deletions

File tree

src/LLMProviders/chatModelManager.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ const CHAT_PROVIDER_CONSTRUCTORS = {
7575
[ChatModelProviders.GROQ]: ChatGroq,
7676
[ChatModelProviders.OPENAI_FORMAT]: ChatOpenAI,
7777
[ChatModelProviders.SILICONFLOW]: ChatOpenAI,
78+
[ChatModelProviders.MINIMAX]: ChatOpenAI,
79+
[ChatModelProviders.MINIMAX_CN]: ChatOpenAI,
7880
[ChatModelProviders.COPILOT_PLUS]: ChatOpenRouter,
7981
[ChatModelProviders.MISTRAL]: ChatMistralAI,
8082
[ChatModelProviders.DEEPSEEK]: ChatDeepSeek,
@@ -144,6 +146,8 @@ export default class ChatModelManager {
144146
[ChatModelProviders.DEEPSEEK]: () => getSettings().deepseekApiKey,
145147
[ChatModelProviders.AMAZON_BEDROCK]: () => getSettings().amazonBedrockApiKey,
146148
[ChatModelProviders.SILICONFLOW]: () => getSettings().siliconflowApiKey,
149+
[ChatModelProviders.MINIMAX]: () => getSettings().minimaxApiKey,
150+
[ChatModelProviders.MINIMAX_CN]: () => getSettings().minimaxCnApiKey,
147151
[ChatModelProviders.GITHUB_COPILOT]: () =>
148152
getSettings().githubCopilotToken || getSettings().githubCopilotAccessToken,
149153
} as const;
@@ -398,6 +402,34 @@ export default class ChatModelManager {
398402
customModel
399403
),
400404
},
405+
[ChatModelProviders.MINIMAX]: {
406+
modelName: modelName,
407+
apiKey: await getDecryptedKey(customModel.apiKey || settings.minimaxApiKey),
408+
configuration: {
409+
baseURL: customModel.baseUrl || ProviderInfo[ChatModelProviders.MINIMAX].host,
410+
fetch: customModel.enableCors ? safeFetch : undefined,
411+
},
412+
...this.getOpenAISpecialConfig(
413+
modelName,
414+
customModel.maxTokens ?? settings.maxTokens,
415+
customModel.temperature ?? settings.temperature,
416+
customModel
417+
),
418+
},
419+
[ChatModelProviders.MINIMAX_CN]: {
420+
modelName: modelName,
421+
apiKey: await getDecryptedKey(customModel.apiKey || settings.minimaxCnApiKey),
422+
configuration: {
423+
baseURL: customModel.baseUrl || ProviderInfo[ChatModelProviders.MINIMAX_CN].host,
424+
fetch: customModel.enableCors ? safeFetch : undefined,
425+
},
426+
...this.getOpenAISpecialConfig(
427+
modelName,
428+
customModel.maxTokens ?? settings.maxTokens,
429+
customModel.temperature ?? settings.temperature,
430+
customModel
431+
),
432+
},
401433
[ChatModelProviders.COPILOT_PLUS]: {
402434
modelName: modelName,
403435
apiKey: await getDecryptedKey(settings.plusLicenseKey),
@@ -598,6 +630,8 @@ export default class ChatModelManager {
598630
ChatModelProviders.MISTRAL,
599631
ChatModelProviders.DEEPSEEK,
600632
ChatModelProviders.SILICONFLOW,
633+
ChatModelProviders.MINIMAX,
634+
ChatModelProviders.MINIMAX_CN,
601635
].includes(provider)
602636
) {
603637
params.topP = customModel.topP;
@@ -618,6 +652,8 @@ export default class ChatModelManager {
618652
ChatModelProviders.MISTRAL,
619653
ChatModelProviders.DEEPSEEK,
620654
ChatModelProviders.SILICONFLOW,
655+
ChatModelProviders.MINIMAX,
656+
ChatModelProviders.MINIMAX_CN,
621657
].includes(provider)
622658
) {
623659
params.frequencyPenalty = customModel.frequencyPenalty;

src/constants.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ export enum ChatModels {
202202
OPENROUTER_GROK_4_1_FAST = "x-ai/grok-4.1-fast",
203203
SILICONFLOW_DEEPSEEK_V3 = "deepseek-ai/DeepSeek-V3",
204204
SILICONFLOW_DEEPSEEK_R1 = "deepseek-ai/DeepSeek-R1",
205+
MINIMAX_M27 = "MiniMax-M2.7",
205206
}
206207

207208
// Model Providers
@@ -223,6 +224,8 @@ export enum ChatModelProviders {
223224
COHEREAI = "cohereai",
224225
SILICONFLOW = "siliconflow",
225226
GITHUB_COPILOT = "github-copilot",
227+
MINIMAX = "minimax",
228+
MINIMAX_CN = "minimax-cn",
226229
}
227230

228231
export enum ModelCapability {
@@ -432,6 +435,22 @@ export const BUILTIN_CHAT_MODELS: CustomModel[] = [
432435
baseUrl: "https://api.siliconflow.com/v1",
433436
capabilities: [ModelCapability.REASONING],
434437
},
438+
{
439+
name: ChatModels.MINIMAX_M27,
440+
provider: ChatModelProviders.MINIMAX,
441+
enabled: false,
442+
isBuiltIn: true,
443+
baseUrl: "https://api.minimax.io/v1",
444+
capabilities: [ModelCapability.REASONING],
445+
},
446+
{
447+
name: ChatModels.MINIMAX_M27,
448+
provider: ChatModelProviders.MINIMAX_CN,
449+
enabled: false,
450+
isBuiltIn: true,
451+
baseUrl: "https://api.minimaxi.com/v1",
452+
capabilities: [ModelCapability.REASONING],
453+
},
435454
];
436455

437456
export enum EmbeddingModelProviders {
@@ -667,6 +686,22 @@ export const ProviderInfo: Record<Provider, ProviderMetadata> = {
667686
listModelURL: "https://api.siliconflow.com/v1/models",
668687
testModel: ChatModels.SILICONFLOW_DEEPSEEK_V3,
669688
},
689+
[ChatModelProviders.MINIMAX]: {
690+
label: "MiniMax",
691+
host: "https://api.minimax.io/v1",
692+
curlBaseURL: "https://api.minimax.io/v1",
693+
keyManagementURL: "https://platform.minimax.io/user-center/basic-information/interface-key",
694+
listModelURL: "https://api.minimax.io/v1/models",
695+
testModel: ChatModels.MINIMAX_M27,
696+
},
697+
[ChatModelProviders.MINIMAX_CN]: {
698+
label: "MiniMax (CN)",
699+
host: "https://api.minimaxi.com/v1",
700+
curlBaseURL: "https://api.minimaxi.com/v1",
701+
keyManagementURL: "https://platform.minimaxi.com/user-center/basic-information/interface-key",
702+
listModelURL: "https://api.minimaxi.com/v1/models",
703+
testModel: ChatModels.MINIMAX_M27,
704+
},
670705
[ChatModelProviders.OLLAMA]: {
671706
label: "Ollama",
672707
host: "http://localhost:11434/v1/",
@@ -750,6 +785,8 @@ export const ProviderSettingsKeyMap: Record<SettingKeyProviders, keyof CopilotSe
750785
"amazon-bedrock": "amazonBedrockApiKey",
751786
siliconflow: "siliconflowApiKey",
752787
"github-copilot": "githubCopilotToken",
788+
minimax: "minimaxApiKey",
789+
"minimax-cn": "minimaxCnApiKey",
753790
};
754791

755792
export enum VAULT_VECTOR_STORE_STRATEGY {
@@ -905,6 +942,8 @@ export const DEFAULT_SETTINGS: CopilotSettings = {
905942
amazonBedrockApiKey: "",
906943
amazonBedrockRegion: "",
907944
siliconflowApiKey: "",
945+
minimaxApiKey: "",
946+
minimaxCnApiKey: "",
908947
// GitHub Copilot OAuth tokens
909948
githubCopilotAccessToken: "",
910949
githubCopilotToken: "",

src/settings/model.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ export interface CopilotSettings {
6666
amazonBedrockApiKey: string;
6767
amazonBedrockRegion: string;
6868
siliconflowApiKey: string;
69+
minimaxApiKey: string;
70+
minimaxCnApiKey: string;
6971
// GitHub Copilot OAuth tokens
7072
githubCopilotAccessToken: string;
7173
githubCopilotToken: string;

src/utils/curlCommand.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ const OPENAI_COMPATIBLE_PROVIDERS = new Set<string>([
4040
ChatModelProviders.XAI,
4141
ChatModelProviders.SILICONFLOW,
4242
EmbeddingModelProviders.SILICONFLOW,
43+
ChatModelProviders.MINIMAX,
44+
ChatModelProviders.MINIMAX_CN,
4345
ChatModelProviders.OPENAI_FORMAT,
4446
EmbeddingModelProviders.OPENAI_FORMAT,
4547
ChatModelProviders.LM_STUDIO,

0 commit comments

Comments
 (0)