2月13日,MiniMax M2.5发布,这是 MiniMax M2 系列 108 天的三连更!M2.5 在编程、搜索、办公场景全面登顶,开源权重上线ModelScope。本文带你全面了解 M2.5 的核心能力,并提供从 API 接入到本地部署、工具调用的完整最佳实践。
MiniMax M2.5的突破
MiniMax 在 108 天内连续发布了 M2、M2.1 和 M2.5 三个版本,迭代速度之快在业内罕见。M2.5 这次带来的不仅是性能提升,而是一次"能力 + 效率 + 成本"的三重突破:
- SWE-Bench Verified 达到 80.2%,超越 GPT-5.2 (thinking),逼近 Claude Opus 4.5 的 80.9%
- Multi-SWE-Bench 达到 51.3%,多语言编程能力行业第一
- BrowseComp 达到 76.3%,搜索和工具调用能力大幅领先
资源链接:
GitHub:https://github.com/MiniMax-AI/MiniMax-M2.5
ModelScope:https://www.modelscope.cn/models/MiniMax/MiniMax-M2.5
MiniMax Agent(在线使用):https://agent.minimax.io/
API 平台:https://platform.minimax.io/
API 文档:https://platform.minimax.io/docs/guides/text-generation
Coding Plan:https://platform.minimax.io/subscribe/coding-plan
Discord 社区:https://discord.com/invite/hvvt8hAye6
技术支持邮箱:model@minimax.io
核心能力全景
先上MiniMax-M2.5 在各benchmark的表现:
Coding:像架构师一样思考
M2.5 最令人印象深刻的变化是"Spec-writing"行为的涌现——在写代码之前,模型会像一个资深架构师一样,主动拆解功能需求、设计系统结构和 UI 方案,完成完整的前期规划。
这不是简单的 bug 修复工具,M2.5 覆盖了完整的开发生命周期:从 0→1 的系统设计,1→10 的核心开发,10→90 的功能迭代,到 90→100 的 Code Review 和系统测试。支持 Web、Android、iOS、Windows 等全栈平台,涵盖后端 API、业务逻辑、数据库等,而不仅仅是"前端网页 Demo"。
关键数据:
| 评测 | M2.5 | M2.1 | Claude Opus 4.5 | Gemini 3 Pro |
| SWE-Bench Verified | 80.2 | 74.0 | 80.9 | 78.0 |
| Multi-SWE-Bench | 51.3 | 49.4 | 50.0 | 42.7 |
在不同脚手架的泛化测试中,M2.5 在 Droid 上通过率 79.7(超过 Opus 4.6 的 78.9),在 OpenCode 上为 76.1(超过 Opus 4.6 的 75.9),展现了极强的框架泛化能力。
搜索与工具调用:更精准、更高效
M2.5 在 BrowseComp(带上下文管理)上拿下了 76.3% 的成绩,大幅领先。更重要的是,模型学会了用更少的搜索轮次达到更好的效果,相比 M2.1 节省了约 20% 的轮次消耗。
MiniMax 还构建了 RISE(Realistic Interactive Search Evaluation)评测,结果表明 M2.5 在专家级搜索任务上表现卓越。
办公场景:直接交付专业产出
M2.5 与金融、法律、社科领域的资深从业者深度合作,将行业隐性知识融入训练流程。在 Word 排版、PPT 编辑、Excel 金融建模等高阶办公场景中均有显著提升。在内部 Cowork Agent 评测框架 GDPval-MM 中,M2.5 对主流模型取得了 59.0% 的平均胜率。
速度:比 M2.1 快 37%
M2.5 在运行 SWE-Bench Verified 时,端到端平均耗时从 31.3 分钟降至 22.8 分钟(速度提升 37%),与 Claude Opus 4.6 的 22.9 分钟基本持平,而成本仅为其 1/10。
技术解析:为什么 M2.5 进步这么快
MiniMax 将 M2.5 的快速进步归功于大规模强化学习,核心包括三个方面:
- Forge:原生 Agent RL 框架。 通过引入中间层完全解耦底层训推引擎与 Agent,支持任意 Agent 脚手架的接入。通过优化异步调度策略和树状合并训练样本,实现了约 40 倍的训练加速。
- CISPO 算法。 保障 MoE 模型在大规模训练中的稳定性。引入过程奖励机制(Process Reward)解决 Agent 场景中长上下文的信用分配难题。
- Reward 设计创新。 直接估计任务在真实环境下的耗时作为 Reward,在模型效果与响应速度之间找到更好的平衡点。
MiniMax 内部已经有 30% 的日常任务由 M2.5 自主完成,编程场景中 M2.5 生成的代码占新提交代码的 80%。
M2 → M2.1 → M2.5:一张表看清进化
| 能力维度 | M2 | M2.1 | M2.5 |
| SWE-Bench Verified | 69.4 | 74.0 | 80.2 |
| Multi-SWE-Bench | 36.2 | 49.4 | 51.3 |
| BrowseComp (ctx mgmt) | 56.9 | 62.0 | 76.3 |
| Toolathlon | 16.7 | 43.5 | — |
| VIBE (Average) | 67.5 | 88.6 | — |
| SWE-Bench 平均耗时 | — | 31.3 min | 22.8 min |
| 开源 | ✅ | ✅ | ✅ |
108 天,三个版本,SWE-Bench Verified 从 69.4 飙升到 80.2,这个迭代速度在 Claude、GPT、Gemini 等模型系列中是最快的。
M2.5 让"无限运行复杂 Agent"在经济上变得可行。对于 M2 系列来说,唯一的问题变成了——模型能力的进步速度能有多快?从 108 天三个版本的表现来看,答案是:非常快。
Intelligence with Everyone.
模型部署实战
M2.5 / M2.1 提供三种接入方式,从零代码到完全私有化部署,满足不同场景需求。
方式一:MiniMax Agent(零代码,开箱即用)
访问 https://agent.minimax.io/ ,直接在浏览器中使用 M2.5 的全部能力。
- 在 MAX 模式下,Agent 会自动根据文件类型加载对应的 Office Skills(Word / PPT / Excel)
- 可以将 Office Skills 与行业 SOP 组合,创建可复用的"Expert"
- 目前平台上已有超过 10,000 个用户创建的 Expert
适合非技术用户、快速验证场景、办公自动化需求。
方式二:API 调用(推荐开发者使用)
魔搭社区ModelScope提供了限时限量免费的M2.5 API-Inference服务,欢迎体验。
同时,欢迎在M2.5 API 开放平台体验官方API: http://platform.minimaxi.com/docs/guides/text-generation
M2.5 提供两个版本:
| 版本 | 速度 | 输入价格 | 输出价格 | 适用场景 |
| M2.5-Lightning | ~100 TPS | $0.3/M tokens | $2.4/M tokens | 对延迟敏感的实时应用 |
| M2.5 | ~50 TPS | 更低 | ~$1.2/M tokens | 批量任务、成本优先 |
两个版本效果相同,均支持缓存。按输出价格计算,M2.5 的成本仅为 Opus / Gemini 3 Pro / GPT-5 的 1/10 到 1/20。
快速测试 API(在魔搭社区使用 OpenAI SDK 兼容接口):
from openai import OpenAI client = OpenAI( base_url='https://api-inference.modelscope.cn/v1', api_key='<MODELSCOPE_TOKEN>', # ModelScope Token ) response = client.chat.completions.create( model='MiniMax/MiniMax-M2.5', # ModelScope Model-Id messages=[ { 'role': 'system', 'content': 'You are a helpful assistant.' }, { 'role': 'user', 'content': '你好' } ], stream=True ) for chunk in response: if chunk.choices: print(chunk.choices[0].delta.content, end='', flush=True)
API 文档:https://platform.minimax.io/docs/guides/text-generation Coding Plan 订阅:https://platform.minimax.io/subscribe/coding-plan
本地部署(For开发者)
模型权重已在 ModelScope 开源。
M2.5 模型地址:https://modelscope.cn/models/MiniMax/MiniMax-M2.5
硬件要求
- 操作系统:Linux
- Python:3.9 - 3.12
- GPU:compute capability 7.0 或更高
- 显存需求:权重需要 220 GB,每 1M 上下文 token 需要额外 240 GB
推荐硬件配置:
| 配置 | 总 KV Cache 容量 | 适用场景 |
| 96 GB × 4 卡 | 约 40 万 token | 日常开发、中等并发 |
| 144 GB × 8 卡 | 高达 300 万 token | 高并发生产环境 |
注:以上为硬件支持的最大并发缓存总量,模型单序列长度上限为 196K token。
方案 A:SGLang 部署
SGLang 是一个高性能推理引擎,具备卓越的服务吞吐和高效的内存管理。推荐作为生产环境首选。
第 1 步:安装 SGLang
# 建议使用全新的虚拟环境 uv venv source .venv/bin/activate # 从源码安装 SGLang git clone https://github.com/sgl-project/sglang cd sglang uv pip install -e "python" --prerelease=allow
第 2 步:启动服务
4 卡部署:
SGLANG_USE_MODELSCOPE=true python -m sglang.launch_server \ --model-path MiniMaxAI/MiniMax-M2.1 \ --tp-size 4 \ --tool-call-parser minimax-m2 \ --reasoning-parser minimax-append-think \ --host 0.0.0.0 \ --trust-remote-code \ --port 8000 \ --mem-fraction-static 0.85
8 卡部署(推荐生产环境):
SGLANG_USE_MODELSCOPE=truepython -m sglang.launch_server \ --model-path MiniMaxAI/MiniMax-M2.1 \ --tp-size 8 \ --ep-size 8 \ --tool-call-parser minimax-m2 \ --trust-remote-code \ --host 0.0.0.0 \ --reasoning-parser minimax-append-think \ --port 8000 \ --mem-fraction-static 0.85
第 3 步:测试服务
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "MiniMaxAI/MiniMax-M2.1", "messages": [ {"role": "system", "content": [{"type": "text", "text": "You are a helpful assistant."}]}, {"role": "user", "content": [{"type": "text", "text": "用 Python 实现一个二叉搜索树。"}]} ] }'
SGLang 常见问题:如果遇到 "MiniMax-M2 model is not currently supported" 错误,请确保 SGLang 版本 >= v0.5.4.post1。
方案 B:vLLM 部署
vLLM 是另一个高性能推理引擎,社区活跃,生态完善。
第 1 步:安装 vLLM
uv venv source .venv/bin/activate uv pip install -U vllm --extra-index-url https://wheels.vllm.ai/nightly
第 2 步:启动服务
4 卡部署:
VLLM_USE_MODELSCOPE=true vllm serve \ MiniMaxAI/MiniMax-M2.1 --trust-remote-code \ --tensor-parallel-size 4 \ --enable-auto-tool-choice --tool-call-parser minimax_m2 \ --reasoning-parser minimax_m2_append_think
8 卡部署:
VLLM_USE_MODELSCOPE=true vllm serve \ MiniMaxAI/MiniMax-M2.1 --trust-remote-code \ --enable_expert_parallel --tensor-parallel-size 8 \ --enable-auto-tool-choice --tool-call-parser minimax_m2 \ --reasoning-parser minimax_m2_append_think
方案 C:Transformers 推理(快速验证)
适合快速测试和原型验证,不推荐用于生产环境。
第 1 步:安装依赖
uv pip install transformers==4.57.1 torch accelerate --torch-backend=auto
第 2 步:Python 推理代码
from modelscope import AutoModelForCausalLM, AutoTokenizer import torch MODEL_PATH = "MiniMax/MiniMax-M2.5" # 加载模型(自动分配到多卡) model = AutoModelForCausalLM.from_pretrained( MODEL_PATH, device_map="auto", trust_remote_code=True, # 必须开启! ) tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH) # 构造对话消息 messages = [ {"role": "user", "content": [ {"type": "text", "text": "帮我写一个 Go 语言的 HTTP 服务器"} ]} ] # 推理生成 model_inputs = tokenizer.apply_chat_template( messages, return_tensors="pt", add_generation_prompt=True ).to("cuda") generated_ids = model.generate( model_inputs, max_new_tokens=2048, generation_config=model.generation_config ) response = tokenizer.batch_decode(generated_ids)[0] print(response)
注意:使用 Transformers 时必须设置 trust_remote_code=True,否则会报错。
方案 D:MLX 部署(Mac 本地推理)
如果你使用 Apple Silicon Mac,可以通过 MLX 框架在本地运行量化版本。
硬件要求:
Apple Silicon Mac(M3 Ultra 或更高),至少 256 GB 统一内存。
从ModelScope下载模型
pip install modelscope modelscope download mlx-community/MiniMax-M2.5-3bit
安装与使用:
# 安装 mlx-lm pip install -U mlx-lm # 命令行直接生成 mlx_lm.generate \ --model PATH/MiniMax-M2.5-3bit \ --prompt "如何用 Rust 实现一个并发安全的 HashMap?" \ --max-tokens 1024 \ --temp 0.7
Python 脚本:
from mlx_lm import load, generate model, tokenizer = load("PATH/MiniMax-M2.1-4bit") messages = [{"role": "user", "content": "解释一下 Transformer 的注意力机制"}] prompt = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) response = generate( model, tokenizer, prompt=prompt, max_tokens=512, temp=0.7, verbose=True ) print(response)
为大家总结部署方案选择建议:
| 场景 | 推荐方案 | 理由 |
| 生产环境、高并发 | SGLang 8 卡 | 吞吐最高、内存管理最优 |
| 中小规模生产 | vLLM 4/8 卡 | 社区成熟、问题排查资料丰富 |
| 快速原型验证 | Transformers | 安装简单、代码直观 |
| Mac 本地开发 | MLX (3bit) | 无需 GPU、本地隐私 |
| 不想管部署 | MiniMax API | 零运维、按量付费 |
工具调用(Function Calling)实战
M2.5 原生支持结构化工具调用,可以在一次回复中并行调用多个工具。
通过 vLLM / SGLang 使用(推荐)
如果你使用 vLLM 或 SGLang 部署(启动时需带上 --tool-call-parser 和 --reasoning-parser 参数),工具调用解析已内置,直接使用 OpenAI SDK 格式:
from openai import OpenAI import json client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy") # 定义工具 tools = [{ "type": "function", "function": { "name": "get_weather", "description": "获取指定城市的当前天气", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市名称,如'北京'、'上海'" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "温度单位" } }, "required": ["location", "unit"] } } }] # 发送请求 response = client.chat.completions.create( model=client.models.list().data[0].id, messages=[ {"role": "user", "content": "上海今天天气怎么样?用摄氏度。"} ], tools=tools, tool_choice="auto" ) # 解析工具调用结果 tool_call = response.choices[0].message.tool_calls[0].function print(f"调用函数: {tool_call.name}") print(f"参数: {tool_call.arguments}") # 输出: 调用函数: get_weather # 参数: {"location": "上海", "unit": "celsius"}
手动解析工具调用(Transformers 等框架)
如果使用 Transformers 或其他不内置解析器的推理框架,需要手动解析模型的 XML 格式输出。
模型输出的工具调用格式:
<minimax:tool_call> <invoke name="get_weather"> <parameter name="location">上海</parameter> <parameter name="unit">celsius</parameter> </invoke> </minimax:tool_call>
支持在一次输出中并行调用多个工具:
<minimax:tool_call> <invoke name="search_web"> <parameter name="query_list">["OpenAI 最新发布"]</parameter> </invoke> <invoke name="search_web"> <parameter name="query_list">["Gemini 最新发布"]</parameter> </invoke> </minimax:tool_call>
Transformers 下的完整工具调用流程:
from transformers import AutoTokenizer import requests import json tokenizer = AutoTokenizer.from_pretrained("MiniMaxAI/MiniMax-M2.1") # 定义工具 tools = [{ "name": "get_current_weather", "description": "获取指定城市的最新天气", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市名称,如北京、上海" } }, "required": ["location"] } }] # 构造消息 messages = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "上海今天天气怎么样?"}, ] # 应用 chat template,传入工具定义 text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, tools=tools ) # 发送请求到推理服务 payload = { "model": "MiniMaxAI/MiniMax-M2.1", "prompt": text, "max_tokens": 4096 } response = requests.post( "http://localhost:8000/v1/completions", headers={"Content-Type": "application/json"}, json=payload ) # 获取原始输出并解析 raw_output = response.json()["choices"][0]["text"] tool_calls = parse_tool_calls(raw_output, tools) # 使用下方的解析函数
手动解析函数(核心代码):
import re import json from typing import Any, Optional, List, Dict def extract_name(name_str: str) -> str: """从引号字符串中提取名称""" name_str = name_str.strip() if (name_str.startswith('"') and name_str.endswith('"')) or \ (name_str.startswith("'") and name_str.endswith("'")): return name_str[1:-1] return name_str def convert_param_value(value: str, param_type: str) -> Any: """根据参数类型转换参数值""" if value.lower() == "null": return None param_type = param_type.lower() if param_type in ["string", "str", "text"]: return value elif param_type in ["integer", "int"]: try: return int(value) except: return value elif param_type in ["number", "float"]: try: val = float(value) return val if val != int(val) else int(val) except: return value elif param_type in ["boolean", "bool"]: return value.lower() in ["true", "1"] elif param_type in ["object", "array"]: try: return json.loads(value) except: return value else: try: return json.loads(value) except: return value def parse_tool_calls( model_output: str, tools: Optional[List[Dict]] = None ) -> List[Dict]: """ 从模型输出中提取所有工具调用 返回: [{"name": "func_name", "arguments": {...}}, ...] """ if "<minimax:tool_call>" not in model_output: return [] tool_calls = [] try: tc_regex = re.compile( r"<minimax:tool_call>(.*?)</minimax:tool_call>", re.DOTALL) inv_regex = re.compile(r"<invoke name=(.*?)</invoke>", re.DOTALL) param_regex = re.compile( r"<parameter name=(.*?)</parameter>", re.DOTALL) for tc_match in tc_regex.findall(model_output): for inv_match in inv_regex.findall(tc_match): name_match = re.search(r'^([^>]+)', inv_match) if not name_match: continue func_name = extract_name(name_match.group(1)) # 查找参数类型配置 param_config = {} if tools: for tool in tools: tn = tool.get("name") or \ tool.get("function", {}).get("name") if tn == func_name: params = tool.get("parameters") or \ tool.get("function", {}).get("parameters") if isinstance(params, dict): param_config = params.get("properties", {}) break param_dict = {} for match in param_regex.findall(inv_match): pm = re.search(r'^([^>]+)>(.*)', match, re.DOTALL) if pm: pname = extract_name(pm.group(1)) pvalue = pm.group(2).strip() ptype = "string" if pname in param_config and \ isinstance(param_config[pname], dict): ptype = param_config[pname].get("type", "string") param_dict[pname] = convert_param_value(pvalue, ptype) tool_calls.append({ "name": func_name, "arguments": param_dict }) except Exception as e: print(f"解析工具调用失败: {e}") return [] return tool_calls
将工具结果返回模型
工具执行完成后,将结果以 tool 角色添加到对话历史中,模型会基于结果继续生成回答:
# 构造工具执行结果 tool_result = { "role": "tool", "content": [{ "name": "get_current_weather", "type": "text", "text": json.dumps({ "location": "上海", "temperature": "28", "unit": "celsius", "weather": "多云" }, ensure_ascii=False) }] } # 将结果加入对话历史,继续对话 messages.append({"role": "assistant", "content": raw_output}) messages.append(tool_result) # 再次调用模型,获取最终回答 # ...
工具调用最佳实践
- 优先使用 vLLM / SGLang 内置解析器,省去手动解析的麻烦
- 工具描述要清晰具体,包含参数说明、取值范围和返回值格式
- M2.5 支持并行工具调用,可以在一次回复中同时请求多个工具
- 对于搜索类任务,M2.5 已学会用更少的轮次获取更精确的结果
推理参数与提示词实战
推荐参数
官方推荐配置:
temperature = 1.0 top_p = 0.95 top_k = 40
默认系统提示词:
You are a helpful assistant. Your name is MiniMax-M2.5 and is built by MiniMax.
调优建议:
- 编程场景建议保持默认参数,模型在 RL 训练中已对这组参数充分优化
- 需要更确定性的输出(如 JSON 生成)时,可适当降低 temperature 到 0.7
- 创意类任务保持 temperature=1.0,获得更丰富的输出多样性
编程提示词技巧
利用 M2.5 的架构师思维:
请先分析需求,给出系统架构设计和模块拆分方案,然后再开始编写代码。 要求覆盖:数据模型设计、API 接口定义、错误处理策略、测试方案。
多编程语言项目: M2.5 在 Go、C/C++、TypeScript、Rust、Kotlin、Python、Java、JavaScript、PHP、Lua、Dart、Ruby 等 10+ 语言上均有训练,Multi-SWE-Bench 排名第一,是多编程语言项目的理想选择。
搭配编程脚手架
M2.5 在多种编程脚手架上展现了优秀的泛化性:
| 脚手架 | M2.5 通过率 | Opus 4.6 通过率 |
| Claude Code | 80.2 | — |
| Droid | 79.7 | 78.9 |
| OpenCode | 76.1 | 75.9 |
* 使用 Claude Code 时建议替换默认系统提示词以获得最佳效果。
点击即可跳转模型链接: