Рівні зусиль MiniMax M3.1 Flash: чому налаштування за замовчуванням коштує в 7× дорожче за те саме виправлення помилки

AIHubMix7 хв читання
Рівні зусиль MiniMax M3.1 Flash: чому налаштування за замовчуванням коштує в 7× дорожче за те саме виправлення помилки

У MiniMax M3.1 Flash є п’ять рівнів міркування, але вимкнути його не можна. Якщо не вибрати рівень, модель сама обирає найглибший. У посібнику MiniMax із генерації тексту сказано, що зусилля «за замовчуванням дорівнюють max, якщо параметр не вказано».

Це налаштування за замовчуванням може непомітно дорого обійтися. AIHubMix запустив виправлення тих самих двох помилок на кожному рівні. За замовчуванням модель використала приблизно в 10× більше токенів міркування, ніж на low, і працювала приблизно в 6× довше. Усі запуски на кожному рівні пройшли всі 215 тестів. Вартість міркувань моделі зростала разом із рівнем зусиль, тоді як складність завдання не змінювалася.

Коротко: починайте з low, переходьте на вищий рівень, лише якщо завдання не виконано або потрібні повторні спроби, і ніколи не залишайте це поле порожнім.

П’ять рівнів, вимкнути не можна

Протокол Поле Значення За замовчуванням
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

Вимкнути міркування не можна. Згідно з довідником API Messages MiniMax, API повертає HTTP 400 для thinking: {"type": "disabled"} і для рівня зусиль none з повідомленням model "MiniMax-M3.1-Flash" requires adaptive thinking. Старіші моделі MiniMax повністю ігнорують поле зусиль. Поки що M3.1 Flash — єдина модель MiniMax, на яку воно впливає.

На AIHubMix для minimax-m3.1-flash доступні всі три протоколи. Є одна відмінність від власного API MiniMax: AIHubMix прийняв reasoning_effort: "none" і "minimal" з HTTP 200, але модель однаково міркувала. Сприймайте ці значення як такі, що нічого не змінюють, а не як спосіб вимкнути міркування.

Скільки коштував кожен рівень на одному завданні

Тест: функція розрахунку оплати з двома помилками. Якщо призупинення триває довше, ніж період, один день зараховується двічі, а періоди призупинення, що перекриваються, віднімаються двічі. Модель повертає виправлену функцію, а локальний тестовий стенд перевіряє її на 215 прихованих тестах. Кожен рівень запускали тричі через кінцеву точку Chat Completions AIHubMix 19 жовтня 2026 року, встановивши max_tokens на 32,768. Усі показники виміряла AIHubMix; більше ніхто їх не відтворював.

Зусилля Середня кількість токенів міркування Діапазон (3 запуски) Середній час Середня вартість одного виправлення Тести
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
не вказано 6,364 4,284–9,376 56.3 s $0.0045 215/215 ×3

Для розрахунку вартості використано ціни AIHubMix на minimax-m3.1-flash: $0.165 за мільйон вхідних токенів, $0.66 за мільйон вихідних токенів і $0.0165 за мільйон кешованих вхідних токенів. Токени міркування оплачуються як вихідні. Наприклад, у рядку «не вказано» середній показник становив 464 токени запиту (приблизно 192 з кешу) і 6,673 вихідних токени — це близько $0.0045 за виправлення.

Що показують цифри

Для цього завдання вистачило low. Кожен рівень щоразу давав правильне виправлення. Для локалізованої помилки в одній функції додаткові міркування на вищих рівнях не дали жодного вимірюваного результату.

Перехід із low на medium помітний. На medium середня кількість токенів міркування була приблизно в 2.6× більшою, ніж на low, а час — більш ніж удвічі довшим.

Різниця між рівнями вище medium розмивається. У наших запусках xhigh середня кількість токенів була меншою, ніж на high, а показники max перетиналися з обома. Трьох запусків на рівень недостатньо, щоб їх розрізнити. На цьому завданні рівні «high», «xhigh» і «max» означали лише «більше міркувань, іноді набагато більше».

Якщо рівень не вказати, поведінка відповідає max. Це збігається з документацією MiniMax. Середній показник у рядку «не вказано» виявився вищим, ніж у max, але діапазони перетинаються, а різниця вкладається у звичайні коливання між запусками.

На кожному рівні розкид значний. Для того самого запиту час роботи за замовчуванням коливався від 39 до 82 секунд. На кінцевій точці Anthropic Messages три запуски з low використали 511, 1,861 і 6,060 токенів міркування. Останній тривав 56 секунд — стільки ж, скільки типовий запуск на max. Рівень зусиль визначає середню глибину міркувань, а не жорстко обмежує її.

Швидкість обробки була стабільною — близько 112 вихідних токенів за секунду в усіх 24 запусках Flash, тож час майже лінійно залежить від кількості токенів міркування. За такої швидкості міркування на 6,000 токенів означають очікування майже хвилину.

MiniMax не публікувала власних даних про кількість токенів або затримку для кожного рівня. Ми не можемо сказати на основі цього єдиного тесту, коли складніше завдання починає вимагати вищих рівнів. Наведені цифри показують лише вартість кожного рівня, коли завдання його не потребує.

На коротких запитах міркувань майже немає

