Livelli di effort di MiniMax M3.1 Flash: perché il valore predefinito costa 7× per correggere lo stesso bug

AIHubMix7 min di lettura
Livelli di effort di MiniMax M3.1 Flash: perché il valore predefinito costa 7× per correggere lo stesso bug

MiniMax M3.1 Flash ha cinque livelli di ragionamento e non offre un interruttore per disattivarlo. Se non scegli un livello, lo sceglie il modello al posto tuo, selezionando quello più profondo. La guida di MiniMax alla generazione di testo afferma che l’effort «è impostato su max se il parametro viene omesso».

Questo valore predefinito è costoso in un modo facile da non notare. AIHubMix ha eseguito la stessa correzione di due bug a ogni livello. Il valore predefinito ha usato circa 10× i token di ragionamento di low e ha richiesto circa 6× più tempo, e tutte le esecuzioni a ogni livello hanno superato tutti i 215 test. Il costo di ragionamento del modello è aumentato con il livello di effort, mentre la difficoltà dell’attività è rimasta la stessa.

In breve: inizia da low, passa a un livello superiore solo se un’attività fallisce o richiede nuovi tentativi e non lasciare mai il campo vuoto.

Cinque livelli, nessun interruttore per disattivarlo

Protocollo Campo Valori Valore predefinito
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

Non è possibile disattivare il ragionamento. Come indicato nella documentazione di riferimento dell’API Messages di MiniMax, l’API restituisce HTTP 400 per thinking: {"type": "disabled"} e per l’effort none, con il messaggio model "MiniMax-M3.1-Flash" requires adaptive thinking. I modelli MiniMax più vecchi ignorano del tutto il campo effort. Finora M3.1 Flash è l’unico modello MiniMax su cui ha effetto.

Tutti e tre i protocolli sono disponibili per minimax-m3.1-flash su AIHubMix. Una differenza rispetto all’API ufficiale di MiniMax: AIHubMix ha accettato reasoning_effort: "none" e "minimal" con HTTP 200, ma il modello ha comunque ragionato. Considera questi valori come operazioni senza effetto, non come un modo per disattivare il ragionamento.

Quanto è costato ogni livello per un’attività

Il test: una funzione di fatturazione con due bug. Una pausa che si protrae oltre la fine del periodo conta due volte un giorno, mentre le pause sovrapposte vengono sottratte due volte. Il modello restituisce la funzione corretta e un harness locale la verifica con 215 casi nascosti. Ogni livello è stato eseguito tre volte tramite l’endpoint Chat Completions di AIHubMix il 19 ottobre 2026, con max_tokens impostato a 32,768. Tutti i dati sono stati misurati da AIHubMix e nessun altro li ha riprodotti.

Effort Media dei token di ragionamento Intervallo (3 esecuzioni) Tempo medio Costo medio per correzione Test
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
omesso 6,364 4,284–9,376 56.3 s $0.0045 215/215 ×3

I costi si basano sui prezzi di AIHubMix per minimax-m3.1-flash: $0.165 per milione di token di input, $0.66 per milione di token di output e $0.0165 per milione di token di input memorizzati nella cache. I token di ragionamento vengono fatturati come token di output. Per esempio, la riga «omesso» ha registrato in media 464 token di prompt (circa 192 memorizzati nella cache) e 6,673 token di output, per un totale di circa $0.0045 per correzione.

Cosa indicano i numeri

Per questa attività bastava low. Ogni livello ha prodotto una correzione corretta a ogni esecuzione. Per un bug circoscritto a una singola funzione, il ragionamento aggiuntivo dei livelli superiori non ha apportato benefici misurabili.

Da low a medium si nota un netto salto. In media, medium ha usato circa 2.6× i token di ragionamento di low e ha richiesto più del doppio del tempo.

Oltre medium, le differenze tra i livelli si attenuano. Le nostre esecuzioni con xhigh hanno registrato in media meno token di quelle con high, mentre max si è sovrapposto a entrambi. Tre esecuzioni per livello non bastano per distinguerli. In questa attività, «high», «xhigh» e «max» hanno tutti comportato «più ragionamento, a volte molto di più».

Se omesso, il parametro si comporta come max. È quanto indicato nella documentazione di MiniMax. La media delle nostre esecuzioni con il parametro «omesso» è risultata superiore a quella di «max», ma gli intervalli si sovrappongono e la differenza rientra nella variabilità tra un’esecuzione e l’altra.

La variabilità è elevata a ogni livello. Con lo stesso prompt, il valore predefinito ha registrato tempi compresi tra 39 e 82 secondi. Sull’endpoint Anthropic Messages, tre esecuzioni con low hanno usato 511, 1,861 e 6,060 token di ragionamento. L’ultima ha richiesto 56 secondi, quanto una tipica esecuzione con max. L’effort determina la profondità media del ragionamento, ma non ne impone un limite rigido.

La velocità è rimasta stabile, circa 112 token di output al secondo per tutte le 24 esecuzioni di Flash, quindi il tempo è aumentato quasi linearmente con i token di ragionamento. A questa velocità, ragionare su 6,000 token significa aspettare quasi un minuto.

MiniMax non ha pubblicato dati propri sul numero di token o sulla latenza per ciascun livello. Non possiamo dire, sulla base di questo singolo test, quando un’attività più difficile richieda livelli superiori. I numeri sopra mostrano solo quanto costa ogni livello quando l’attività non ne ha bisogno.

I prompt brevi richiedono pochissimo ragionamento

