Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions docs/users/configuration/model-providers.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,71 @@ This auth type supports not only OpenAI's official API but also any OpenAI-compa
}
```

### MiniMax (`openai`)

MiniMax provides OpenAI-compatible chat models. Configure using the `openai` auth type with MiniMax's base URL. MiniMax requires temperature to be in the range `(0.0, 1.0]` — the provider enforces this automatically.

| Model ID | Description |
| ------------------------ | ------------------------------------------------------------------------------ |
| `MiniMax-M3` | Latest model (default) — 512K context, up to 128K output, supports image input |
| `MiniMax-M2.7` | Peak performance, ultimate value — handles complex tasks |
| `MiniMax-M2.7-highspeed` | Same performance, faster and more agile |

```json
{
"env": {
"MINIMAX_API_KEY": "your-minimax-api-key"
},
"modelProviders": {
"openai": [
{
"id": "MiniMax-M3",
"name": "MiniMax-M3",
"envKey": "MINIMAX_API_KEY",
"baseUrl": "https://api.minimax.io/v1",
"generationConfig": {
"contextWindowSize": 524288,
"samplingParams": {
"temperature": 1.0,
"max_tokens": 131072
}
}
},
{
"id": "MiniMax-M2.7",
"name": "MiniMax-M2.7",
"envKey": "MINIMAX_API_KEY",
"baseUrl": "https://api.minimax.io/v1",
"generationConfig": {
"contextWindowSize": 200000,
"samplingParams": {
"temperature": 1.0,
"max_tokens": 65536
}
}
},
{
"id": "MiniMax-M2.7-highspeed",
"name": "MiniMax-M2.7-highspeed",
"envKey": "MINIMAX_API_KEY",
"baseUrl": "https://api.minimax.io/v1",
"generationConfig": {
"contextWindowSize": 200000,
"samplingParams": {
"temperature": 1.0,
"max_tokens": 65536
}
}
}
]
}
}
```

> [!note]
>
> **Domestic mirror**: Users in mainland China can replace `api.minimax.io` with `api.minimaxi.com` (note the extra `i`).

### Local Self-Hosted Models (via OpenAI-compatible API)

Most local inference servers (vLLM, Ollama, LM Studio, etc.) provide an OpenAI-compatible API endpoint. Configure them using the `openai` auth type with a local `baseUrl`:
Expand Down
12 changes: 10 additions & 2 deletions packages/core/src/core/modalityDefaults.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,16 @@ describe('defaultModalities', () => {
});

describe('MiniMax', () => {
it('returns text-only for MiniMax-M2.5', () => {
expect(defaultModalities('MiniMax-M2.5')).toEqual({});
it('returns image for MiniMax-M3', () => {
const m = defaultModalities('MiniMax-M3');
expect(m.image).toBe(true);
expect(m.pdf).toBeUndefined();
expect(m.audio).toBeUndefined();
expect(m.video).toBeUndefined();
});

it('returns text-only for MiniMax-M2.7', () => {
expect(defaultModalities('MiniMax-M2.7')).toEqual({});
});
});

Expand Down
5 changes: 4 additions & 1 deletion packages/core/src/core/modalityDefaults.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,11 @@ const MODALITY_PATTERNS: Array<[RegExp, InputModalities]> = [
[/^glm-/, {}],

// -------------------
// MiniMax — text-only
// MiniMax
// -------------------
// M3 supports image input (images only, no video/audio/documents)
[/^minimax-m3/, { image: true }],
// M2.7 and earlier: text-only
[/^minimax-/, {}],

// -------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ export const DEFAULT_DASHSCOPE_BASE_URL =
'https://dashscope.aliyuncs.com/compatible-mode/v1';
export const DEFAULT_DEEPSEEK_BASE_URL = 'https://api.deepseek.com/v1';
export const DEFAULT_OPEN_ROUTER_BASE_URL = 'https://openrouter.ai/api/v1';
export const DEFAULT_MINIMAX_BASE_URL = 'https://api.minimax.io/v1';
10 changes: 10 additions & 0 deletions packages/core/src/core/openaiContentGenerator/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { OpenAIContentGenerator } from './openaiContentGenerator.js';
import {
DashScopeOpenAICompatibleProvider,
DeepSeekOpenAICompatibleProvider,
MiniMaxOpenAICompatibleProvider,
ModelScopeOpenAICompatibleProvider,
OpenRouterOpenAICompatibleProvider,
type OpenAICompatibleProvider,
Expand All @@ -26,6 +27,7 @@ export {
type OpenAICompatibleProvider,
DashScopeOpenAICompatibleProvider,
DeepSeekOpenAICompatibleProvider,
MiniMaxOpenAICompatibleProvider,
OpenRouterOpenAICompatibleProvider,
} from './provider/index.js';

Expand Down Expand Up @@ -87,6 +89,14 @@ export function determineProvider(
);
}

// Check for MiniMax provider
if (MiniMaxOpenAICompatibleProvider.isMiniMaxProvider(config)) {
return new MiniMaxOpenAICompatibleProvider(
contentGeneratorConfig,
cliConfig,
);
}

// Default provider for standard OpenAI-compatible APIs
return new DefaultOpenAICompatibleProvider(contentGeneratorConfig, cliConfig);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export { ModelScopeOpenAICompatibleProvider } from './modelscope.js';
export { DashScopeOpenAICompatibleProvider } from './dashscope.js';
export { DeepSeekOpenAICompatibleProvider } from './deepseek.js';
export { OpenRouterOpenAICompatibleProvider } from './openrouter.js';
export { MiniMaxOpenAICompatibleProvider } from './minimax.js';
export { DefaultOpenAICompatibleProvider } from './default.js';
export type {
OpenAICompatibleProvider,
Expand Down
Loading