🔮 MiMo Chat Completions API

Xiaomi MiMo V2.5 系列 OpenAI 兼容对话补全接口完整文档。支持多轮对话、深度思考、工具调用、联网搜索、语音合成、图像/视频输入等全功能。

支持模型:mimo-v2.5-pro · mimo-v2.5 · mimo-v2.5-tts · mimo-v2.5-tts-voicedesign · mimo-v2.5-tts-voiceclone

📌 概述 & 基本信息

MiMo Chat Completions API 是小米大语言模型提供的 OpenAI 兼容对话补全接口,支持 RESTful HTTP 协议,所有请求与响应均使用 JSON 格式。流式响应采用 SSE(Server-Sent Events)。

项目
Base URLhttps://api.xiaomimimo.com/v1/chat/completions
协议HTTPS (POST)
认证方式api-key Header 或 Authorization Bearer
内容类型application/json
SDK 兼容OpenAI Python / Node.js SDK(修改 base_url 即可)
文档日期2026-07-15
更新时间2026-06-29(官方)
⚠️ 版本提醒:MiMo-V2 系列模型已于 2026.6.30 00:00 正式下线,原模型名称已失效。请使用 V2.5 系列模型。

核心能力一览

💬

多轮对话

支持 system/user/assistant/developer/tool 多角色消息

🧠

深度思考

思维链推理,返回 reasoning_content

🔧

工具调用

Function Calling + Web Search 工具

🌐

联网搜索

自动联网检索并返回引用注释

🖼️

多模态输入

支持图像、音频、视频输入

🎙️

语音合成

TTS / Voice Design / Voice Clone

📡

SSE 流式

流式输出,降低首字延迟

📊

用量明细

缓存命中/推理 token 等详细统计

⚡ 快速开始

获取 API Key 后即可开始调用。支持 OpenAI SDK 兼容格式,也可直接使用 HTTP 请求。

bashcurl --location --request POST 'https://api.xiaomimimo.com/v1/chat/completions' \
--header "api-key: $MIMO_API_KEY" \
--header "Content-Type: application/json" \
--data-raw '{
    "model": "mimo-v2.5-pro",
    "messages": [
        {
            "role": "system",
            "content": "You are MiMo, an AI assistant developed by Xiaomi."
        },
        {
            "role": "user",
            "content": "你好,请介绍一下自己"
        }
    ],
    "max_completion_tokens": 1024,
    "temperature": 1.0,
    "top_p": 0.95,
    "stream": false,
    "thinking": {
        "type": "disabled"
    }
}'
pythonfrom openai import OpenAI

client = OpenAI(
    api_key="$MIMO_API_KEY",
    base_url="https://api.xiaomimimo.com/v1"
)

response = client.chat.completions.create(
    model="mimo-v2.5-pro",
    messages=[
        {"role": "system", "content": "You are MiMo, an AI assistant developed by Xiaomi."},
        {"role": "user", "content": "你好,请介绍一下自己"}
    ],
    max_completion_tokens=1024,
    temperature=1.0,
    thinking={"type": "disabled"}
)

print(response.choices[0].message.content)

💰 可用模型

模型 ID类型默认 max_tokens深度思考工具调用语音合成联网搜索
mimo-v2.5-pro旗舰文本131072✅ 支持✅ 支持✅ 支持
mimo-v2.5标准文本32768✅ 支持✅ 支持✅ 支持
mimo-v2.5-tts语音合成8192✅ 预置音色
mimo-v2.5-tts-voicedesign音色设计8192✅ 音色设计
mimo-v2.5-tts-voiceclone声音克隆8192✅ 声音克隆
💡 temperature 默认值:mimo-v2.5-pro / mimo-v2.5 默认 1.0;TTS 系列默认 0.6

🔐 认证方式

接口支持以下两种认证方式,选择其中一种添加到请求头中:

方式一:api-key 字段认证

