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.
This commit is contained in:
octo-patch
2026-06-01 21:30:38 +08:00
parent 1f6859d78f
commit 7fa743f01a
20 changed files with 50 additions and 44 deletions

View File

@@ -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 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |

View File

@@ -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",

View File

@@ -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,

View File

@@ -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+ モデルに接続 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |

View File

@@ -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専用キー従量課金とは共有不可 |

View File

@@ -6,7 +6,7 @@ description: CowAgent がサポートするモデルベンダーと機能マト
CowAgent は国内外の主要ベンダーの大規模言語モデルをサポートしており、モデル接続の実装はプロジェクトの `models/` ディレクトリにあります。テキスト対話に加えて、一部のベンダーは画像理解、画像生成、音声認識、音声合成、ベクトルなどの機能も提供しており、Agent フローの中で必要に応じて呼び出すことができます。
<Note>
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 で複数ベンダーを柔軟に切り替えられ、ナレッジベース、ワークフロー、プラグインなどの機能も付属しています。
</Note>
@@ -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 シリーズ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |

View File

@@ -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) で作成 |
## 画像理解

View File

@@ -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) |

View File

@@ -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 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |

View File

@@ -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

View File

@@ -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 系列 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |

View File

@@ -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

View File

@@ -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
```

View File

@@ -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与按量计费接口不通用 |

View File

@@ -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 系列 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |

View File

@@ -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) 创建 |
## 图像理解

View File

@@ -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),
}

4
run.sh
View File

@@ -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" ;;

View File

@@ -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.)",

View File

@@ -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)