«Завжди міркує» не означає «завжди довго міркує». Міркування адаптивні, тому їхня глибина залежить від того, наскільки складним здається запит:

  • Класифікація п’яти звернень до служби підтримки за однією з чотирьох категорій: 0 токенів міркування на low і в середньому 6 на рівні за замовчуванням. Усі категорії визначено правильно.
  • «Скільки буде 17 × 23?» на рівні low: жодного міркування, 2 вихідні токени.

Отже, відсутність перемикача вимкнення майже нічого не коштує для коротких запитів на класифікацію, вилучення даних і маршрутизацію. Додаткові витрати з’являються у відкритих завданнях, як-от написання коду: що глибше ви дозволяєте моделі міркувати, то більше вона знаходить приводів для міркувань.

З чого почати

Це початкові рекомендації. Безпосередньо виміряли лише перші два рядки; решта — наші поради, які варто перевірити на власних повторних спробах:

Тип роботи Початковий рівень Коли підвищувати рівень
Класифікація, вилучення даних, маршрутизація low На складних випадках категорії визначено неправильно
Виправлення в одній функції, невеликі перевірки коду low Виправлення двічі не проходить тести
Зміни в кількох файлах, рефакторинг medium Агент не враховує пов’язаний файл
Агент зациклюється на численних викликах інструментів low або medium Кроки повторюються або процес зупиняється
Складне налагодження, питання про проєктування high Відповіді залишаються поверховими
Інтерактивний чат, де людина чекає на відповідь low У цьому випадку ніколи не встановлюйте max за замовчуванням

Використовуйте max, лише якщо бачите, що high не справляється з подібними завданнями.

Що ламається або дорожчає зі зміною рівня зусиль

  • Відповіді обрізаються. Токени міркування враховуються в max_tokens. В одному запуску за замовчуванням модель використала 9,376 токенів міркування для однієї функції, тож ліміт у 4K або 8K, встановлений для відповідей M2.x, може обрізати відповідь із finish_reason: "length". MiniMax рекомендує 131,072 і допускає 524,288.
  • Тайм-аути. На рівні high і вище один виклик може тривати хвилину. Тайм-аути клієнта та проксі, налаштовані на швидку модель, потрібно збільшити до 120 секунд або більше.
  • Значення, які непомітно нічого не змінюють. Через AIHubMix приймалися none, minimal і невідоме значення на кшталт auto, але модель однаково міркувала. Згідно з тестами проєкту шлюзу, власні кінцеві точки MiniMax відхиляють невідомі значення (запит sub2api #8025). Використовуйте одне з п’яти значень, зазначених у документації.
  • Інструменти, що не надають доступу до рівнів. Наразі OpenCode для цієї моделі не пропонує жодного варіанта рівня зусиль, а деякі фреймворки надсилають параметр «thinking disabled», що спричиняє помилку 400. Перевірте, що саме надсилає ваш інструмент.
  • Кілька моделей в одному конвеєрі. M3 і M2.x ігнорують поле рівня зусиль. Якщо ви маршрутизуєте запити між моделями, рівень зусиль, який заощаджує кошти на Flash, не впливає на інші моделі.

Як задати рівень у кожному протоколі

Усі три протоколи доступні через AIHubMix з одним ключем. У короткому посібнику описано налаштування ключів, а на сторінці єдиних параметрів міркування — як AIHubMix обробляє поля міркування для різних постачальників.

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 (Python SDK; якщо версія вашого SDK не знає про це поле, додайте output_config у 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)

Перевірте usage у перших кількох викликах. Chat Completions повідомляє про міркування в completion_tokens_details.reasoning_tokens, Messages — у output_tokens_details.thinking_tokens, а Responses — у output_tokens_details.reasoning_tokens. Якщо ці значення не змінюються після зміни рівня, отже, налаштування не доходить до моделі.

Поширені запитання

Який рівень зусиль встановлено для MiniMax M3.1 Flash за замовчуванням?
Max. Якщо в запиті немає поля рівня зусиль, модель міркує на найглибшому рівні.

Чи можна повністю вимкнути міркування?
Ні. Якщо вимкнути міркування через API MiniMax, повертається HTTP 400. Найнижчий рівень — low, а на коротких запитах він часто взагалі не використовує токенів міркування.

Який рівень зусиль використовувати для написання коду?
Починайте з low для виправлень в одній функції та невеликих перевірок коду, із medium — для змін у кількох файлах, і підвищуйте рівень лише тоді, коли завдання не виконано. У нашому тесті low щоразу правильно виправляв функцію з двома помилками.

Чи дає рівень max точніші результати?
Не в нашому тесті: на кожному рівні пройшли всі 215 тестів. На max було використано значно більше токенів і часу. Вищі рівні можуть допомогти зі складнішими завданнями, але ніхто не публікував даних про те, у яких саме випадках.

Чому один і той самий запит одного разу виконувався 10 секунд, а наступного — 56 секунд?
Навіть за незмінного рівня глибина міркувань відрізняється від запуску до запуску. Один запуск із низьким рівнем зусиль на кінцевій точці Messages використав приблизно вдесятеро більше токенів міркування, ніж інший.

Чи працює reasoning_effort none через AIHubMix?
Це значення приймається без помилки, але модель однаково міркує. Використовуйте натомість low.

Як дізнатися, скільки токенів міркування використав виклик?
Перевірте об’єкт usage: reasoning_tokens у Chat Completions і Responses, а thinking_tokens — в API Messages.

Читайте далі: серія матеріалів про MiniMax M3.1 Flash

Джерела