httpapi-key: $MIMO_API_KEY
Content-Type: application/json

方式二:Authorization Bearer 认证

httpAuthorization: Bearer $MIMO_API_KEY
Content-Type: application/json

📥 请求参数详解

POST https://api.xiaomimimo.com/v1/chat/completions

核心参数

参数名类型必填描述
modelstring必选模型 ID。可选值:mimo-v2.5-pro, mimo-v2.5, mimo-v2.5-tts, mimo-v2.5-tts-voicedesign, mimo-v2.5-tts-voiceclone
messagesarray必选对话消息列表。支持 role: system / user / assistant / developer / tool
messages[].rolestring必选角色:system / user / assistant / developer / tool
messages[].contentstring | array必选消息内容。支持纯文本或多模态 content parts 数组
messages[].namestring可选参与者名称,用于区分相同角色的不同参与者

生成控制参数

参数名类型必填描述
max_completion_tokensinteger | null可选生成 token 上限(含推理 token)。pro 默认 131072;标准版 32768;TTS 系列 8192。范围 [1, 131072]
temperaturenumber可选采样温度 [0, 1.5]。pro/标准默认 1.0;TTS 默认 0.6。思考模式下不可自定义
top_pnumber可选核采样概率 [0.01, 1.0],默认 0.95。建议仅与 temperature 二选一。思考模式下不可自定义
frequency_penaltynumber | null可选频率惩罚 [-2.0, 2.0],默认 0
presence_penaltynumber | null可选存在惩罚 [-2.0, 2.0],默认 0
stopstring | array | null可选停止序列(最多 4 个)。TTS 系列不支持
streamboolean | null可选是否 SSE 流式传输,默认 false
response_formatobject可选指定输出格式。TTS 系列不支持

深度思考参数

参数名类型必填描述
thinkingobject可选思维链控制。TTS 系列不支持
thinking.typestring可选"enabled"(默认)或 "disabled"
⚠️ 思考模式限制:在思考模式下,mimo-v2.5-pro / mimo-v2.5 不支持自定义 temperature 和 top_p,强制使用推荐默认值 1.0 和 0.95。多轮工具调用中建议保留历史 reasoning_content。

工具调用参数

参数名类型必填描述
toolsarray可选工具列表。支持 function 和 web_search 两种类型。TTS 系列不支持
tools[].typestring必选工具类型:"function""web_search"
tools[].function.namestring必选函数名(a-z, A-Z, 0-9, _, -),最大 64 字符
tools[].function.descriptionstring可选功能描述
tools[].function.parametersobject可选JSON Schema 格式的参数定义
tools[].function.strictboolean可选是否严格遵循 schema,默认 false
tool_choicestring可选仅支持 "auto"。传入其他值会被后端移除。TTS 系列不支持

语音合成参数 (audio)

参数名类型必填描述
audioobject可选音频输出参数。仅 TTS 系列模型支持
audio.formatstring可选输出格式:wav(默认) / mp3 / pcm / pcm16。stream:true 时默认 pcm
audio.voicestring可选预置音色 ID 或 base64 音频样本。TTS 预置:mimo_default, 冰糖, 茉莉, 苏打, 白桦, Mia, Chloe, Milo, Dean
audio.optimize_text_previewboolean可选智能润色播报文本,默认 false。仅 voicedesign 模型支持
💡 TTS 提示:要生成音频时,必须添加一条 role: "assistant" 的消息指定合成文本。使用 voicedesign + optimize_text_preview=true 时可省略 assistant 消息。

🖼️ 多模态输入

messages[].content 为数组时,可混合传入文本、图像内容。采用 OpenAI 兼容的 content parts 数组格式。

content parts 字段