«Ragiona sempre» non significa «ragiona sempre a lungo». Il ragionamento è adattivo, quindi la sua profondità dipende dalla difficoltà apparente del prompt:

  • Classificare cinque ticket di assistenza in una delle quattro categorie: 0 token di ragionamento con low e una media di 6 con il valore predefinito. Tutte le categorie erano corrette.
  • «Quanto fa 17 × 23?» con low: nessun ragionamento, 2 token di output.

Quindi, l’assenza di un interruttore per disattivarlo ha un costo quasi nullo per le chiamate brevi di classificazione, estrazione e instradamento. Il costo emerge con attività aperte come la programmazione: più a fondo lasci ragionare il modello, più elementi trova su cui riflettere.

Da dove iniziare

Questi sono punti di partenza. Solo le prime due righe sono state misurate direttamente; il resto sono nostre raccomandazioni, da verificare in base ai tentativi ripetuti nel tuo caso:

Carico di lavoro Inizia da Passa a un livello superiore quando
Classificazione, estrazione, instradamento low Le categorie sono errate nei casi difficili
Correzioni a una singola funzione, revisioni brevi low Una correzione fallisce i test due volte
Modifiche su più file, refactoring medium L’agente non individua un file dipendente
Cicli dell’agente con molte chiamate agli strumenti low o medium I passaggi si ripetono o si bloccano
Debugging difficile, domande di progettazione high Le risposte restano superficiali
Chat interattiva con una persona in attesa low In questo caso, non usare mai max come valore predefinito

Usa max solo se hai già visto high fallire con quel tipo di attività.

Cosa si rompe o diventa costoso quando cambia l’effort

  • Risposte troncate. Il ragionamento viene conteggiato in max_tokens. In una singola esecuzione con il valore predefinito, il modello ha usato 9,376 token di ragionamento su una sola funzione; quindi, un limite di 4K o 8K impostato per le risposte di M2.x può troncare la risposta, con finish_reason: "length". MiniMax consiglia 131,072 e consente 524,288.
  • Timeout. Con high e livelli superiori, una singola chiamata può durare un minuto. I timeout del client e del proxy, configurati per un modello veloce, vanno portati ad almeno 120 secondi.
  • Valori che non producono alcun effetto senza segnalarlo. Tramite AIHubMix, none, minimal e un valore sconosciuto come auto sono stati tutti accettati, ma il modello ha comunque ragionato. Stando ai test di un progetto gateway, gli endpoint ufficiali di MiniMax rifiutano i valori sconosciuti (issue #8025 di sub2api). Usa uno dei cinque valori documentati.
  • Strumenti che non espongono i livelli. Al momento, OpenCode non seleziona alcuna variante di effort per questo modello, e alcuni framework inviano «thinking disabled», provocando l’errore 400. Controlla cosa invia effettivamente il tuo strumento.
  • Modelli diversi nella stessa pipeline. M3 e M2.x ignorano il campo effort. Se instradi le richieste tra modelli, un livello di effort che riduce i costi su Flash non ha alcun effetto sugli altri.

Come impostarlo per ciascun protocollo

Tutti e tre i protocolli sono disponibili tramite AIHubMix con un’unica chiave. La guida introduttiva spiega come ottenere le chiavi, mentre la pagina sui parametri di ragionamento unificati illustra come AIHubMix gestisce i campi di ragionamento tra i vari fornitori.

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 Python; se la tua versione dell’SDK non riconosce il campo, inserisci output_config in 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)

Controlla usage per le prime chiamate. Chat Completions riporta il ragionamento in completion_tokens_details.reasoning_tokens, Messages in output_tokens_details.thinking_tokens e Responses in output_tokens_details.reasoning_tokens. Se questi numeri non cambiano quando modifichi il livello, l’impostazione non sta raggiungendo il modello.

Domande frequenti

Qual è il livello di effort predefinito di MiniMax M3.1 Flash?
Max. Se la richiesta non include il campo effort, il modello ragiona al livello più profondo.

Posso disattivare completamente il ragionamento?
No. Disattivare il ragionamento restituisce HTTP 400 sull’API di MiniMax. Il livello più basso è low e, con prompt brevi, low spesso non usa alcun token di ragionamento.

Quale livello di effort dovrei usare per programmare?
Inizia con low per correzioni a una singola funzione e revisioni brevi, con medium per modifiche su più file, e passa a un livello superiore solo quando un’attività fallisce. Nel nostro test, low ha corretto una funzione con due bug in modo corretto a ogni esecuzione.

Il livello di effort max è più preciso?
Non nell’attività del nostro test: tutti i livelli hanno superato tutti i 215 test. Max ha richiesto molti più token e più tempo. I livelli superiori potrebbero aiutare con attività più difficili, ma nessuno ha pubblicato dati che mostrino in quali casi.

Perché la stessa richiesta una volta ha richiesto 10 secondi e la volta successiva 56 secondi?
La profondità del ragionamento varia da un’esecuzione all’altra anche a parità di livello. Un’esecuzione con low sull’endpoint Messages ha usato circa dieci volte i token di ragionamento di un’altra.

reasoning_effort none funziona tramite AIHubMix?
Viene accettato senza errori, ma il modello continua a ragionare. Usa invece low.

Come faccio a vedere quanti token di ragionamento ha usato una chiamata?
Controlla l’oggetto usage: reasoning_tokens in Chat Completions e Responses, thinking_tokens nell’API Messages.

Continua a leggere: la serie MiniMax M3.1 Flash

Fonti