Skip to content

Commit 98279fb

Browse files
committed
feat: add MiniMax M2.7 model support
1 parent 137d3f4 commit 98279fb

File tree

2 files changed

+46
-3
lines changed

2 files changed

+46
-3
lines changed

packages/types/src/providers/minimax.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,24 @@ import type { ModelInfo } from "../model.js"
55
// https://platform.minimax.io/docs/api-reference/text-openai-api
66
// https://platform.minimax.io/docs/api-reference/text-anthropic-api
77
export type MinimaxModelId = keyof typeof minimaxModels
8-
export const minimaxDefaultModelId: MinimaxModelId = "MiniMax-M2.5"
8+
export const minimaxDefaultModelId: MinimaxModelId = "MiniMax-M2.7"
99

1010
export const minimaxModels = {
11+
"MiniMax-M2.7": {
12+
maxTokens: 16_384,
13+
contextWindow: 204_800,
14+
supportsImages: false,
15+
supportsPromptCache: true,
16+
includedTools: ["search_and_replace"],
17+
excludedTools: ["apply_diff"],
18+
preserveReasoning: true,
19+
inputPrice: 0.3,
20+
outputPrice: 1.2,
21+
cacheWritesPrice: 0.375,
22+
cacheReadsPrice: 0.03,
23+
description:
24+
"MiniMax M2.7, the newest MiniMax model succeeding M2.5, with further enhanced coding and agentic capabilities.",
25+
},
1126
"MiniMax-M2.5": {
1227
maxTokens: 16_384,
1328
contextWindow: 204_800,

src/api/providers/__tests__/minimax.spec.ts

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,22 @@ describe("MiniMaxHandler", () => {
8787
expect(model.info).toEqual(minimaxModels[testModelId])
8888
})
8989

90+
it("should return MiniMax-M2.7 model with correct configuration", () => {
91+
const testModelId: MinimaxModelId = "MiniMax-M2.7"
92+
const handlerWithModel = new MiniMaxHandler({
93+
apiModelId: testModelId,
94+
minimaxApiKey: "test-minimax-api-key",
95+
})
96+
const model = handlerWithModel.getModel()
97+
expect(model.id).toBe(testModelId)
98+
expect(model.info).toEqual(minimaxModels[testModelId])
99+
expect(model.info.contextWindow).toBe(204_800)
100+
expect(model.info.maxTokens).toBe(16_384)
101+
expect(model.info.supportsPromptCache).toBe(true)
102+
expect(model.info.cacheWritesPrice).toBe(0.375)
103+
expect(model.info.cacheReadsPrice).toBe(0.03)
104+
})
105+
90106
it("should return MiniMax-M2.5 model with correct configuration", () => {
91107
const testModelId: MinimaxModelId = "MiniMax-M2.5"
92108
const handlerWithModel = new MiniMaxHandler({
@@ -191,10 +207,10 @@ describe("MiniMaxHandler", () => {
191207
expect(model.info).toEqual(minimaxModels[minimaxDefaultModelId])
192208
})
193209

194-
it("should default to MiniMax-M2.5 model", () => {
210+
it("should default to MiniMax-M2.7 model", () => {
195211
const handlerDefault = new MiniMaxHandler({ minimaxApiKey: "test-minimax-api-key" })
196212
const model = handlerDefault.getModel()
197-
expect(model.id).toBe("MiniMax-M2.5")
213+
expect(model.id).toBe("MiniMax-M2.7")
198214
})
199215
})
200216

@@ -396,6 +412,18 @@ describe("MiniMaxHandler", () => {
396412
})
397413

398414
describe("Model Configuration", () => {
415+
it("should correctly configure MiniMax-M2.7 model properties", () => {
416+
const model = minimaxModels["MiniMax-M2.7"]
417+
expect(model.maxTokens).toBe(16_384)
418+
expect(model.contextWindow).toBe(204_800)
419+
expect(model.supportsImages).toBe(false)
420+
expect(model.supportsPromptCache).toBe(true)
421+
expect(model.inputPrice).toBe(0.3)
422+
expect(model.outputPrice).toBe(1.2)
423+
expect(model.cacheWritesPrice).toBe(0.375)
424+
expect(model.cacheReadsPrice).toBe(0.03)
425+
})
426+
399427
it("should correctly configure MiniMax-M2 model properties", () => {
400428
const model = minimaxModels["MiniMax-M2"]
401429
expect(model.maxTokens).toBe(16_384)

0 commit comments

Comments
 (0)