字段名类型描述
contentstring | array纯文本字符串,或 content parts 数组
content[].typestringpart 类型:"text" / "image_url"
content[].textstring文本内容(type 为 "text" 时必填)
content[].image_urlobject图像对象(type 为 "image_url" 时必填)
content[].image_url.urlstring图像公网 URL 或 base64 data URI(格式:data:image/png;base64,...
content[].image_url.detailstring可选,清晰度:"low" / "high" / "auto"(默认 "auto"
📌 支持的图像格式:
  • URL:公网可访问的 HTTPS 图片地址
  • Base64 data URIdata:image/{format};base64,{base64_data},支持 png / jpeg / gif / webp

多模态消息示例

json{
  "role": "user",
  "content": [
    { "type": "text", "text": "请描述这张图片的内容" },
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/image.jpg",
        "detail": "auto"
      }
    }
  ]
}
⚠️ 多模态限制:
  • mimo-v2.5-pro / mimo-v2.5 文本模型支持图像输入
  • TTS 系列模型(mimo-v2.5-tts*)不支持多模态图像输入
  • 历史消息中的图片 content 数组应原样保留,不建议在多轮对话中删除
  • base64 data URI 会显著增加请求体大小,建议对大图先压缩或使用公网 URL

📤 响应对象(非流式输出)

stream: false 时,API 返回完整的 chat.completion 对象。

顶层字段

字段名类型描述
idstring响应的唯一标识符
objectstring固定值 "chat.completion"
createdintegerUnix 时间戳(秒)
modelstring实际使用的模型 ID

choices[] 字段

字段名类型描述
choices[].indexinteger选项索引
choices[].finish_reasonstring停止原因:stop / length / tool_calls / content_filter / repetition_truncation
choices[].message.contentstring回复内容
choices[].message.reasoning_contentstring思维链推理内容(思考模式)
choices[].message.rolestring固定为 "assistant"
choices[].message.tool_callsarray工具调用列表(如有)
choices[].message.tool_calls[].idstring工具调用 ID
choices[].message.tool_calls[].typestring固定为 "function"
choices[].message.tool_calls[].function.namestring被调用的函数名
choices[].message.tool_calls[].function.argumentsstringJSON 格式的调用参数
choices[].message.annotationsarray联网搜索引用注释(如有)
choices[].message.audioobject音频响应数据(TTS 请求时)
choices[].message.audio.idstring音频唯一标识
choices[].message.audio.datastringBase64 编码的音频数据
choices[].final_text_previewstring优化后的播报文本(optimize_text_preview 时返回)

usage 用量信息

字段名类型描述
usage.prompt_tokensinteger提示词 token 数
usage.completion_tokensinteger输出 token 数
usage.total_tokensinteger总 token 数
usage.completion_tokens_details.reasoning_tokensinteger推理 token 数
usage.prompt_tokens_details.cached_tokensinteger缓存命中的 token 数
usage.prompt_tokens_details.audio_tokensinteger音频输入 token 数
usage.prompt_tokens_details.image_tokensinteger图像输入 token 数
usage.prompt_tokens_details.video_tokensinteger视频输入 token 数
usage.web_search_usage.tool_usageinteger联网搜索 API 调用次数
usage.web_search_usage.page_usageinteger联网搜索返回网页数

响应示例

json{
    "id": "8b51f9e0515949cb8207fbd35ea6ea5c",
    "object": "chat.completion",
    "created": 1776848906,
    "model": "mimo-v2.5-pro",
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "message": {
                "content": "Hello! I'm MiMo, Xiaomi's AI assistant created by the Xiaomi LLM-Core team...",
                "role": "assistant",
                "tool_calls": null
            }
        }
    ],
    "usage": {
        "completion_tokens": 72,
        "prompt_tokens": 57,
        "total_tokens": 129,
        "completion_tokens_details": {
            "reasoning_tokens": 0
        },
        "prompt_tokens_details": null
    }
}

📤 响应 Chunk 对象(流式输出)

stream: true 时,API 通过 SSE 以 chat.completion.chunk 格式增量返回数据。

