MiniMax M2.5 API 接口、参数 & 代码示例
minimax/minimax-m2.5
MiniMax-M2.5 是一款最先进的大语言模型,专为提升实际生产力而设计。通过在多样化的复杂真实数字工作环境中训练,M2.5 在 M2.1 编码专长的基础上扩展至通用办公领域,能够熟练生成和操作 Word、Excel、PowerPoint 文件,在不同软件环境间进行上下文切换,并与各类智能体及人类团队协同工作。M2.5 在 SWE-Bench Verified、Multi-SWE-Bench 和 BrowseComp 上分别取得 80.2%、51.3% 和 76.3% 的得分,同时相比前代模型具有更高的词元效率——这得益于其通过规划优化自身行动与输出的训练机制。
- 模型 ID
- minimax/minimax-m2.5
- 模型系列
- MiniMax
- 更新日期
- 模型能力
- 内容生成、 深度思考、代码补全
- 上下文长度
- 200 K
- 模型价格(每 1000 tokens 输入)
- ¥ 0.0035
- 模型价格(每 1000 tokens 输出)
- ¥ 0.015
MiniMax M2.5 模型介绍:
MiniMax M2.5 在数十万个复杂的真实环境中进行了强化学习训练,其在编程、自主工具调用与搜索、办公场景等众多经济高价值任务上的能力表现优异,堪称当前最优模型。在 SWE-Bench Verified、Multi-SWE-Bench 和 BrowseComp(含上下文管理)测试中,M2.5 的成绩分别高达80.2%、51.3%和76.3%。
MiniMax M2.5 被训练以高效推理和最优分解任务,因此在执行复杂自主任务时表现出惊人的速度。其完成SWE-Bench Verified评估的速度比M2.1快37%,与Claude Opus 4.6的速度相当。
编码能力:
在编程评估中,MiniMax-M2.5 相比前代模型有显著提升,达到当前最优水平。其在多语言编程任务中的表现尤其突出。
相比前代模型的重大进步是M2.5具备了类似架构师的思考与规划能力。在训练中,模型展现出“规范撰写”倾向:在编写任何代码之前,M2.5会从资深软件架构师的视角出发,主动分解并规划项目的功能、结构和UI设计。
M2.5经过超过10种语言(包括Go、C、C++、TypeScript、Rust、Kotlin、Python、Java、JavaScript、PHP、Lua、Dart和Ruby)的训练,涉及超过20万个真实环境。M2.5的能力远超修复bug范畴,能够可靠地贯穿复杂系统的整个开发周期:从从零到一的系统设计和环境搭建,到一到十的系统开发,到十到九十的功能迭代,直至九十到一百的全面代码审查和系统测试。其覆盖跨Web、Android、iOS及Windows平台的全栈项目,涵盖服务器端API、业务逻辑、数据库等多个方面,而不仅仅是前端网页演示。
为评估这些能力,我们也对VIBE基准进行了升级,推出更复杂、更具挑战性的Pro版本,显著提高了任务复杂度、领域覆盖范围和评估准确性。总体而言,M2.5的表现与Opus 4.5相当。
我们重点评估了模型在分布外测试环境中的泛化能力,使用不同编码代理测试框架对SWE-Bench Verified评估集进行测试。
在Droid平台:79.7(M2.5)> 78.9(Opus 4.6)
在OpenCode平台:76.1(M2.5)> 75.9(Opus 4.6)
搜索与工具调用:
高效地调用工具和进行搜索是模型自主处理复杂任务的前提。在BrowseComp和Wide Search等基准测试中,M2.5取得了行业领先的性能表现。同时,模型的泛化能力也得到了提升——面对陌生的环境时,M2.5展现出更稳定的表现。
在专业人士的研究任务中,使用搜索引擎只是整个流程的一小部分,大部分工作涉及在信息密集的网页中深度探索。为此,我们构建了RISE(真实交互式搜索评估)框架,以衡量模型在真实专业任务中的搜索能力。结果表明,M2.5在真实世界中处理专家级搜索任务表现出色。
相比前代模型,M2.5在处理自主任务时展现出更优的决策能力:其已学会通过更精准的搜索轮次和更高的token效率解决问题。例如,在BrowseComp、Wide Search和RISE等多个自主任务中,M2.5仅需更少的交互轮次即可获得更佳结果,与M2.1相比,平均减少了约20%的轮次。这表明模型不仅能够正确获取答案,还能以更高效的路径进行推理。
办公场景:
M2.5被训练以在办公场景中产出真正可交付的成果。为此,我们与金融、法律和社会科学等领域的资深专业人士开展了深入合作。他们参与了需求设计、标准制定、数据构建等工作,将行业隐性知识融入模型训练流程。在此基础上,M2.5在Word、PowerPoint和Excel财务建模等高价值办公场景中实现了显著的能力提升。在评估方面,我们构建了内部“同事代理”评估框架GDPval-MM,通过成对比较评估交付成果的质量和代理执行轨迹的专业性,同时监控整个工作流的token成本,以估算模型在实际应用中的生产力提升。与其他主流模型相比,M2.5的平均胜率达59.0%。
效率表现:
由于现实世界充满截止期限和时间限制,任务完成速度是一项实际需求。模型完成任务所需时间取决于任务分解效率、token效率和推理速度。M2.5原生支持每秒100个token的生成速度,接近其他前沿模型的两倍。此外,我们的强化学习设置促使模型高效推理并最优分解任务。由于上述三项因素,M2.5在完成复杂任务时显著节省了时间。
例如,在运行SWE-Bench Verified测试时,M2.5平均每任务消耗352万个token,而M2.1为372万个。同时,得益于并行工具调用等能力的提升,端到端运行时间从平均31.3分钟降至22.8分钟,速度提升了37%。这一运行时间与Claude Opus 4.6的22.9分钟相当,而每任务总成本仅为Claude Opus 4.6的10%。
API 接口地址:
https://wcode.net/api/gpt/v1/chat/completions
此 API 接口兼容 OpenAI 的接口规范,也就是可以直接使用 OpenAI 的 SDK 来调用各个模型。仅需替换以下两项配置即可:
base_url替换为https://wcode.net/api/gpt/v1api_key替换为从 https://wcode.net/get-apikey 获取到的 API Key具体可参考下方的各编程语言代码示例中的 openai sdk 调用示例。
请求方法:
POST
各编程语言代码示例:
# TODO: 以下代码中的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
curl --request POST 'https://wcode.net/api/gpt/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer API_KEY' \
--data '{
"model": "minimax/minimax-m2.5",
"messages": [
{
"role": "user",
"content": "你好"
}
]
}'
import Foundation
let headers = [
"Authorization": "Bearer API_KEY", // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
"content-type": "application/json"
]
let parameters = [
"model": "minimax/minimax-m2.5",
"messages": [
[
"role": "user",
"content": "你好"
]
]
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://wcode.net/api/gpt/v1/chat/completions")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 60.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
var headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer API_KEY' // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
};
var request = http.Request('POST', Uri.parse('https://wcode.net/api/gpt/v1/chat/completions'));
request.body = json.encode({
"model": "minimax/minimax-m2.5",
"messages": [
{
"role": "user",
"content": "你好"
}
]
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
require 'uri'
require 'net/http'
url = URI("https://wcode.net/api/gpt/v1/chat/completions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer API_KEY' # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
request["content-type"] = 'application/json'
request.body = "{\"model\":\"minimax/minimax-m2.5\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}"
response = http.request(request)
puts response.read_body
use serde_json::json;
use reqwest;
#[tokio::main]
pub async fn main() {
let url = "https://wcode.net/api/gpt/v1/chat/completions";
let payload = json!({
"model": "minimax/minimax-m2.5",
"messages": (
json!({
"role": "user",
"content": "你好"
})
)
});
let mut headers = reqwest::header::HeaderMap::new();
headers.insert("Authorization", "Bearer API_KEY".parse().unwrap()); // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
headers.insert("content-type", "application/json".parse().unwrap());
let client = reqwest::Client::new();
let response = client.post(url)
.headers(headers)
.json(&payload)
.send()
.await;
let results = response.unwrap()
.json::<serde_json::Value>()
.await
.unwrap();
dbg!(results);
}
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://wcode.net/api/gpt/v1/chat/completions");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer API_KEY"); // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"model\":\"minimax/minimax-m2.5\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}");
CURLcode ret = curl_easy_perform(hnd);
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://wcode.net/api/gpt/v1/chat/completions"
payload := strings.NewReader("{\"model\":\"minimax/minimax-m2.5\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer API_KEY") // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://wcode.net/api/gpt/v1/chat/completions");
request.Headers.Add("Authorization", "Bearer API_KEY"); // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
request.Content = new StringContent("{\"model\":\"minimax/minimax-m2.5\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}", null, "application/json");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
var client = new RestClient("https://wcode.net/api/gpt/v1/chat/completions");
var request = new RestRequest("", Method.Post);
request.AddHeader("Authorization", "Bearer API_KEY"); // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"model\":\"minimax/minimax-m2.5\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}", ParameterType.RequestBody);
var response = client.Execute(request);
const axios = require('axios');
let data = JSON.stringify({
"model": "minimax/minimax-m2.5",
"messages": [
{
"role": "user",
"content": "你好"
}
]
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://wcode.net/api/gpt/v1/chat/completions',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer API_KEY' // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
},
data : data
};
axios.request(config).then((response) => {
console.log(JSON.stringify(response.data));
}).catch((error) => {
console.log(error);
});
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"model\":\"minimax/minimax-m2.5\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}");
Request request = new Request.Builder()
.url("https://wcode.net/api/gpt/v1/chat/completions")
.post(body)
.addHeader("Authorization", "Bearer API_KEY") // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
$client = new \GuzzleHttp\Client();
$headers = [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer API_KEY', // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
];
$body = '{
"model": "minimax/minimax-m2.5",
"messages": [
{
"role": "user",
"content": "你好"
}
]
}';
$request = new \GuzzleHttp\Psr7\Request('POST', 'https://wcode.net/api/gpt/v1/chat/completions', $headers, $body);
$response = $client->sendAsync($request)->wait();
echo $response->getBody();
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://wcode.net/api/gpt/v1/chat/completions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 5,
CURLOPT_TIMEOUT => 300,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'minimax/minimax-m2.5',
'messages' => [
[
'role' => 'user',
'content' => '你好'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer API_KEY", // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
"content-type: application/json",
],
]);
$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
if ($error) {
echo "cURL Error #:" . $error;
} else {
echo $response;
}
import requests
import json
url = "https://wcode.net/api/gpt/v1/chat/completions"
payload = {
"model": "minimax/minimax-m2.5",
"messages": [
{
"role": "user",
"content": "你好"
}
]
}
headers = {
"Authorization": "Bearer API_KEY", # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(json.dumps(response.json(), indent=4, ensure_ascii=False))
from openai import OpenAI
client = OpenAI(
base_url="https://wcode.net/api/gpt/v1",
api_key="API_KEY" # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
)
completion = client.chat.completions.create(
model="minimax/minimax-m2.5",
messages=[
{
"role": "user",
"content": "你好"
}
]
)
print(completion.choices[0].message.content)
API 响应示例:
{
"id": "chatcmpl-t1770950643s957r59ca783080352d1a36292774",
"model": "minimax/minimax-m2.5",
"object": "chat.completion",
"created": 1770950646,
"choices": [
{
"logprobs": null,
"finish_reason": "stop",
"native_finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "你好!我是 MiniMax M2.5,很高兴认识你!\n\n我是由 MiniMax 公司开发的 AI 助手。我的主要特点是:\n\n1. **多模态能力**:我能够理解和生成文本、代码、图像等多种形式的内容\n2. **中文能力突出**:作为中国团队开发的 AI,我对中文有很好的理解和处理能力\n3. **知识丰富**:我训练时接触了大量知识,可以帮助你解答各种问题\n4. **编程辅助**:我可以帮你编写、调试和解释代码\n5. **持续学习**:我还在不断学习和进步中\n\n我可以帮助你完成很多任务,比如:\n\n- 回答问题\n- 写作和翻译\n- 编写代码\n- 分析和解释内容\n- 提供建议和信息\n\n有什么我可以帮助你的吗?😊",
"refusal": null,
"reasoning": "\n用户用中文问我是否可以用中文回答介绍自己。我应该用中文回答,介绍我是MiniMax M2.5助手。\n"
}
}
],
"system_fingerprint": "",
"usage": {
"prompt_tokens": 52,
"completion_tokens": 185,
"total_tokens": 237,
"prompt_tokens_details": {
"cached_tokens": 0,
"audio_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 29,
"audio_tokens": 0
}
}
}
可选参数:
- 温度
- Top-P
- Top-K
- 频率惩罚
- 存在惩罚
- 重复惩罚
- Min-P
- Top-A
- 种子
- 最大 tokens 数
- Logit Bias
- 对数概率
- 最高对数概率
- 响应格式
- 结构化输出
- 停止
- 工具
- 工具选择
- 并行工具调用
- 冗长程度
重要提示:由于模型架构不同,部分参数可能仅适用于特定的模型。
温度
-
参数:
temperature -
可选,浮点数,0.0 到 2.0
-
默认:
1.0
此设置影响模型回复的多样性。较低的值会使回复更可预测、更常见;较高的值会鼓励更具多样性且较不常见的回复。当设置为 0 时,模型对相同输入将尽可能的给出相同的回复。
Top-P
-
参数:
top_p -
可选,float,0.0 至 1.0
-
默认值:
1.0
top_p 参数控制模型在生成文本时的候选词选择范围。具体来说,模型会生成一组候选 token,然后从累积概率达到或超过 p 的 token 中随机选择一个作为输出。通过这种方式,top_p 能够在保证生成内容的多样性的同时,考虑到概率分布的合理性。
由于 temperature 与 top_p 均可以控制生成文本的多样性,因此建议您只设置其中一个值。
Top-K
-
参数:
top_k -
可选,int,>= 0
-
默认值:
0
top_k 会限制模型在每一步对 token 的选择,使其从较小的集合中进行选择。值为 1 表示模型将始终选择最有可能的下一个 token,从而得到可预测的结果。
频率惩罚
-
参数:
frequency_penalty -
可选,float,-2.0 至 2.0
-
默认值:
0.0
frequency_penalty 可根据词条在输入中出现的频率来控制其重复使用。它会尝试减少那些在输入中出现频率较高的词条的使用频率,这与它们出现的频率成正比。词条惩罚会随着出现次数的增加而增加。负值将鼓励词条重复使用。
存在惩罚
-
参数:
presence_penalty -
可选,float,-2.0 至 2.0
-
默认值:
0.0
presence_penalty 调整模型重复输入中已使用的特定标记的频率。值越高,重复的可能性就越小,负值则相反。标记惩罚不会随着出现次数而变化。负值会鼓励标记重用。
重复惩罚
-
参数:
repetition_penalty -
可选,float,0.0 至 2.0
-
默认值:
1.0
repetition_penalty 有助于减少输入中标记的重复。较高的值会降低模型重复标记的可能性,但过高的值会使输出不够连贯(通常会出现缺少小词的连续句子)。标记惩罚会根据原始标记的概率进行调整。
Min-P
-
参数:
min_p -
可选,float,0.0 至 1.0
-
默认值:
0.0
min_p 表示某个 token 被考虑的最小概率,该概率是相对于最可能的 token 的概率而言的。如果 min_p 设置为 0.1,则意味着它只允许概率至少为最佳选项十分之一的 token 被考虑。
Top-A
-
参数:
top_a -
可选,float,0.0 到 1.0
-
默认值:
0.0
top_a 仅考虑概率“足够高”的 top tokens,该概率基于最可能的 token 概率。可以将其视为一个动态的 Top-P。较低的 Top-A 值会根据概率最高的 token 集中选择,但范围会更窄。较高的 Top-A 值不一定会影响输出的创造性,但会根据最大概率优化过滤过程。
种子
-
参数:
seed -
可选,int
如果指定了 seed 参数,推理将确定性地进行采样,即使用相同种子和参数的重复请求应该返回相同的结果。某些模型无法保证确定性。
最大 tokens 数
-
参数:
max_tokens -
可选,int,>= 1
max_tokens 可设定模型在响应中可以生成的 token 数量的上限。模型不会生成超过此限制的 token。其最大值等于上下文长度减去 prompt 长度。
Logit Bias
-
参数:
logit_bias -
可选,object
logit_bias 是一个可选参数,用于修改指定 token 在模型生成输出中出现的可能性。
对数概率
-
参数:
logprobs -
可选,boolean
logprobs 设置是否返回输出 token 的对数概率。如果为 true,则返回每个输出 token 的对数概率。
最高对数概率
-
参数:
top_logprobs -
可选,int
top_logprobs 是一个介于 0 和 20 之间的整数,指定在每个 token 位置要返回的最可能 token 的数量,每个 token 都会带有相应的对数概率。如果使用此参数,则必须将 logprobs 设置为 true。
响应格式
-
参数:
response_format -
可选,object
response_format 强制模型产出特定的输出格式。将其设置为 { "type": "json_object" } 可启用 JSON 模式,保证模型生成的消息为有效的 JSON。
注意:使用 JSON 模式时,应同时通过 system 或 user 提示词指示模型生成 JSON。
结构化输出
-
参数:
structured_outputs -
可选,boolean
指示模型是否能够使用 response_format 中的 json_schema 返回结构化输出。
停止
-
参数:
stop -
可选,array
如果模型遇到 stop 数组中指定的任意 token,则立即停止生成。
工具
-
参数:
tools -
可选,array
工具调用参数,遵循 OpenAI 的工具调用请求格式。对于非 OpenAI 提供者,会相应地进行转换。
工具选择
-
参数:
tool_choice -
可选,array
控制模型调用哪个工具。'none' 表示模型不会调用任何工具,而是生成一条消息。'auto' 表示模型可以在生成消息或调用一个或多个工具之间进行选择。'required' 表示模型必须调用一个或多个工具。通过 {"type": "function", "function": {"name": "my_function"}} 指定特定工具会强制模型调用该工具。
并行工具调用
-
参数:
parallel_tool_calls -
可选,boolean
-
默认:true
是否在使用工具时启用并行函数调用。如果为 true,模型可以同时调用多个函数。如果为 false,函数将按顺序依次调用。
冗长程度
-
参数:
verbosity -
可选,enum,
lowmediumhigh -
默认:medium
控制模型响应的冗长程度和长度。较低的值会生成更简洁的回答,而较高的值会生成更详细、更全面的回答。
以上文档为标准版 API 接口文档,可直接用于项目开发和系统调用。如果标准版 API 接口无法满足您的需求,需要定制开发 API 接口,请联系我们的 IT 技术支持工程师:
(沟通需求✅ → 确认技术方案✅ → 沟通费用与工期✅ → 开发&测试✅ → 验收交付✅ → 维护升级✅)
![]()