Níveis de esforço do MiniMax M3.1 Flash: por que o padrão custa 7× menos para corrigir o mesmo bug

AIHubMix7 min de leitura
Níveis de esforço do MiniMax M3.1 Flash: por que o padrão custa 7× menos para corrigir o mesmo bug

O MiniMax M3.1 Flash tem cinco níveis de raciocínio e não tem opção para desativá-lo. Se você não escolher um nível, o modelo escolhe o mais profundo. O guia de geração de texto da MiniMax diz que o esforço «por padrão é max quando omitido».

Esse padrão é caro de uma forma fácil de não perceber. A AIHubMix executou a mesma correção de dois bugs em todos os níveis. O padrão usou cerca de 10× mais tokens de raciocínio do que low e levou cerca de 6× mais tempo, e todas as execuções em todos os níveis passaram nos 215 testes. O custo de raciocínio do modelo aumentou com a configuração de esforço, enquanto a dificuldade da tarefa permaneceu igual.

A resposta curta: comece em low, aumente somente quando uma tarefa falhar ou exigir novas tentativas, e nunca deixe o campo vazio.

Cinco níveis, sem opção para desativar

Protocolo Campo Valores Padrão
OpenAI Chat Completions reasoning_effort low, medium, high, xhigh, max max
Anthropic Messages output_config.effort low, medium, high, xhigh, max max
OpenAI Responses reasoning.effort low, medium, high, xhigh, max max

Não é possível desativar o raciocínio. De acordo com a referência da API Messages da MiniMax, a API retorna HTTP 400 para thinking: {"type": "disabled"} e para o esforço none, com a mensagem model "MiniMax-M3.1-Flash" requires adaptive thinking. Os modelos mais antigos da MiniMax ignoram totalmente o campo de esforço. Até agora, o M3.1 Flash é o único modelo da MiniMax em que esse campo tem algum efeito.

Os três protocolos estão disponíveis para minimax-m3.1-flash na AIHubMix. Uma diferença em relação à API da própria MiniMax: a AIHubMix aceitou reasoning_effort: "none" e "minimal" com HTTP 200, e o modelo raciocinou mesmo assim. Trate esses valores como opções sem efeito, não como uma forma de desativar o raciocínio.

Quanto custou cada nível em uma tarefa

O teste: uma função de cobrança com dois bugs. Uma pausa que ultrapassa o fim do período conta um dia em duplicidade, e pausas sobrepostas são subtraídas duas vezes. O modelo retorna a função corrigida, e um teste local a verifica com base em 215 casos ocultos. Cada nível foi executado três vezes pelo endpoint Chat Completions da AIHubMix em 19 de outubro de 2026, com max_tokens definido como 32,768. Todos os números foram medidos pela AIHubMix, e ninguém mais os reproduziu.

Esforço Média de tokens de raciocínio Intervalo (3 execuções) Tempo médio Custo médio por correção Testes
low 591 344–812 9.5 s $0.0006 215/215 ×3
medium 1,522 970–2,488 21.7 s $0.0013 215/215 ×3
high 2,863 2,194–3,673 27.1 s $0.0022 215/215 ×3
xhigh 1,949 1,019–2,562 19.2 s $0.0015 215/215 ×3
max 4,699 2,612–6,246 40.4 s $0.0034 215/215 ×3
omitido 6,364 4,284–9,376 56.3 s $0.0045 215/215 ×3

Os custos usam os preços da AIHubMix para minimax-m3.1-flash: US$ 0.165 por milhão de tokens de entrada, US$ 0.66 por milhão de tokens de saída e US$ 0.0165 por milhão de tokens de entrada em cache. Os tokens de raciocínio são cobrados como tokens de saída. Por exemplo, a linha «omitido» teve uma média de 464 tokens de prompt (cerca de 192 em cache) e 6,673 tokens de saída, o que dá aproximadamente US$ 0.0045 por correção.

O que os números mostram

low foi suficiente para esta tarefa. Todos os níveis produziram uma correção correta em todas as execuções. Para um bug bem delimitado em uma única função, o raciocínio adicional nos níveis mais altos não trouxe nenhum benefício mensurável.

