Migrando do MiniMax M2.5/M2.7 antes de 18 de nov.: corrigindo o erro 400 “requires adaptive thinking” do M3.1 Flash

AIHubMix9 min de leitura
Migrando do MiniMax M2.5/M2.7 antes de 18 de nov.: corrigindo o erro 400 “requires adaptive thinking” do M3.1 Flash

A MiniMax vai descontinuar o M2.5 e o M2.7 em 18 de novembro de 2026, e a mudança já começou. Desde 19 de outubro, as duas famílias mais antigas não estão disponíveis para novos usuários, e as solicitações dos planos que as especificam são atendidas pelo M3.1 Flash. Se você usa o modelo pré-pago, tem quatro semanas para alterar o ID do modelo por conta própria.

A maioria dos códigos do M2.7 funciona no M3.1 Flash sem alterações. O problema vem de uma decisão de projeto: o M3.1 Flash sempre pensa, e pensa no nível mais profundo, a menos que você indique o contrário. Isso gera um erro bem evidente, alguns aumentos de custo silenciosos e algumas configurações que agora não fazem absolutamente nada.

A AIHubMix executou todas as solicitações deste artigo pelo gateway em 19 de outubro de 2026, usando minimax-m3.1-flash. Os textos dos erros foram copiados dessas respostas. As regras da MiniMax são citadas da documentação da API.

Quem é afetado e como

Você usa o M2.5/M2.7 por meio de O que acontece Prazo
Plano M / Plano de Tokens da MiniMax As solicitações são atendidas pelo M3.1 Flash usando o nome antigo Já aconteceu (19 de out.)
MiniMax pré-pago Os IDs antigos continuam funcionando e depois deixam de funcionar 18 de nov. de 2026
Nova conta MiniMax M2.5/M2.7 indisponível 19 de out. de 2026

A página de modelos da MiniMax explica assim para usuários dos planos: “todas as solicitações aos modelos M2.5 e M2.7 desses planos serão encaminhadas automaticamente para o M3.1 Flash Preview” e “os nomes de modelo existentes continuarão funcionando”. Para usuários do modelo pré-pago: “Após a descontinuação, as solicitações de API para esses modelos deixarão de funcionar.” O aviso não menciona nenhum redirecionamento automático para usuários do modelo pré-pago, então espere erros, não um fallback.

Os usuários dos planos devem observar o que significa “encaminhadas”. Seus registros ainda mostram M2.7, mas os pesos são diferentes, o contexto é 5× maior e a profundidade de raciocínio padrão é max. Trate isso como uma mudança de modelo e execute novamente suas avaliações.

O que falha de forma evidente

400: “requires adaptive thinking”

O que você verá. Uma solicitação que desativa o raciocínio é rejeitada:

{"error": {"message": "invalid params, model \"MiniMax-M3.1-Flash\" requires adaptive thinking; thinking.type=\"disabled\" (including reasoning.effort=none) is not allowed (2013) (tid: …)", "type": "bad_request_error", "param": "", "code": null}}

Por quê. A referência da API Messages da MiniMax diz que o modelo “sempre pensa”: se thinking.type for enviado, ele precisa ser adaptive, e disabled retorna HTTP 400. Código escrito para o M3 pode apresentar esse problema, pois o M3 permite desativar o raciocínio. Frameworks que classificam o modelo como não raciocinador e enviam “thinking off” por padrão encontram o erro em todas as chamadas; os projetos kodus-ai e 9router-go relataram casos semelhantes.

Solicitação mínima que provoca o erro (Chat Completions na AIHubMix):

curl https://aihubmix.com/v1/chat/completions \
  -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "minimax-m3.1-flash",
       "messages": [{"role": "user", "content": "hi"}],
       "thinking": {"type": "disabled"}}'

Correção. Remova o campo thinking ou defina-o como {"type": "adaptive"}. Se você estava desativando o raciocínio para economizar tempo, use "reasoning_effort": "low".

Erro 400 com o mesmo código 2013 em URLs de imagem

O que você verá. invalid param: remote returned status 400 (2013). Recebemos esse erro com uma URL de imagem hospedada em upload.wikimedia.org. A mesma solicitação, com uma imagem em base64 ou com uma URL de imagem de outro host, retornou 200.

Por quê. O código 2013 é o código genérico da MiniMax para “parâmetros inválidos”, não um erro específico de raciocínio. Neste caso, aparentemente o serviço upstream não conseguiu buscar a imagem remota. Essa é a nossa interpretação da mensagem; a MiniMax não documenta esse caso.

