MiniMax M2.5 开源,低成本Agent时代来了!社区Day0部署、工具调用、推理&提示词参数实战来啦!
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 时建议替换默认系统提示词以获得最佳效果。
点击即可跳转模型链接:
https://www.modelscope.cn/models/MiniMax/MiniMax-M2.5
更多推荐




所有评论(0)