De low para medium há um salto evidente. Em média, medium usou cerca de 2.6× mais tokens de raciocínio do que low e levou mais que o dobro do tempo.

Acima de medium, as diferenças entre os níveis ficam indistintas. Nossas execuções de xhigh usaram, em média, menos tokens do que high, e max se sobrepôs a ambos. Três execuções por nível não são suficientes para distingui-los. Nesta tarefa, «high», «xhigh» e «max» significaram «mais raciocínio, às vezes muito mais».

Quando omitido, o valor se comporta como max. Isso corresponde à documentação da MiniMax. Nossa média de «omitido» foi maior do que a de «max», mas os intervalos se sobrepõem e a diferença está dentro da variação entre execuções.

A variação é grande em todos os níveis. O padrão variou de 39 a 82 segundos para o mesmo prompt. No endpoint Anthropic Messages, três execuções com low usaram 511, 1,861 e 6,060 tokens de raciocínio. A última levou 56 segundos, o mesmo tempo de uma execução típica com max. O nível de esforço define a profundidade média do raciocínio, não um limite rígido.

A taxa de geração se manteve estável, em cerca de 112 tokens de saída por segundo nas 24 execuções do Flash, então o tempo cresce quase linearmente com os tokens de raciocínio. Nessa velocidade, raciocinar por 6,000 tokens significa esperar quase um minuto.

A MiniMax não publicou dados próprios de tokens ou latência por nível. Não podemos dizer, com base neste único teste, o que acontece quando uma tarefa mais difícil começa a exigir níveis mais altos. Os números acima mostram apenas quanto custa cada nível quando a tarefa não precisa dele.

Prompts curtos quase não exigem raciocínio

«Sempre raciocina» não significa «sempre raciocina muito». O raciocínio é adaptativo, então a profundidade depende da dificuldade aparente do prompt:

  • Classificação de cinco tíquetes de suporte em um de quatro rótulos: 0 tokens de raciocínio com low e uma média de 6 no padrão. Todos os rótulos estavam corretos.
  • «Quanto é 17 × 23?» com low: nenhum raciocínio, apenas 2 tokens de saída.

Portanto, a falta de uma opção para desativar o raciocínio quase não custa nada em chamadas curtas de classificação, extração e encaminhamento. O custo aparece em tarefas abertas, como programação, nas quais o modelo encontra mais coisas para ponderar quanto mais profundamente você o deixa raciocinar.

Por onde começar

Estes são pontos de partida. Apenas as duas primeiras linhas foram medidas diretamente; as demais são nossas recomendações, que você deve validar com base nas suas próprias novas tentativas:

Carga de trabalho Comece em Aumente quando
Classificação, extração, encaminhamento low Os rótulos estiverem errados em casos difíceis
Correções em uma única função, revisões pequenas low Uma correção falhar nos testes duas vezes
Alterações em vários arquivos, refatorações medium O agente não perceber um arquivo dependente
Loops do agente com muitas chamadas de ferramentas low ou medium As etapas se repetirem ou travarem
Depuração difícil, questões de design high As respostas continuarem superficiais
Conversa interativa com alguém esperando low Nunca use max como padrão neste caso

Use max somente se já tiver visto high falhar nesse tipo de tarefa.

