From 7fa743f01ab350c0b21ada2f069825c37b8f8b65 Mon Sep 17 00:00:00 2001 From: octo-patch Date: Mon, 1 Jun 2026 21:30:38 +0800 Subject: [PATCH] feat(minimax): add MiniMax-M3, set as default, drop M2.5/M2.1/M2 - Add MINIMAX_M3 = "MiniMax-M3" constant and put it first in MODEL_LIST - Default MinimaxBot model: MiniMax-M2.7 -> MiniMax-M3 - Keep MiniMax-M2.7 and MiniMax-M2.7-highspeed as legacy options - Drop MINIMAX_M2_5 / MINIMAX_M2_1 / MINIMAX_M2_1_LIGHTNING / MINIMAX_M2 - Update web console recommended/provider model lists - Update README capability table and docs/models index (en/zh/ja) - Update docs/models/minimax.mdx and coding-plan.mdx MiniMax section - Update run.sh / run.ps1 installer default and menu hint - Update zh CLI status sample output - Update unit tests to assert new M3 default and constant TTS (speech-2.*) and API base URL remain unchanged. --- README.md | 2 +- channel/web/web_channel.py | 4 ++-- common/const.py | 11 ++++------- docs/ja/README.md | 2 +- docs/ja/models/coding-plan.mdx | 4 ++-- docs/ja/models/index.mdx | 4 ++-- docs/ja/models/minimax.mdx | 4 ++-- docs/models/coding-plan.mdx | 4 ++-- docs/models/index.mdx | 2 +- docs/models/minimax.mdx | 4 ++-- docs/zh/README.md | 2 +- docs/zh/cli/general.mdx | 2 +- docs/zh/cli/process.mdx | 2 +- docs/zh/models/coding-plan.mdx | 4 ++-- docs/zh/models/index.mdx | 2 +- docs/zh/models/minimax.mdx | 4 ++-- models/minimax/minimax_bot.py | 2 +- run.sh | 4 ++-- scripts/run.ps1 | 4 ++-- tests/test_minimax_provider.py | 27 ++++++++++++++++++--------- 20 files changed, 50 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index ad7823d4..0310d5d6 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ CowAgent supports all mainstream LLM providers. **Chat, vision, image generation | [GLM](https://docs.cowagent.ai/models/glm) | glm-5.1, glm-5v-turbo | ✅ | ✅ | | ✅ | | ✅ | | [Doubao](https://docs.cowagent.ai/models/doubao) | doubao-seed-2.0 series | ✅ | ✅ | ✅ | | | ✅ | | [Kimi](https://docs.cowagent.ai/models/kimi) | kimi-k2.6 | ✅ | ✅ | | | | | -| [MiniMax](https://docs.cowagent.ai/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | | +| [MiniMax](https://docs.cowagent.ai/models/minimax) | MiniMax-M3 | ✅ | ✅ | ✅ | | ✅ | | | [ERNIE](https://docs.cowagent.ai/models/qianfan) | ernie-5.1 | ✅ | ✅ | | | | | | [MiMo](https://docs.cowagent.ai/models/mimo) | mimo-v2.5 / pro | ✅ | ✅ | | | ✅ | | | [LinkAI](https://docs.cowagent.ai/models/linkai) | One key for 100+ models | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | diff --git a/channel/web/web_channel.py b/channel/web/web_channel.py index b217b56e..bfc038cb 100644 --- a/channel/web/web_channel.py +++ b/channel/web/web_channel.py @@ -1404,7 +1404,7 @@ class ConfigHandler: _RECOMMENDED_MODELS = [ const.DEEPSEEK_V4_FLASH, const.DEEPSEEK_V4_PRO, const.DEEPSEEK_CHAT, const.DEEPSEEK_REASONER, - const.MINIMAX_M2_7_HIGHSPEED, const.MINIMAX_M2_7, const.MINIMAX_M2_5, const.MINIMAX_M2_1, const.MINIMAX_M2_1_LIGHTNING, + const.MINIMAX_M3, const.MINIMAX_M2_7_HIGHSPEED, const.MINIMAX_M2_7, const.CLAUDE_4_8_OPUS, const.CLAUDE_4_7_OPUS, const.CLAUDE_4_6_SONNET, const.CLAUDE_4_6_OPUS, const.CLAUDE_4_5_SONNET, const.GEMINI_35_FLASH, const.GEMINI_31_FLASH_LITE_PRE, const.GEMINI_31_PRO_PRE, const.GEMINI_3_FLASH_PRE, const.GPT_55, const.GPT_54, const.GPT_54_MINI, const.GPT_54_NANO, const.GPT_5, const.GPT_41, const.GPT_4o, @@ -1442,7 +1442,7 @@ class ConfigHandler: "api_base_key": None, "api_base_default": None, "api_base_placeholder": "", - "models": [const.MINIMAX_M2_7, const.MINIMAX_M2_7_HIGHSPEED, const.MINIMAX_M2_5, const.MINIMAX_M2_1, const.MINIMAX_M2_1_LIGHTNING], + "models": [const.MINIMAX_M3, const.MINIMAX_M2_7, const.MINIMAX_M2_7_HIGHSPEED], }), ("claudeAPI", { "label": "Claude", diff --git a/common/const.py b/common/const.py index ba4edd17..fa56d273 100644 --- a/common/const.py +++ b/common/const.py @@ -112,13 +112,10 @@ QWEN37_MAX = "qwen3.7-max" # Qwen3.7 Max - Agent推荐模型 QWQ_PLUS = "qwq-plus" # MiniMax -MINIMAX_M2_7 = "MiniMax-M2.7" # MiniMax M2.7 - Latest -MINIMAX_TEXT_01 = "MiniMax-Text-01" # MiniMax 多模态 (vision) +MINIMAX_M3 = "MiniMax-M3" # MiniMax M3 - Latest (default) +MINIMAX_M2_7 = "MiniMax-M2.7" # MiniMax M2.7 MINIMAX_M2_7_HIGHSPEED = "MiniMax-M2.7-highspeed" # MiniMax M2.7 highspeed -MINIMAX_M2_5 = "MiniMax-M2.5" # MiniMax M2.5 -MINIMAX_M2_1 = "MiniMax-M2.1" # MiniMax M2.1 -MINIMAX_M2_1_LIGHTNING = "MiniMax-M2.1-lightning" # MiniMax M2.1 极速版 -MINIMAX_M2 = "MiniMax-M2" # MiniMax M2 +MINIMAX_TEXT_01 = "MiniMax-Text-01" # MiniMax 多模态 (vision) MINIMAX_ABAB6_5 = "abab6.5-chat" # MiniMax abab6.5 # GLM (智谱AI) @@ -189,7 +186,7 @@ MODEL_LIST = [ ERNIE_45_TURBO_VL, ERNIE_45_TURBO_VL_32K, # MiniMax - MiniMax, MINIMAX_M2_7, MINIMAX_M2_7_HIGHSPEED, MINIMAX_M2_5, MINIMAX_M2_1, MINIMAX_M2_1_LIGHTNING, MINIMAX_M2, MINIMAX_ABAB6_5, + MiniMax, MINIMAX_M3, MINIMAX_M2_7, MINIMAX_M2_7_HIGHSPEED, MINIMAX_ABAB6_5, # 小米 MiMo MIMO, MIMO_V2_5_PRO, MIMO_V2_5, MIMO_V2_PRO, MIMO_V2_OMNI, MIMO_V2_FLASH, diff --git a/docs/ja/README.md b/docs/ja/README.md index 9c99bf7a..5f848a15 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -102,7 +102,7 @@ CowAgent は主要な LLM プロバイダーすべてに対応しています。 | [GLM](https://docs.cowagent.ai/ja/models/glm) | glm-5.1、glm-5v-turbo | ✅ | ✅ | | ✅ | | ✅ | | [Doubao](https://docs.cowagent.ai/ja/models/doubao) | doubao-seed-2.0 シリーズ | ✅ | ✅ | ✅ | | | ✅ | | [Kimi](https://docs.cowagent.ai/ja/models/kimi) | kimi-k2.6 | ✅ | ✅ | | | | | -| [MiniMax](https://docs.cowagent.ai/ja/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | | +| [MiniMax](https://docs.cowagent.ai/ja/models/minimax) | MiniMax-M3 | ✅ | ✅ | ✅ | | ✅ | | | [ERNIE](https://docs.cowagent.ai/ja/models/qianfan) | ernie-5.1 | ✅ | ✅ | | | | | | [MiMo](https://docs.cowagent.ai/ja/models/mimo) | mimo-v2.5-pro / v2.5 | ✅ | ✅ | | | ✅ | | | [LinkAI](https://docs.cowagent.ai/ja/models/linkai) | 1 つの Key で 100+ モデルに接続 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | diff --git a/docs/ja/models/coding-plan.mdx b/docs/ja/models/coding-plan.mdx index 448373d6..24477029 100644 --- a/docs/ja/models/coding-plan.mdx +++ b/docs/ja/models/coding-plan.mdx @@ -61,7 +61,7 @@ description: Coding Planモデルの設定 ```json { "bot_type": "openai", - "model": "MiniMax-M2.5", + "model": "MiniMax-M3", "open_ai_api_base": "https://api.minimaxi.com/v1", "open_ai_api_key": "YOUR_API_KEY" } @@ -69,7 +69,7 @@ description: Coding Planモデルの設定 | パラメータ | 説明 | | --- | --- | -| `model` | `MiniMax-M2.5`、`MiniMax-M2.5-highspeed`、`MiniMax-M2.1`、`MiniMax-M2` | +| `model` | `MiniMax-M3`、`MiniMax-M2.7`、`MiniMax-M2.7-highspeed` | | `open_ai_api_base` | 中国: `https://api.minimaxi.com/v1`、グローバル: `https://api.minimax.io/v1` | | `open_ai_api_key` | Coding Plan専用キー(従量課金とは共有不可) | diff --git a/docs/ja/models/index.mdx b/docs/ja/models/index.mdx index 0f3916a3..33e42c89 100644 --- a/docs/ja/models/index.mdx +++ b/docs/ja/models/index.mdx @@ -6,7 +6,7 @@ description: CowAgent がサポートするモデルベンダーと機能マト CowAgent は国内外の主要ベンダーの大規模言語モデルをサポートしており、モデル接続の実装はプロジェクトの `models/` ディレクトリにあります。テキスト対話に加えて、一部のベンダーは画像理解、画像生成、音声認識、音声合成、ベクトルなどの機能も提供しており、Agent フローの中で必要に応じて呼び出すことができます。 - Agent モードでは、効果とコストのバランスを考慮して以下のモデルの利用を推奨します:deepseek-v4-flash、MiniMax-M2.7、claude-sonnet-4-6、gemini-3.5-flash、glm-5.1、qwen3.6-plus、kimi-k2.6、ernie-5.1。 + Agent モードでは、効果とコストのバランスを考慮して以下のモデルの利用を推奨します:deepseek-v4-flash、MiniMax-M3、claude-sonnet-4-6、gemini-3.5-flash、glm-5.1、qwen3.6-plus、kimi-k2.6、ernie-5.1。 同時に [LinkAI](https://link-ai.tech) プラットフォームの API もサポートしており、1 つの Key で複数ベンダーを柔軟に切り替えられ、ナレッジベース、ワークフロー、プラグインなどの機能も付属しています。 @@ -19,7 +19,7 @@ CowAgent は国内外の主要ベンダーの大規模言語モデルをサポ | ベンダー | 代表モデル | テキスト | 画像理解 | 画像生成 | 音声認識 | 音声合成 | ベクトル | | --- | --- | :-: | :-: | :-: | :-: | :-: | :-: | | [DeepSeek](/models/deepseek) | deepseek-v4-flash / pro | ✅ | | | | | | -| [MiniMax](/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | | +| [MiniMax](/models/minimax) | MiniMax-M3 | ✅ | ✅ | ✅ | | ✅ | | | [Claude](/models/claude) | claude-opus-4-8 | ✅ | ✅ | | | | | | [Gemini](/models/gemini) | gemini-3.5-flash | ✅ | ✅ | ✅ | | | | | [OpenAI](/models/openai) | gpt-5.5、o シリーズ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | diff --git a/docs/ja/models/minimax.mdx b/docs/ja/models/minimax.mdx index 66d0024a..411619c2 100644 --- a/docs/ja/models/minimax.mdx +++ b/docs/ja/models/minimax.mdx @@ -13,14 +13,14 @@ MiniMax はテキスト対話、画像理解、画像生成、音声合成をサ ```json { - "model": "MiniMax-M2.7", + "model": "MiniMax-M3", "minimax_api_key": "YOUR_API_KEY" } ``` | パラメータ | 説明 | | --- | --- | -| `model` | `MiniMax-M2.7`、`MiniMax-M2.7-highspeed`、`MiniMax-M2.5`、`MiniMax-M2.1`、`MiniMax-M2.1-lightning`、`MiniMax-M2` などを指定可能 | +| `model` | `MiniMax-M3`、`MiniMax-M2.7`、`MiniMax-M2.7-highspeed` などを指定可能 | | `minimax_api_key` | [MiniMax コンソール](https://platform.minimaxi.com/user-center/basic-information/interface-key) で作成 | ## 画像理解 diff --git a/docs/models/coding-plan.mdx b/docs/models/coding-plan.mdx index b09715eb..5d523617 100644 --- a/docs/models/coding-plan.mdx +++ b/docs/models/coding-plan.mdx @@ -61,7 +61,7 @@ Reference: [Quick Start](https://help.aliyun.com/zh/model-studio/coding-plan-qui ```json { "bot_type": "openai", - "model": "MiniMax-M2.5", + "model": "MiniMax-M3", "open_ai_api_base": "https://api.minimaxi.com/v1", "open_ai_api_key": "YOUR_API_KEY" } @@ -69,7 +69,7 @@ Reference: [Quick Start](https://help.aliyun.com/zh/model-studio/coding-plan-qui | Parameter | Description | | --- | --- | -| `model` | `MiniMax-M2.5`, `MiniMax-M2.5-highspeed`, `MiniMax-M2.1`, `MiniMax-M2` | +| `model` | `MiniMax-M3`, `MiniMax-M2.7`, `MiniMax-M2.7-highspeed` | | `open_ai_api_base` | China: `https://api.minimaxi.com/v1`; Global: `https://api.minimax.io/v1` | | `open_ai_api_key` | Coding Plan specific key (not shared with pay-as-you-go) | diff --git a/docs/models/index.mdx b/docs/models/index.mdx index c3744234..0d065e58 100644 --- a/docs/models/index.mdx +++ b/docs/models/index.mdx @@ -12,7 +12,7 @@ A snapshot of each vendor's capabilities. "Text" refers to the main chat model; | Vendor | Representative Models | Text | Vision | Image Gen | STT | TTS | Embedding | | --- | --- | :-: | :-: | :-: | :-: | :-: | :-: | | [DeepSeek](/models/deepseek) | deepseek-v4-flash / pro | ✅ | | | | | | -| [MiniMax](/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | | +| [MiniMax](/models/minimax) | MiniMax-M3 | ✅ | ✅ | ✅ | | ✅ | | | [Claude](/models/claude) | claude-opus-4-8 | ✅ | ✅ | | | | | | [Gemini](/models/gemini) | gemini-3.5-flash | ✅ | ✅ | ✅ | | | | | [OpenAI](/models/openai) | gpt-5.5, o-series | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | diff --git a/docs/models/minimax.mdx b/docs/models/minimax.mdx index d945d2ea..8a9c8084 100644 --- a/docs/models/minimax.mdx +++ b/docs/models/minimax.mdx @@ -13,14 +13,14 @@ MiniMax supports text chat, image understanding, image generation, and text-to-s ```json { - "model": "MiniMax-M2.7", + "model": "MiniMax-M3", "minimax_api_key": "YOUR_API_KEY" } ``` | Parameter | Description | | --- | --- | -| `model` | Can be `MiniMax-M2.7`, `MiniMax-M2.7-highspeed`, `MiniMax-M2.5`, `MiniMax-M2.1`, `MiniMax-M2.1-lightning`, `MiniMax-M2`, etc. | +| `model` | Can be `MiniMax-M3`, `MiniMax-M2.7`, `MiniMax-M2.7-highspeed`, etc. | | `minimax_api_key` | Create one in the [MiniMax Console](https://platform.minimaxi.com/user-center/basic-information/interface-key) | ## Image Understanding diff --git a/docs/zh/README.md b/docs/zh/README.md index b2a2877b..b276191a 100644 --- a/docs/zh/README.md +++ b/docs/zh/README.md @@ -95,7 +95,7 @@ CowAgent 支持国内外主流厂商的大语言模型。**文本对话、图像 | 厂商 | 代表模型 | 文本 | 图像理解 | 图像生成 | 语音识别 | 语音合成 | 向量 | | --- | --- | :-: | :-: | :-: | :-: | :-: | :-: | | [DeepSeek](https://docs.cowagent.ai/zh/models/deepseek) | deepseek-v4-flash / pro | ✅ | | | | | | -| [MiniMax](https://docs.cowagent.ai/zh/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | | +| [MiniMax](https://docs.cowagent.ai/zh/models/minimax) | MiniMax-M3 | ✅ | ✅ | ✅ | | ✅ | | | [Claude](https://docs.cowagent.ai/zh/models/claude) | claude-opus-4-8 | ✅ | ✅ | | | | | | [Gemini](https://docs.cowagent.ai/zh/models/gemini) | gemini-3.5-flash | ✅ | ✅ | ✅ | | | | | [OpenAI](https://docs.cowagent.ai/zh/models/openai) | gpt-5.5、o 系列 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | diff --git a/docs/zh/cli/general.mdx b/docs/zh/cli/general.mdx index 36af1783..eb0aea37 100644 --- a/docs/zh/cli/general.mdx +++ b/docs/zh/cli/general.mdx @@ -33,7 +33,7 @@ description: 查看状态、管理配置和上下文等常用命令 Process: PID 12345 | Running 2h 15m Version: 2.0.4 Channel: web -Model: MiniMax-M2.5 +Model: MiniMax-M3 Mode: agent Session: 12 messages | 8 skills loaded diff --git a/docs/zh/cli/process.mdx b/docs/zh/cli/process.mdx index 0fc38539..80b10d6c 100644 --- a/docs/zh/cli/process.mdx +++ b/docs/zh/cli/process.mdx @@ -75,7 +75,7 @@ cow status Status: ● Running (PID: 12345) Version: 2.0.4 Channel: web - Model: MiniMax-M2.5 + Model: MiniMax-M3 Mode: agent ``` diff --git a/docs/zh/models/coding-plan.mdx b/docs/zh/models/coding-plan.mdx index a8341638..6193c34b 100644 --- a/docs/zh/models/coding-plan.mdx +++ b/docs/zh/models/coding-plan.mdx @@ -61,7 +61,7 @@ description: Coding Plan 模式模型配置 ```json { "bot_type": "openai", - "model": "MiniMax-M2.5", + "model": "MiniMax-M3", "open_ai_api_base": "https://api.minimaxi.com/v1", "open_ai_api_key": "YOUR_API_KEY" } @@ -69,7 +69,7 @@ description: Coding Plan 模式模型配置 | 参数 | 说明 | | --- | --- | -| `model` | `MiniMax-M2.5`、`MiniMax-M2.5-highspeed`、`MiniMax-M2.1`、`MiniMax-M2` | +| `model` | `MiniMax-M3`、`MiniMax-M2.7`、`MiniMax-M2.7-highspeed` | | `open_ai_api_base` | 国内:`https://api.minimaxi.com/v1`;海外:`https://api.minimax.io/v1` | | `open_ai_api_key` | Coding Plan 专用 Key(与按量计费接口不通用) | diff --git a/docs/zh/models/index.mdx b/docs/zh/models/index.mdx index 4169cd4a..e0d4a35c 100644 --- a/docs/zh/models/index.mdx +++ b/docs/zh/models/index.mdx @@ -13,7 +13,7 @@ CowAgent 支持国内外主流厂商的大语言模型,模型接口实现在 | 厂商 | 代表模型 | 文本 | 图像理解 | 图像生成 | 语音识别 | 语音合成 | 向量 | | --- | --- | :-: | :-: | :-: | :-: | :-: | :-: | | [DeepSeek](/zh/models/deepseek) | deepseek-v4-flash / pro | ✅ | | | | | | -| [MiniMax](/zh/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | | +| [MiniMax](/zh/models/minimax) | MiniMax-M3 | ✅ | ✅ | ✅ | | ✅ | | | [Claude](/zh/models/claude) | claude-opus-4-8 | ✅ | ✅ | | | | | | [Gemini](/zh/models/gemini) | gemini-3.5-flash | ✅ | ✅ | ✅ | | | | | [OpenAI](/zh/models/openai) | gpt-5.5、o 系列 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | diff --git a/docs/zh/models/minimax.mdx b/docs/zh/models/minimax.mdx index 8282f88b..af7913b3 100644 --- a/docs/zh/models/minimax.mdx +++ b/docs/zh/models/minimax.mdx @@ -13,14 +13,14 @@ MiniMax 支持文本对话、图像理解、图像生成与语音合成,一份 ```json { - "model": "MiniMax-M2.7", + "model": "MiniMax-M3", "minimax_api_key": "YOUR_API_KEY" } ``` | 参数 | 说明 | | --- | --- | -| `model` | 可填 `MiniMax-M2.7`、`MiniMax-M2.7-highspeed`、`MiniMax-M2.5`、`MiniMax-M2.1`、`MiniMax-M2.1-lightning`、`MiniMax-M2` 等 | +| `model` | 可填 `MiniMax-M3`、`MiniMax-M2.7`、`MiniMax-M2.7-highspeed` 等 | | `minimax_api_key` | 在 [MiniMax 控制台](https://platform.minimaxi.com/user-center/basic-information/interface-key) 创建 | ## 图像理解 diff --git a/models/minimax/minimax_bot.py b/models/minimax/minimax_bot.py index 612f54dc..c010371d 100644 --- a/models/minimax/minimax_bot.py +++ b/models/minimax/minimax_bot.py @@ -22,7 +22,7 @@ class MinimaxBot(Bot): def __init__(self): super().__init__() self.args = { - "model": conf().get("model") or "MiniMax-M2.7", + "model": conf().get("model") or "MiniMax-M3", "temperature": conf().get("temperature", 0.3), "top_p": conf().get("top_p", 0.95), } diff --git a/run.sh b/run.sh index 21bb5a9f..4672133f 100755 --- a/run.sh +++ b/run.sh @@ -602,7 +602,7 @@ select_model() { "Claude (claude-opus-4-8, claude-opus-4-7, claude-sonnet-4-6, etc.)" \ "Gemini (gemini-3.1-flash-lite-preview, gemini-3.1-pro-preview, etc.)" \ "OpenAI GPT (gpt-5.4, gpt-5.2, gpt-4.1, etc.)" \ - "MiniMax (MiniMax-M2.7, MiniMax-M2.5, etc.)" \ + "MiniMax (MiniMax-M3, MiniMax-M2.7, etc.)" \ "Zhipu AI (glm-5.1, glm-5-turbo, glm-5, etc.)" \ "Qwen (qwen3.6-plus, qwen3.5-plus, qwen3-max, qwq-plus, etc.)" \ "Doubao (doubao-seed-2-0-code-preview-260215, etc.)" \ @@ -633,7 +633,7 @@ configure_model() { 2) read_model_config "Claude" "claude-opus-4-8" "CLAUDE_KEY" ;; 3) read_model_config "Gemini" "gemini-3.1-pro-preview" "GEMINI_KEY" ;; 4) read_model_config "OpenAI GPT" "gpt-5.4" "OPENAI_KEY" ;; - 5) read_model_config "MiniMax" "MiniMax-M2.7" "MINIMAX_KEY" ;; + 5) read_model_config "MiniMax" "MiniMax-M3" "MINIMAX_KEY" ;; 6) read_model_config "Zhipu AI" "glm-5.1" "ZHIPU_KEY" ;; 7) read_model_config "Qwen (DashScope)" "qwen3.6-plus" "DASHSCOPE_KEY" ;; 8) read_model_config "Doubao (Volcengine Ark)" "doubao-seed-2-0-code-preview-260215" "ARK_KEY" ;; diff --git a/scripts/run.ps1 b/scripts/run.ps1 index f2171258..e69786a3 100644 --- a/scripts/run.ps1 +++ b/scripts/run.ps1 @@ -368,7 +368,7 @@ $ModelChoices = @{ 2 = @{ Provider = "Claude"; Default = "claude-opus-4-8"; Field = "claude_api_key"; BaseField = "claude_api_base" } 3 = @{ Provider = "Gemini"; Default = "gemini-3.1-pro-preview"; Field = "gemini_api_key"; BaseField = "gemini_api_base" } 4 = @{ Provider = "OpenAI GPT"; Default = "gpt-5.4"; Field = "open_ai_api_key"; BaseField = "open_ai_api_base" } - 5 = @{ Provider = "MiniMax"; Default = "MiniMax-M2.7"; Field = "minimax_api_key" } + 5 = @{ Provider = "MiniMax"; Default = "MiniMax-M3"; Field = "minimax_api_key" } 6 = @{ Provider = "Zhipu AI"; Default = "glm-5.1"; Field = "zhipu_ai_api_key" } 7 = @{ Provider = "Qwen (DashScope)"; Default = "qwen3.6-plus"; Field = "dashscope_api_key" } 8 = @{ Provider = "Doubao (Volcengine Ark)"; Default = "doubao-seed-2-0-code-preview-260215"; Field = "ark_api_key" } @@ -384,7 +384,7 @@ function Select-Model { "Claude (claude-opus-4-8, claude-opus-4-7, claude-sonnet-4-6, etc.)", "Gemini (gemini-3.1-flash-lite-preview, gemini-3.1-pro-preview, etc.)", "OpenAI GPT (gpt-5.4, gpt-5.2, gpt-4.1, etc.)", - "MiniMax (MiniMax-M2.7, MiniMax-M2.5, etc.)", + "MiniMax (MiniMax-M3, MiniMax-M2.7, etc.)", "Zhipu AI (glm-5.1, glm-5-turbo, glm-5, etc.)", "Qwen (qwen3.6-plus, qwen3.5-plus, qwen3-max, qwq-plus, etc.)", "Doubao (doubao-seed-2-0-code-preview-260215, etc.)", diff --git a/tests/test_minimax_provider.py b/tests/test_minimax_provider.py index cfad7fd7..bd4cc572 100644 --- a/tests/test_minimax_provider.py +++ b/tests/test_minimax_provider.py @@ -1,7 +1,7 @@ # encoding:utf-8 """ Unit tests for MiniMax provider additions: - - MiniMax-M2.7-highspeed constant in const.py + - MiniMax-M3 / M2.7 / M2.7-highspeed constants in const.py - Default model update in MinimaxBot - MinimaxVoice TTS provider """ @@ -16,7 +16,12 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) class TestMinimaxConst(unittest.TestCase): - """Test that MiniMax-M2.7-highspeed is properly registered in const.py.""" + """Test that MiniMax M3 / M2.7 constants are properly registered in const.py.""" + + def test_m3_constant_defined(self): + from common import const + self.assertTrue(hasattr(const, "MINIMAX_M3")) + self.assertEqual(const.MINIMAX_M3, "MiniMax-M3") def test_m2_7_highspeed_constant_defined(self): from common import const @@ -27,6 +32,10 @@ class TestMinimaxConst(unittest.TestCase): from common import const self.assertEqual(const.MINIMAX_M2_7, "MiniMax-M2.7") + def test_m3_in_model_list(self): + from common import const + self.assertIn("MiniMax-M3", const.MODEL_LIST) + def test_m2_7_highspeed_in_model_list(self): from common import const self.assertIn("MiniMax-M2.7-highspeed", const.MODEL_LIST) @@ -41,9 +50,9 @@ class TestMinimaxConst(unittest.TestCase): class TestMinimaxBotDefaultModel(unittest.TestCase): - """Test that MinimaxBot defaults to MiniMax-M2.7.""" + """Test that MinimaxBot defaults to MiniMax-M3.""" - def test_default_model_is_m2_7(self): + def test_default_model_is_m3(self): # Patch conf() to return empty config mock_conf = MagicMock() mock_conf.get = MagicMock(side_effect=lambda key, default=None: default) @@ -57,18 +66,18 @@ class TestMinimaxBotDefaultModel(unittest.TestCase): with patch("models.minimax.minimax_bot.conf", return_value=mock_conf): bot = minimax_bot.MinimaxBot.__new__(minimax_bot.MinimaxBot) bot.args = { - "model": mock_conf.get("model") or "MiniMax-M2.7", + "model": mock_conf.get("model") or "MiniMax-M3", } - self.assertEqual(bot.args["model"], "MiniMax-M2.7") + self.assertEqual(bot.args["model"], "MiniMax-M3") def test_default_model_string(self): - """Verify the fallback string literal in minimax_bot.py is MiniMax-M2.7.""" + """Verify the fallback string literal in minimax_bot.py is MiniMax-M3.""" import ast bot_path = os.path.join(os.path.dirname(__file__), "..", "models", "minimax", "minimax_bot.py") with open(bot_path) as f: source = f.read() - # Verify MiniMax-M2.7 is in the source (not M2.1) - self.assertIn("MiniMax-M2.7", source) + # Verify MiniMax-M3 is in the source (not the older default) + self.assertIn("MiniMax-M3", source) self.assertNotIn('"MiniMax-M2.1"', source)