Poziomy wysiłku MiniMax M3.1 Flash: dlaczego domyślne ustawienie kosztuje 7× więcej przy tej samej poprawce błędu

AIHubMix7 min czytania
Poziomy wysiłku MiniMax M3.1 Flash: dlaczego domyślne ustawienie kosztuje 7× więcej przy tej samej poprawce błędu

MiniMax M3.1 Flash ma pięć poziomów myślenia i nie można go wyłączyć. Jeśli nie wybierzesz poziomu, model zrobi to za Ciebie i wybierze najgłębszy. Zgodnie z przewodnikiem MiniMax dotyczącym generowania tekstu, wysiłek „domyślnie ma wartość max, jeśli nie zostanie podany”.

Ten domyślny poziom jest kosztowny w sposób, który łatwo przeoczyć. AIHubMix uruchomił tę samą poprawkę dwóch błędów na każdym poziomie. Domyślne ustawienie zużyło około 10× więcej tokenów na myślenie niż low i zajęło około 6× więcej czasu, a każde uruchomienie na każdym poziomie zaliczyło wszystkie 215 testów. Koszt myślenia modelu wzrastał wraz z ustawionym poziomem wysiłku, choć trudność zadania pozostawała taka sama.

Krótka odpowiedź: zacznij od low, zwiększ poziom tylko wtedy, gdy zadanie kończy się niepowodzeniem lub wymaga ponownych prób, i nigdy nie pozostawiaj tego pola pustego.

Pięć poziomów, bez opcji wyłączenia

Protokół Pole Wartości Domyślnie
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

Nie można wyłączyć myślenia. Zgodnie z dokumentacją API Messages MiniMax, API zwraca HTTP 400 w przypadku thinking: {"type": "disabled"} oraz poziomu wysiłku none, wyświetlając komunikat model "MiniMax-M3.1-Flash" requires adaptive thinking. Starsze modele MiniMax całkowicie ignorują pole poziomu wysiłku. Jak dotąd M3.1 Flash to jedyny model MiniMax, na który to ustawienie ma jakikolwiek wpływ.

Wszystkie trzy protokoły są dostępne dla minimax-m3.1-flash w AIHubMix. Jedna różnica w porównaniu z własnym API MiniMax: AIHubMix zaakceptował reasoning_effort: "none" i "minimal", zwracając HTTP 200, ale model i tak myślał. Traktuj te wartości jako ustawienia bez efektu, a nie sposób na wyłączenie myślenia.

Ile kosztował każdy poziom przy jednym zadaniu

Test: funkcja rozliczeniowa z dwoma błędami. Pauza wykraczająca poza koniec okresu powoduje podwójne naliczenie jednego dnia, a nakładające się na siebie pauzy są odejmowane dwukrotnie. Model zwraca poprawioną funkcję, a lokalny zestaw testów sprawdza ją na 215 ukrytych przypadkach. Każdy poziom uruchomiono trzykrotnie przez endpoint Chat Completions AIHubMix 19 października 2026 r., z max_tokens ustawionym na 32,768. Wszystkie dane zmierzył AIHubMix i nikt inny ich nie odtworzył.

Wysiłek Średnia liczba tokenów na myślenie Zakres (3 uruchomienia) Średni czas Średni koszt jednej poprawki Testy
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
pominięto 6,364 4,284–9,376 56.3 s $0.0045 215/215 ×3

Koszty obliczono na podstawie stawek AIHubMix dla minimax-m3.1-flash: $0.165 za milion tokenów wejściowych, $0.66 za milion tokenów wyjściowych i $0.0165 za milion buforowanych tokenów wejściowych. Tokeny na myślenie są rozliczane jako tokeny wyjściowe. Na przykład w wierszu „pominięto” średnia wyniosła 464 tokeny promptu (w tym około 192 z pamięci podręcznej) i 6,673 tokenów wyjściowych, co daje około $0.0045 za poprawkę.

Co mówią liczby

Do tego zadania wystarczył poziom low. Każdy poziom za każdym razem dał poprawną poprawkę. W przypadku ograniczonego błędu w pojedynczej funkcji dodatkowe myślenie na wyższych poziomach nie przyniosło żadnych wymiernych korzyści.