Correção. Envie as imagens em base64 (data:image/png;base64,…) ou hospede-as em algum lugar que aceite solicitações HTTP simples. Ao pesquisar 2013 nos registros, leia a mensagem completa antes de presumir que é o erro de raciocínio.

Após 18 de novembro: IDs de modelos descontinuados

As chamadas pré-pagas para MiniMax-M2.5, MiniMax-M2.5-highspeed, MiniMax-M2.7 e MiniMax-M2.7-highspeed na API da MiniMax deixarão de funcionar nessa data. M2.1 e M2 não constam no aviso. Altere o ID do modelo antes disso. Na AIHubMix, o novo ID é minimax-m3.1-flash.

O que falha silenciosamente

Todas estas solicitações retornam 200. A diferença aparece na fatura, na latência ou na resposta.

1. Alternativas de “thinking off” que agora não fazem nada

Pela AIHubMix, três maneiras de pedir que o modelo não pense são aceitas sem erro, mas o modelo pensa mesmo assim:

Solicitação Resultado na AIHubMix
Messages API, thinking desativado 200; 469–622 tokens de raciocínio em um quebra-cabeça curto
Chat, reasoning_effort none 200; 265–372 tokens de raciocínio no mesmo quebra-cabeça
Chat, reasoning_effort minimal 200; o modelo continua pensando

As duas primeiras linhas correspondem a três execuções cada do mesmo quebra-cabeça lógico de três caixas, em que low usou 173–251 tokens de raciocínio. O teste de minimal foi uma única execução com uma pergunta de aritmética de uma linha.

Somente o Chat Completions com thinking: {"type": "disabled"} gera o erro 400 acima. Se o seu código do M2.x ou M3 dependia de qualquer uma dessas alternativas para manter as chamadas rápidas, agora elas pensam silenciosamente. A única opção eficaz é ajustar o nível de esforço, e o nível mais baixo é low.

2. O nível de esforço padrão é max

O M2.7 não tinha níveis de raciocínio. O M3.1 Flash tem cinco, e a documentação da MiniMax diz que, se o campo for omitido, o padrão é max. Em uma pequena correção de dois bugs em uma função Python, a AIHubMix mediu:

Configuração Média de tokens de raciocínio Tempo médio Custo médio por correção
Nível de esforço omitido 6,364 56 s $0.0045
Nível de esforço low 591 9.5 s $0.0006

Todas as execuções com ambas as configurações passaram nos 215 testes ocultos. Os custos usam os preços da AIHubMix de $0.165 por milhão de tokens de entrada e $0.66 por milhão de tokens de saída, com três execuções para cada configuração. Se você migrar sem definir um nível de esforço, a mesma tarefa levará cerca de 6× mais tempo. A medição completa dos cinco níveis está no artigo sobre nível de esforço desta série.

3. O raciocínio consome max_tokens

Os tokens de raciocínio contam para max_tokens. O código do M2.x costuma definir limites baixos para respostas curtas. Com max_tokens: 64 e uma pergunta de duas frases, o modelo gastou o limite pensando e depois retornou finish_reason: "length" e a resposta “A luz solar contém muitas cores,”, cortada no meio da frase. A MiniMax recomenda 131,072 e permite até 524,288. Aumente os limites baixos ou verifique finish_reason antes de confiar no texto.

4. O armazenamento em cache e os níveis de serviço mudaram

  • cache_control não é compatível com o M3.1 Flash (nem com o M3), segundo a referência da API da MiniMax. No M2.7, as gravações explícitas no cache custavam $0.375 por milhão. No M3.1 Flash, o cache é automático. A AIHubMix cobra $0.0165 por milhão de leituras do cache, e todas as solicitações que enviamos tiveram cerca de 175–195 tokens do prompt atendidos pelo cache, inclusive a primeira. Parece ser um preâmbulo fixo do lado da MiniMax; a esse preço, custa cerca de um terço de centavo por mil solicitações. Remova os blocos cache_control; eles não fazem nada aqui.
  • service_tier não é compatível. Se você usava o nível Priority do M3 para reduzir a latência, não há equivalente no Flash.

5. Mesmo nome, parâmetros de amostragem diferentes

