Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

MiniMax-M3 emits answer tokens before closing </think> — answer truncated after stripping reasoning

未关闭
#28 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
冷清
领域
ai, api

调研方向

首先,使用提供的原始 curl 请求针对 MiniMax-M3 chat completions 端点复现该问题,并在启用 thinking 的流式和非流式模式下重复测试。比较 content 和 reasoning_content 的边界,包括使用 reasoning_split=true 时的情况。当结束的 边界位于每个最终答案 token 之前,从而去除 reasoning 后仍能保留完整答案时,即视为完成。

由索引模型根据 Issue 内容生成。

描述

Summary

On the hosted OpenAI-compatible API (https://api.minimax.io/v1/chat/completions), MiniMax-M3 with thinking enabled intermittently emits the first tokens of the final answer before closing the </think> block. As a result, once the <think>...</think> block is stripped, the user-facing answer starts mid-sentence (its opening words are lost inside the reasoning block).

This is reproducible directly against the API, with no client framework involved, in both streaming and non-streaming modes. It is a property of the raw generation, not of any downstream parser.

Environment
  • Model: MiniMax-M3
  • Endpoint: https://api.minimax.io/v1/chat/completions (OpenAI-compatible)
  • Thinking: enabled (default / adaptive)
  • Reproduced with raw curl/fetch — no SDK, no LangChain, no vLLM.
Reproduction
curl -s https://api.minimax.io/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $MINIMAX_API_KEY" \
  -d '{
    "model": "MiniMax-M3",
    "messages": [{ "role": "user", "content": "Hola" }],
    "stream": false
  }'

Run it ~8 times. In roughly 25% of runs the returned content looks like:

<think>
...reasoning... I should respond in a friendly manner.¡Hola! 👋 ¿Cómo
</think>

estás? Soy un asistente de IA aquí para ayudarte. ¿En qué puedo ayudarte hoy?

Note that the greeting ¡Hola! 👋 ¿Cómo was emitted inside the <think> block, and the text after </think> starts mid-sentence with estás?.

Actual behavior

The closing </think> boundary is placed after the model has already started the final answer, so the answer's opening tokens are trapped inside the reasoning block. Stripping <think>...</think> (the documented handling for the OpenAI native format) yields a truncated answer.

Observed rate on the prompt "Hola", non-streaming: 2/8 hard truncations + 1 partial (missing the leading ¡).

Expected behavior

</think> should close before any final-answer token is emitted. Everything inside <think>...</think> should be reasoning only; the final answer should be fully contained in the post-</think> content.

reasoning_split=true does not fix it (and is worse)

Setting reasoning_split=true (so thinking is returned in reasoning_content / reasoning_details) exhibits the same boundary defect: the answer's opening tokens land in reasoning_content, and content starts mid-sentence. Reproduced non-streaming as well:

content:           "? Soy un asistente de IA y estoy aquí para ayudarte..."
reasoning_content: "...I should respond in a friendly manner...¡Hola! 👋 ¿Cómo estás"
Impact

Any integration that separates reasoning from the answer (the documented pattern) shows user-facing responses that begin mid-sentence. It affects real replies, not just greetings.

Notes
  • M2.7 did not exhibit this in our testing.
  • Related but distinct reports (parser leaking <mm:think> tags): vLLM #45687, #46042; Kilo-Org/kilocode #11203. This report is about the raw hosted-API generation placing the </think> boundary a few tokens into the answer.
主要语言
没有语言数据
星标
487
派生
59
PR 合并指标
30 天内没有已合并 PR

环境准备

我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

MiniMax-AI/MiniMax-M3 的其他 Issue

查看 MiniMax-AI/MiniMax-M3 的全部 Issue

相似的 Issue

更多 AI Infra & Agents Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。