Przejście z low na medium to wyraźny skok. Średnio medium zużywał około 2.6× więcej tokenów na myślenie niż low i zajmował ponad dwa razy więcej czasu.

Powyżej medium różnice między poziomami się zacierają. Średnia liczba tokenów w uruchomieniach xhigh była niższa niż w high, a wyniki max nakładały się na wyniki obu tych poziomów. Trzy uruchomienia na poziom nie wystarczą, by je rozróżnić. W tym zadaniu „high”, „xhigh” i „max” oznaczały „więcej myślenia, czasem znacznie więcej”.

Pominięcie ustawienia daje efekt podobny do max. Zgadza się to z dokumentacją MiniMax. Średnia dla „pominięto” okazała się wyższa niż dla „max”, ale zakresy się pokrywają, a różnica mieści się w wahaniach między uruchomieniami.

Na każdym poziomie występują duże wahania. Przy domyślnym ustawieniu czas dla tego samego promptu wynosił od 39 do 82 sekund. W przypadku endpointu Anthropic Messages trzy uruchomienia z poziomem low zużyły odpowiednio 511, 1,861 i 6,060 tokenów na myślenie. Ostatnie zajęło 56 sekund — tyle co typowe uruchomienie na poziomie max. Poziom wysiłku określa średnią głębokość myślenia, a nie jego sztywny limit.

Przepustowość była stała i wynosiła około 112 tokenów wyjściowych na sekundę we wszystkich 24 uruchomieniach Flash, więc czas rośnie niemal liniowo wraz z liczbą tokenów na myślenie. Przy tej szybkości myślenie obejmujące 6,000 tokenów oznacza niemal minutę oczekiwania.

MiniMax nie opublikował własnych danych o liczbie tokenów ani opóźnieniach dla poszczególnych poziomów. Nie możemy stwierdzić na podstawie tego jednego testu, kiedy trudniejsze zadanie zaczyna wymagać wyższych poziomów. Powyższe liczby pokazują tylko, ile kosztuje każdy poziom, gdy zadanie go nie wymaga.

Krótkie prompty wymagają niewiele myślenia

„Zawsze myśli” nie oznacza „zawsze dużo myśli”. Myślenie jest adaptacyjne, więc jego głębokość zależy od tego, jak trudny wydaje się prompt:

  • Klasyfikacja pięciu zgłoszeń do pomocy technicznej do jednej z czterech etykiet: 0 tokenów na myślenie przy low i średnio 6 przy ustawieniu domyślnym. Wszystkie etykiety były poprawne.
  • „Ile wynosi 17 × 23?” przy poziomie low: żadnego myślenia, 2 tokeny wyjściowe.

Brak opcji wyłączenia kosztuje więc niemal nic przy krótkich wywołaniach służących do klasyfikacji, ekstrakcji i kierowania zadań. Koszt pojawia się przy zadaniach otwartych, takich jak pisanie kodu, gdzie model znajduje więcej rzeczy do przemyślenia, im większą głębię mu umożliwisz.

Od czego zacząć

To propozycje punktu wyjścia. Bezpośrednio zmierzono tylko dwa pierwsze wiersze; pozostałe to nasze rekomendacje, które warto zweryfikować na podstawie własnych ponownych prób:

Obciążenie Zacznij od Zwiększ poziom, gdy
Klasyfikacja, ekstrakcja, kierowanie zadań low Etykiety są błędne w trudnych przypadkach
Poprawki pojedynczych funkcji, niewielkie przeglądy low Poprawka dwukrotnie nie przechodzi testów
Zmiany w wielu plikach, refaktoryzacje medium Agent pomija plik zależny
Pętle agenta z wieloma wywołaniami narzędzi low lub medium Kroki się powtarzają lub zatrzymują
Trudne debugowanie, pytania projektowe high Odpowiedzi pozostają powierzchowne
Interaktywna rozmowa, w której ktoś czeka na odpowiedź low Nigdy nie ustawiaj tu domyślnie max

Używaj max tylko wtedy, gdy widzisz, że high nie radzi sobie z danym rodzajem zadania.