Os valores padrão da MiniMax passaram de top_p 0.9 no M2.x para 0.95 no M3.1 Flash, e a janela de contexto aumentou de 204,800 para 1,000,000 tokens. Prompts ajustados para o M2.7 podem gerar respostas mais longas ou menos precisas. Um modelo por trás de um nome inalterado ainda é um modelo novo: execute novamente suas avaliações.

Regras de cobrança fáceis de ignorar

  • O raciocínio é cobrado como saída. Na AIHubMix, custa $0.66 por milhão. No nível de esforço padrão, o raciocínio representou 95% da saída na nossa correção de bugs (6,364 de 6,673 tokens).
  • A MiniMax ainda não divulgou um preço oficial por token. A página de preços lista o M3 e o M2.x, mas não o M3.1 Flash. A AIHubMix cobra $0.165 / $0.66 / $0.0165 (entrada / saída / leitura do cache).
  • O preço oficial do M3 dobra acima de 512K tokens de entrada. A AIHubMix lista um preço único para o M3.1 Flash. Se você enviar prompts muito longos, confira sua primeira fatura com base na sua própria estimativa.

Medidas para reduzir a fatura:

  1. Defina reasoning_effort: "low" (Chat), output_config.effort: "low" (Messages) ou reasoning.effort: "low" (Responses) como padrão e aumente o nível por tarefa.
  2. Mantenha as instruções estáveis no início do prompt para que o cache automático possa atendê-las.
  3. Defina max_tokens com um valor suficientemente alto para que o raciocínio não trunque a resposta, pois tentar novamente uma resposta truncada custa mais do que deixar uma margem extra.

Agentes com permissões reais

Três comportamentos são importantes quando o modelo pode executar comandos ou editar arquivos:

  • Ele sempre raciocina antes de agir, mesmo em low. Isso ajuda na seleção de ferramentas. Também significa que cada etapa com uma ferramenta tem latência de raciocínio; nas nossas chamadas curtas de ferramentas, cada etapa levou cerca de 2 a 7 segundos em low.
  • Ele faz exatamente o que você pede, sem ir além. Um dos primeiros testadores o descreveu como “incrivelmente rápido, mas precisa de instruções claras e específicas; caso contrário, é preguiçoso demais”. Dê aos agentes condições explícitas de parada e etapas de verificação (“execute os testes e cole o resultado”) em vez de objetivos vagos.
  • tool_choice é oficialmente apenas auto. A AIHubMix aceitou "required" (Chat) e {"type": "any"} (Messages), e o modelo chamou a ferramenta, mas a MiniMax não documenta que a imposição funcione. Não baseie uma verificação de segurança nisso.

A MiniMax diz para devolver os blocos de raciocínio sem alterações nas etapas seguintes (Messages) e manter reasoning_content intacto (Chat). Em nosso teste, uma breve interação com ferramenta ainda funcionou depois que o bloco de raciocínio foi removido, mas siga a regra documentada em ciclos longos de agentes.

Ferramentas de programação

A AIHubMix disponibiliza o minimax-m3.1-flash nos três protocolos necessários às ferramentas de programação mais comuns. Cada uma foi testada em 19 de outubro com texto, uma chamada de ferramenta e uma interação de retorno do resultado da ferramenta.

Ferramenta Protocolo necessário Funciona pela AIHubMix Campo de esforço
Claude Code Anthropic Messages Sim output_config.effort
Codex CLI OpenAI Responses Sim reasoning.effort
OpenCode Compatível com OpenAI Sim reasoning_effort

A janela de contexto é de 1,000,000 na API da MiniMax. O MiniMax Code define o padrão do cliente como 512K “para equilibrar a experiência e o custo”, segundo uma citação da documentação da MiniMax feita por um responsável pela manutenção no projeto magpie; a API não tem um parâmetro de janela.

Claude Code. Configure-o para usar a AIHubMix conforme o guia da AIHubMix para Claude Code e defina o modelo como minimax-m3.1-flash:

export ANTHROPIC_BASE_URL="https://aihubmix.com"
export ANTHROPIC_AUTH_TOKEN="$AIHUBMIX_API_KEY"
export ANTHROPIC_MODEL="minimax-m3.1-flash"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="minimax-m3.1-flash"   # background tasks too

As duas formas de raciocínio enviadas por clientes no estilo Anthropic, enabled com um orçamento e adaptive, retornaram 200 nos nossos testes, então você não receberá o erro 400. Problema conhecido: não está documentado se a configuração de esforço do Claude Code chega a um modelo que não seja da Claude como output_config.effort. Se não chegar, o modelo será executado com o padrão max, e as interações serão mais lentas do que com o M2.7. O teste rápido abaixo mostra como verificar.