SSE 格式说明:每个 chunk 以 data: {...} 行发送,结束标记为 data: [DONE]

Chunk 特有字段(vs 非流式差异)

字段名类型描述
objectstring固定值 "chat.completion.chunk"
choices[].deltaobject增量数据(替代 message)
choices[].delta.contentstring本 chunk 的文本增量
choices[].delta.reasoning_contentstring本 chunk 的推理增量
choices[].delta.rolestring首个 chunk 中的角色(通常为 "assistant")
choices[].delta.tool_callsarray增量工具调用(含 index 定位)
choices[].delta.tool_calls[].indexinteger工具调用在列表中的索引(从 0 开始)
choices[].delta.audioobject | null音频增量数据
choices[].finish_reasonstring | null最后一个 chunk 的停止原因

其余字段(id, created, model, usage, annotations 等)与非流式相同,通常仅在最后一个 chunk 中返回 usage。

🧠 深度思考模式

MiMo V2.5 Pro 和标准版支持思维链(Chain-of-Thought)推理,让模型在回答前进行深度推理。适用于数学、逻辑、编程、复杂分析等场景。

核心参数

参数名类型描述
thinking.typestring"enabled"(默认)启用 / "disabled" 关闭

行为说明

不支持范围:mimo-v2.5-tts / mimo-v2.5-tts-voicedesign / mimo-v2.5-tts-voiceclone 不支持思考模式。

🔧 工具调用 (Function Calling)

MiMo 支持 Function Calling,允许模型调用外部函数获取信息或执行操作。同时内置 Web Search 联网搜索工具。

核心要点

特性描述
工具类型function(函数工具)+ web_search(联网搜索)
tool_choice仅支持 "auto"。传入其他值会被后端移除
strict 模式支持 strict: true,严格遵循 JSON Schema(子集)
思考模式兼容V2.5 Pro/标准版支持思考模式下的工具调用

Function Tool 结构

json{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "获取指定城市的当前天气信息",
    "parameters": {
      "type": "object",
      "properties": {
        "location": { "type": "string", "description": "城市名称" }
      },
      "required": ["location"]
    },
    "strict": false
  }
}
💡 多轮工具调用提示:思考模式下工具调用会同时返回 reasoning_content,务必在后续轮次中保留以维持上下文连贯性。

🌐 联网搜索

MiMo 内置 Web Search 工具,模型可自动联网检索最新信息并在回答中引用来源。

启用方式

tools 数组中添加 web search 类型的工具:

json{
  "tools": [
    { "type": "web_search" }
  ]
}

返回的引用注释 (annotations)

字段名类型描述
annotations[].titlestring引用页面标题
annotations[].urlstring引用网址
annotations[].site_namestring网站名称
annotations[].summarystring内容摘要
annotations[].publish_timestring发布时间
annotations[].logo_urlstring网站 Logo 地址
annotations[].typestring类型
error_messagestring联网搜索错误信息(如有)

🎙️ 语音合成 (TTS)

MiMo 提供三种 TTS 能力,通过不同的模型和 audio 参数组合实现。

三种模式对比

能力模型audio.voice特点
预置音色 TTSmimo-v2.5-tts可选,预置音色名9 种预置音色,默认 mimo_default
音色设计mimo-v2.5-tts-voicedesign不支持通过文字描述设计音色
声音克隆mimo-v2.5-tts-voiceclone必填,base64 音频上传 3~10 秒音频样本克隆声音

预置音色列表 (mimo-v2.5-tts)

音色 ID说明
mimo_default默认音色
冰糖甜美女声
茉莉温柔女声
苏打清爽男声
白桦沉稳男声
Mia英文女声
Chloe英文女声
Milo英文男声
Dean英文男声

音频格式