O que pode falhar ou ficar caro quando o esforço muda

  • Respostas truncadas. O raciocínio conta para o limite de max_tokens. Uma execução com o padrão usou 9,376 tokens de raciocínio em uma única função, então um limite de 4K ou 8K definido para respostas do M2.x pode cortar a resposta e retornar finish_reason: "length". A MiniMax recomenda 131,072 e permite 524,288.
  • Tempos limite excedidos. Em high ou acima, uma única chamada pode levar um minuto. É preciso aumentar para 120 segundos ou mais os tempos limite de clientes e proxies configurados para um modelo rápido.
  • Valores que não fazem nada sem avisar. Pela AIHubMix, none, minimal e um valor desconhecido como auto foram aceitos, e o modelo continuou raciocinando. Segundo os testes de um projeto de gateway, os próprios endpoints da MiniMax rejeitam valores desconhecidos (issue #8025 do sub2api). Use um dos cinco valores documentados.
  • Ferramentas que não expõem os níveis. Atualmente, o OpenCode não oferece variantes de esforço para este modelo, e alguns frameworks enviam «thinking disabled», o que aciona o erro 400. Confira o que sua ferramenta realmente envia.
  • Vários modelos no mesmo pipeline. M3 e M2.x ignoram o campo de esforço. Se você alternar entre modelos, um nível de esforço que economiza dinheiro no Flash não terá efeito nos outros.

Como definir em cada protocolo

Os três protocolos estão disponíveis pela AIHubMix com uma única chave. O guia de início rápido explica como obter as chaves, e a página de parâmetros unificados de raciocínio explica como a AIHubMix trata os campos de raciocínio entre fornecedores.

Chat Completions:

curl https://aihubmix.com/v1/chat/completions \
  -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "minimax-m3.1-flash",
       "reasoning_effort": "low",
       "max_tokens": 32768,
       "messages": [{"role": "user", "content": "Write a function that merges overlapping date ranges."}]}'

Anthropic Messages (SDK do Python; se a versão do seu SDK não reconhecer o campo, inclua output_config em extra_body):

import os
import anthropic

client = anthropic.Anthropic(base_url="https://aihubmix.com", api_key=os.environ["AIHUBMIX_API_KEY"])

msg = client.messages.create(
    model="minimax-m3.1-flash",
    max_tokens=32768,
    messages=[{"role": "user", "content": "Write a function that merges overlapping date ranges."}],
    extra_body={"output_config": {"effort": "medium"}},
)
print(msg.usage)

Responses:

import os
from openai import OpenAI

client = OpenAI(base_url="https://aihubmix.com/v1", api_key=os.environ["AIHUBMIX_API_KEY"])

resp = client.responses.create(
    model="minimax-m3.1-flash",
    reasoning={"effort": "low"},
    max_output_tokens=32768,
    input="Write a function that merges overlapping date ranges.",
)
print(resp.usage)

Confira usage nas primeiras chamadas. Chat Completions informa o raciocínio em completion_tokens_details.reasoning_tokens, Messages em output_tokens_details.thinking_tokens, e Responses em output_tokens_details.reasoning_tokens. Se esses números não mudarem quando você alterar o nível, a configuração não está chegando ao modelo.

Perguntas frequentes

Qual é o nível de esforço padrão do MiniMax M3.1 Flash?
Max. Se a solicitação não incluir um campo de esforço, o modelo raciocina no nível mais profundo.

Posso desativar totalmente o raciocínio?
Não. Desativar o raciocínio retorna HTTP 400 na API da MiniMax. O nível mais baixo é low e, em prompts curtos, low muitas vezes não usa tokens de raciocínio.

Qual nível de esforço devo usar para programação?
Comece em low para correções em uma única função e revisões pequenas, em medium para alterações em vários arquivos, e aumente somente quando uma tarefa falhar. Em nosso teste, low corrigiu corretamente uma função com dois bugs em todas as execuções.

O nível max é mais preciso?
Não na tarefa do nosso teste: todos os níveis passaram nos 215 testes. Max usou muito mais tokens e tempo. Níveis mais altos podem ajudar em tarefas mais difíceis, mas ninguém publicou dados que mostrem em quais casos.

Por que a mesma solicitação levou 10 segundos uma vez e 56 segundos na seguinte?
A profundidade do raciocínio varia entre execuções, mesmo em um nível fixo. Uma execução com baixo esforço no endpoint Messages usou cerca de dez vezes mais tokens de raciocínio do que outra.

reasoning_effort none funciona pela AIHubMix?
É aceito sem erro, mas o modelo continua raciocinando. Use low.

Como vejo quantos tokens de raciocínio uma chamada usou?
Consulte o objeto usage: reasoning_tokens no Chat Completions e no Responses, e thinking_tokens na API Messages.

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

Fontes