Codex CLI. O Codex se comunica com a Responses API, que funciona com este modelo: as chamadas de função retornam como itens function_call. Configure um provedor personalizado como no guia do AIHubMix para Codex, com wire_api = "responses", depois defina model = "minimax-m3.1-flash" e model_reasoning_effort. Tanto xhigh quanto minimal foram aceitos; minimal não é um dos níveis da MiniMax, e o modelo ainda raciocina.

OpenCode. O problema #54801 do OpenCode (reproduzido na v2.0.27) relata que o OpenCode não resolve nenhuma variante de esforço para este modelo, então ctrl+t não faz nada. A solução alternativa indicada no problema é declarar você mesmo as cinco variantes em opencode.json. Com o provedor compatível com OpenAI do AIHubMix, o campo da solicitação que cada variante deve definir é reasoning_effort (low … max), e não output_config.effort, como indicado no problema. Não adicione uma variante none.

Um teste rápido de 15 minutos para qualquer uma das três ferramentas:

  1. Crie uma pasta temporária com uma função que tenha um bug conhecido e um arquivo de teste que falhe por causa dele.
  2. Peça ao agente: "Execute os testes, corrija o bug, execute os testes novamente e mostre o resultado."
  3. O resultado esperado é este: o agente executa os testes antes e depois, a execução final passa, ele termina em poucas interações e nenhuma delas retorna um erro 400.
  4. Verifique o registro de uso do AIHubMix. Você deve ver solicitações de minimax-m3.1-flash com tokens de raciocínio. Se cada interação levar quase um minuto, a configuração de esforço não está chegando ao modelo, que está sendo executado em max.

Lista de verificação da migração

  • Substitua os IDs MiniMax-M2.5 / M2.7 por minimax-m3.1-flash (no AIHubMix) antes de 18 de novembro.
  • Remova das solicitações thinking disabled, effort none e effort minimal.
  • Adicione um nível de esforço explícito a cada solicitação; comece com low.
  • Aumente max_tokens para que o raciocínio não trunque as respostas; verifique finish_reason.
  • Remova os campos cache_control e service_tier.
  • Envie imagens em base64 ou a partir de um host que o serviço upstream possa acessar.
  • Mantenha intactos os blocos de raciocínio e reasoning_content entre as interações com ferramentas.
  • Execute novamente suas avaliações: mesmo nome, novo modelo, novos padrões de amostragem.
  • Nas ferramentas de programação, confirme que a configuração de esforço chega ao modelo (o tempo de cada interação é um indicador rápido).

Perguntas frequentes

Por que recebo o erro "requires adaptive thinking"?
Sua solicitação desativou o raciocínio, geralmente com o tipo de raciocínio disabled no endpoint Chat Completions. O M3.1 Flash sempre raciocina. Remova o campo ou defina-o como adaptive e use effort low se quiser mais velocidade.

Minhas solicitações ao M2.7 não mudaram, mas as respostas sim. Por quê?
Se você usa um MiniMax M Plan ou Token Plan, as solicitações que especificam M2.5 ou M2.7 são atendidas pelo M3.1 Flash desde 19 de outubro de 2026, sob o nome antigo.

Qual é o prazo para usuários com pagamento por uso?
18 de novembro de 2026. Depois disso, as solicitações da API MiniMax para M2.5 e M2.7 deixarão de funcionar.

reasoning_effort none funciona no AIHubMix?
Retorna 200, mas o modelo ainda raciocina. O nível efetivo mais baixo é low.

Ainda preciso de cache_control?
Não. A MiniMax não oferece suporte a esse recurso no M3.1 Flash. O cache é automático, e o AIHubMix cobra $0.0165 por milhão de tokens de entrada armazenados em cache.

Posso usar o M3.1 Flash no Claude Code e no Codex?
Sim. O AIHubMix o disponibiliza pela Anthropic Messages API para o Claude Code e pela Responses API para o Codex. Ambos passaram nos testes de texto, chamada de ferramenta e resultado de ferramenta em 19 de outubro de 2026.

Por que minhas respostas são cortadas?
Os tokens de raciocínio contam para max_tokens. Se finish_reason for length, aumente max_tokens. A MiniMax recomenda 131,072.

Continue lendo: a série MiniMax M3.1 Flash

Fontes