format 值说明
wavWAV 格式(默认)
mp3MP3 格式
pcm / pcm16PCM16 格式(stream 模式下默认)
⚠️ TTS 限制:TTS 系列模型 max_completion_tokens 范围为 [1, 8192];不支持 thinking、tools、response_format、stop 参数。

💻 代码示例

基础调用(非流式)

pythonfrom openai import OpenAI

client = OpenAI(api_key="$MIMO_API_KEY", base_url="https://api.xiaomimimo.com/v1")

response = client.chat.completions.create(
    model="mimo-v2.5-pro",
    messages=[
        {"role": "system", "content": "You are MiMo, an AI assistant developed by Xiaomi."},
        {"role": "user", "content": "你好,请介绍一下自己"}
    ],
    max_completion_tokens=1024,
    temperature=1.0,
    thinking={"type": "disabled"}
)

print(response.choices[0].message.content)
print(f"输入: {response.usage.prompt_tokens}, 输出: {response.usage.completion_tokens}")
bashcurl --location --request POST 'https://api.xiaomimimo.com/v1/chat/completions' \
--header "api-key: $MIMO_API_KEY" \
--header "Content-Type: application/json" \
--data-raw '{"model":"mimo-v2.5-pro","messages":[{"role":"system","content":"You are MiMo."},{"role":"user","content":"你好"}],"max_completion_tokens":1024,"thinking":{"type":"disabled"}}'

流式响应

pythonfrom openai import OpenAI

client = OpenAI(api_key="$MIMO_API_KEY", base_url="https://api.xiaomimimo.com/v1")

response = client.chat.completions.create(
    model="mimo-v2.5-pro",
    messages=[
        {"role": "system", "content": "你是一个专业的编程助手。"},
        {"role": "user", "content": "解释 JavaScript 的事件循环机制"}
    ],
    stream=True
)

full_reply = ""
for chunk in response:
    content = chunk.choices[0].delta.content
    if content:
        full_reply += content
        print(content, end="", flush=True)

# 继续对话
messages.append({"role": "assistant", "content": full_reply})
messages.append({"role": "user", "content": "能给一个 async/await 的代码示例吗?"})
javascriptconst response = await fetch('https://api.xiaomimimo.com/v1/chat/completions', {
  method: 'POST',
  headers: {
    'api-key': MIMO_API_KEY,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'mimo-v2.5-pro',
    messages: [
      { role: 'system', content: '你是一个专业的编程助手。' },
      { role: 'user', content: '解释 JavaScript 的事件循环机制' }
    ],
    stream: true
  })
});

const reader = response.body.getReader();
const decoder = new TextDecoder();
let buffer = '';

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  buffer += decoder.decode(value, { stream: true });
  const lines = buffer.split('\n');
  buffer = lines.pop();
  for (const line of lines) {
    if (!line.startsWith('data: ') || line === 'data: [DONE]') continue;
    const chunk = JSON.parse(line.slice(6));
    const content = chunk.choices[0]?.delta?.content;
    if (content) process.stdout.write(content);
  }
}

深度思考模式

pythonfrom openai import OpenAI

client = OpenAI(api_key="$MIMO_API_KEY", base_url="https://api.xiaomimimo.com/v1")

response = client.chat.completions.create(
    model="mimo-v2.5-pro",
    messages=[{"role": "user", "content": "9.11 和 9.8 哪个更大?"}],
    extra_body={"thinking": {"type": "enabled"}}
)

msg = response.choices[0].message
print(f"[思考过程]\n{msg.reasoning_content}")
print(f"\n[最终回答]\n{msg.content}")

函数调用 (Function Calling)

pythonfrom openai import OpenAI

client = OpenAI(api_key="$MIMO_API_KEY", base_url="https://api.xiaomimimo.com/v1")

response = client.chat.completions.create(
    model="mimo-v2.5-pro",
    messages=[{"role": "user", "content": "杭州今天天气怎么样?"}],
    tools=[{
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取指定城市的当前天气信息",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {"type": "string", "description": "城市名称"}
                },
                "required": ["location"]
            }
        }
    }]
)