Co się psuje lub drożeje, gdy zmieniasz poziom wysiłku

  • Ucięte odpowiedzi. Myślenie wlicza się do max_tokens. W jednym uruchomieniu na poziomie domyślnym model zużył 9,376 tokenów na myślenie przy jednej funkcji, więc limit 4K lub 8K ustawiony dla odpowiedzi M2.x może spowodować ucięcie odpowiedzi z finish_reason: "length". MiniMax zaleca 131,072 i dopuszcza 524,288.
  • Przekroczenia limitu czasu. Przy poziomie high i wyższym pojedyncze wywołanie może trwać minutę. Limity czasu klienta i serwera proxy ustawione z myślą o szybkim modelu trzeba zwiększyć do 120 sekund lub więcej.
  • Wartości, które po cichu nie robią nic. W AIHubMix wartości none, minimal i nieznana wartość, taka jak auto, zostały zaakceptowane, ale model i tak myślał. Własne endpointy MiniMax odrzucają nieznane wartości, jak wynika z testów projektu bramki (zgłoszenie sub2api #8025). Używaj jednej z pięciu udokumentowanych wartości.
  • Narzędzia, które nie udostępniają poziomów. OpenCode obecnie nie rozpoznaje żadnego wariantu poziomu wysiłku dla tego modelu, a niektóre frameworki wysyłają „thinking disabled”, co powoduje błąd 400. Sprawdź, co faktycznie wysyła Twoje narzędzie.
  • Różne modele w jednym potoku. M3 i M2.x ignorują pole poziomu wysiłku. Jeśli kierujesz żądania do różnych modeli, poziom wysiłku pozwalający oszczędzać na Flash nie ma żadnego wpływu na pozostałe.

Ustawianie poziomu w każdym protokole

Wszystkie trzy protokoły są dostępne przez AIHubMix z użyciem jednego klucza. Szybki start opisuje klucze, a strona poświęcona ujednoliconym parametrom rozumowania wyjaśnia, jak AIHubMix obsługuje pola rozumowania u różnych dostawców.

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; jeśli Twoja wersja SDK nie zna pola output_config, dodaj je do 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)

Sprawdź usage w kilku pierwszych wywołaniach. Chat Completions raportuje myślenie jako completion_tokens_details.reasoning_tokens, Messages jako output_tokens_details.thinking_tokens, a Responses jako output_tokens_details.reasoning_tokens. Jeśli te liczby nie zmieniają się po zmianie poziomu, ustawienie nie dociera do modelu.

FAQ

Jaki poziom wysiłku jest domyślny w MiniMax M3.1 Flash?
Max. Jeśli żądanie nie zawiera pola określającego poziom wysiłku, model myśli na najgłębszym poziomie.

Czy mogę całkowicie wyłączyć myślenie?
Nie. Wyłączenie myślenia powoduje błąd HTTP 400 w API MiniMax. Najniższy poziom to low, a przy krótkich promptach low często nie zużywa żadnych tokenów na myślenie.

Jakiego poziomu wysiłku używać do programowania?
Zacznij od low przy poprawkach pojedynczych funkcji i niewielkich przeglądach, od medium przy zmianach w wielu plikach, a wyższy poziom wybieraj tylko wtedy, gdy zadanie kończy się niepowodzeniem. W naszym teście low za każdym razem poprawnie naprawił funkcję z dwoma błędami.

Czy poziom max zapewnia większą dokładność?
Nie w naszym teście: każdy poziom zaliczył wszystkie 215 testów. Max zużył znacznie więcej tokenów i czasu. Wyższe poziomy mogą pomagać przy trudniejszych zadaniach, ale nikt nie opublikował danych pokazujących, w jakich przypadkach.

Dlaczego to samo żądanie raz trwało 10 sekund, a następnym razem 56 sekund?
Głębokość myślenia zmienia się między uruchomieniami nawet przy stałym poziomie. Jedno wywołanie z niskim poziomem wysiłku na endpoincie Messages zużyło około dziesięć razy więcej tokenów na myślenie niż inne.

Czy reasoning_effort none działa przez AIHubMix?
Wartość jest akceptowana bez błędu, ale model i tak myśli. Zamiast niej używaj low.

Jak sprawdzić, ile tokenów na myślenie zużyło wywołanie?
Sprawdź obiekt usage: reasoning_tokens w Chat Completions i Responses oraz thinking_tokens w API Messages.

Czytaj dalej: seria o MiniMax M3.1 Flash

Źródła