Xiaomi MiMo API reasoning_content回传详解:Agent多轮对话400错误解决方案
Xiaomi MiMo API reasoning_content回传详解:Agent多轮对话400错误解决方案
SEO关键词:Xiaomi MiMo API、MiMo-V2.5、reasoning_content、Agent开发、OpenAI兼容协议、Cursor接入MiMo、TRAE接入MiMo、GitHub Copilot CLI、工具调用Tool Call、多轮会话上下文、400错误解决方案

作为一名前端开发工程师,最近在研究 Agent 应用开发时,发现 Xiaomi MiMo 官方发布了一则重要公告。如果你正在使用 Cursor、TRAE、Roo Code、GitHub Copilot CLI、AutoGen、Goose 等 Agent 产品接入 Xiaomi MiMo 模型,那么这次更新一定要关注。
https://platform.xiaomimimo.com/docs/zh-CN/usage-guide/passing-back-reasoning_content
不少开发者在升级到 MiMo-V2.5 系列模型 后,可能会遇到一个问题:
HTTP 400 Bad Request
而且问题通常出现在:
- 开启思考模式(Thinking)
- 使用 Tool Call 工具调用
- 多轮对话场景
经过官方说明确认,根本原因与 reasoning_content 回传机制 有关。
本文详细解析 Xiaomi MiMo 最新要求,以及如何正确实现多轮 Agent 对话。
一、官方公告核心内容
Xiaomi MiMo API 开放平台近期发布了关于 Agent 产品的重要兼容性说明:
当 Agent 类产品开启 MiMo 思考模式,并且历史会话存在工具调用时,后续所有 user 交互轮次中回传的 assistant 消息如果包含工具调用,必须完整保留 reasoning_content 字段。
否则将直接返回:
400 Bad Request
二、为什么必须回传 reasoning_content
很多开发者在保存聊天记录时通常只保留:
{
"role": "assistant",
"content": "最终回答内容"
}
或者:
{
"role": "assistant",
"tool_calls": [...]
}
而忽略:
{
"reasoning_content": "模型思考过程"
}
对于普通模型可能问题不大。
但 MiMo 思考模型内部会依赖 reasoning_content 来维护推理链路。
如果历史记录中丢失:
reasoning_content
则模型看到的上下文变成:
用户提问
↓
工具调用结果
↓
最终回答
而缺少:
模型为什么调用工具
模型如何分析问题
模型如何规划执行步骤
这会导致:
| 问题 | 表现 |
|---|---|
| 指令遵循下降 | 模型更容易跑偏 |
| 上下文理解变弱 | 忘记前面推理内容 |
| 幻觉增加 | 生成不存在的信息 |
| Tool Call决策错误 | 重复调用工具 |
| API报错 | 直接返回400 |
因此 Xiaomi MiMo 要求:
历史 assistant 消息必须完整保留 reasoning_content。
三、哪些产品会受到影响
OpenAI兼容协议
| Agent产品 |
|---|
| TRAE |
| Cursor |
| Roo Code |
| Codex |
| GitHub Copilot CLI |
| Zed |
| AutoGen |
| Goose |
Anthropic兼容协议
| Agent产品 |
|---|
| TRAE |
| GitHub Copilot CLI |
| AutoGen |
| Goose |
| OpenClaw |
| OpenCode |
| Kilo Code |
四、受影响模型列表
目前涉及以下模型:
mimo-v2.5-pro
mimo-v2.5
mimo-v2-pro
mimo-v2-omni
mimo-v2-flash
如果你正在使用这些模型,需要特别注意。
五、错误实现方式
很多 Agent 框架的实现类似这样:
messages.append({
"role": "assistant",
"content": assistant_message.content
})
结果保存后的上下文:
[
{
"role":"user",
"content":"北京天气"
},
{
"role":"assistant",
"content":"北京25℃"
}
]
reasoning_content 被丢弃。
第二轮请求:
client.chat.completions.create(
model="mimo-v2.5-pro",
messages=messages
)
此时 MiMo 检测到:
历史存在工具调用
↓
缺失reasoning_content
↓
返回400错误
六、正确实现方式
官方推荐方案:
不要手动构造 assistant 消息。
而是直接保存 SDK 返回对象:
assistant_message = response.choices[0].message
messages.append(assistant_message)
这样会自动保留:
{
"role":"assistant",
"content":"...",
"tool_calls":[...],
"reasoning_content":"..."
}
七、多轮Agent执行流程解析
第一轮
用户提问:
北京天气如何?
现在几点?
Step1:模型分析
MiMo 推理:
需要获取天气
需要获取时间
两个工具可以并行执行
对应:
reasoning_content
内容类似:
The user wants to know two things...
Step2:发起Tool Call
get_current_weather()
get_time()
Step3:工具返回
Sunny 25°C
2026-05-12 16:37
Step4:生成最终答案
北京天气晴朗
25℃
当前时间16:37
八、第二轮为什么还能知道北京25℃
用户继续追问:
上海天气怎么样?
比北京热还是冷?
此时模型只调用:
get_current_weather("Shanghai")
而没有再次查询北京。
原因在于:
历史上下文中已经保留:
reasoning_content
以及:
tool result
所以模型已经知道:
北京 = 25℃
只需查询:
上海 = 22℃
即可直接得出:
上海比北京低3℃
九、推荐的消息存储结构
实际开发 Agent 时建议完整保存:
messages = [
{
"role": "user",
"content": "..."
},
{
"role": "assistant",
"content": "...",
"reasoning_content": "...",
"tool_calls": [...]
},
{
"role": "tool",
"tool_call_id": "...",
"content": "..."
}
]
不要删除:
reasoning_content
不要过滤:
tool_calls
不要只保存:
content
否则后续轮次容易出现问题。
十、完整示例代码
下面是官方提供的多轮 Agent 调用示例核心代码:
response = client.chat.completions.create(
model="mimo-v2.5-pro",
messages=messages,
tools=tools,
extra_body={
"thinking": {
"type": "enabled"
}
}
)
assistant_message = response.choices[0].message
messages.append(assistant_message)
关键点只有一句:
messages.append(assistant_message)
它保证:
reasoning_content
content
tool_calls
全部被保存下来。
十一、开发建议
如果你正在维护:
- Cursor插件
- TRAE插件
- AI编程助手
- AutoGen工作流
- OpenAI兼容Agent
- 企业知识库Agent
建议检查以下内容:
检查1
是否开启:
thinking
检查2
是否使用:
Tool Call
检查3
是否保留:
reasoning_content
检查4
是否序列化丢失:
assistant_message
很多框架在:
json.dumps()
过程中会自动过滤未知字段。
需要特别留意。
总结
Xiaomi MiMo 最新公告实际上明确了一项重要规范:
在开启思考模式且涉及工具调用的多轮 Agent 场景中,必须完整回传 reasoning_content。
否则可能出现:
- 400错误
- 上下文丢失
- Tool Call异常
- 幻觉增加
- 推理能力下降
当前受影响模型包括:
mimo-v2.5-pro
mimo-v2.5
mimo-v2-pro
mimo-v2-omni
mimo-v2-flash
受影响平台包括:
Cursor
TRAE
Roo Code
GitHub Copilot CLI
AutoGen
Goose
Zed
Codex
对于 Agent 开发者来说,最简单且最安全的做法就是:
messages.append(assistant_message)
完整保留模型返回内容,而不是手动拼接消息对象。这样既能避免 400 错误,也能最大程度发挥 Xiaomi MiMo 推理模型的能力。
更多推荐


所有评论(0)