tool_calls = response.choices[0].message.tool_calls
print("工具调用:", tool_calls)

联网搜索

pythonfrom openai import OpenAI

client = OpenAI(api_key="$MIMO_API_KEY", base_url="https://api.xiaomimimo.com/v1")

response = client.chat.completions.create(
    model="mimo-v2.5-pro",
    messages=[{"role": "user", "content": "今天有什么科技新闻?"}],
    tools=[{"type": "web_search"}]
)

msg = response.choices[0].message
print("回答:", msg.content)
if msg.annotations:
    print("\n引用来源:")
    for ann in msg.annotations:
        print(f"  - [{ann.title}]({ann.url})")

语音合成 (TTS)

pythonfrom openai import OpenAI
import base64

client = OpenAI(api_key="$MIMO_API_KEY", base_url="https://api.xiaomimimo.com/v1")

response = client.chat.completions.create(
    model="mimo-v2.5-tts",
    messages=[
        {"role": "user", "content": "用甜美的声音为大家念一首诗"},
        {"role": "assistant", "content": "床前明月光,疑是地上霜。举头望明月,低头思故乡。"}
    ],
    audio={
        "format": "wav",
        "voice": "茉莉"
    }
)

audio_data = response.choices[0].message.audio.data
audio_bytes = base64.b64decode(audio_data)
with output("output.wav", "wb") as f:
    f.write(audio_bytes)
print("音频已保存到 output.wav")

多模态图像输入

bashcurl --location --request POST 'https://api.xiaomimimo.com/v1/chat/completions' \
--header "api-key: $MIMO_API_KEY" \
--header "Content-Type: application/json" \
--data-raw '{
    "model": "mimo-v2.5-pro",
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "请描述这张图片的内容"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/image.jpg",
                        "detail": "auto"
                    }
                }
            ]
        }
    ],
    "max_completion_tokens": 1024,
    "thinking": {"type": "disabled"}
}'
pythonfrom openai import OpenAI

client = OpenAI(api_key="$MIMO_API_KEY", base_url="https://api.xiaomimimo.com/v1")

response = client.chat.completions.create(
    model="mimo-v2.5-pro",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "请描述这张图片的内容"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/image.jpg",
                        "detail": "auto"
                    }
                }
            ]
        }
    ],
    max_completion_tokens=1024,
    thinking={"type": "disabled"}
)

print(response.choices[0].message.content)
print(f"图像 token: {response.usage.prompt_tokens_details.image_tokens}")
pythonimport base64
from openai import OpenAI

client = OpenAI(api_key="$MIMO_API_KEY", base_url="https://api.xiaomimimo.com/v1")

# 读取本地图片并转为 base64 data URI
with open("local_image.jpg", "rb") as f:
    image_data = base64.b64encode(f.read()).decode("utf-8")
image_data_uri = f"data:image/jpeg;base64,{image_data}"

response = client.chat.completions.create(
    model="mimo-v2.5-pro",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "这张图里有什么?"},
                {
                    "type": "image_url",
                    "image_url": {"url": image_data_uri}
                }
            ]
        }
    ],
    max_completion_tokens=1024
)

print(response.choices[0].message.content)

⚠️ 错误码说明

错误码HTTP 状态描述
invalid_api_key401API Key 无效或未提供
rate_limit_exceeded429请求频率超限,请稍后重试
invalid_request400请求参数错误(如缺少必填字段、模型不存在等)
context_length_exceeded400输入内容超出模型上下文长度限制
content_filter400内容触发安全过滤策略
server_error500服务器内部错误
model_not_found404请求的模型不存在或已下线
📌 finish_reason 含义参考:
stop — 自然结束 · length — 达到最大 token · tool_calls — 模型调用了工具
content_filter — 内容被过滤 · repetition_truncation — 检测到复读截断