Перехід з MiniMax M2.5/M2.7 до 18 листопада: як виправити помилку 400 «requires adaptive thinking» у M3.1 Flash

AIHubMix9 хв читання
Перехід з MiniMax M2.5/M2.7 до 18 листопада: як виправити помилку 400 «requires adaptive thinking» у M3.1 Flash

MiniMax припиняє підтримку M2.5 і M2.7 18 листопада 2026 року, і перехід уже розпочався. Із 19 жовтня нові користувачі більше не можуть користуватися цими двома старими сімействами, а запити за планами, у яких указано ці моделі, обслуговуються через M3.1 Flash. Якщо ви платите за фактом використання, у вас є чотири тижні, щоб самостійно змінити ідентифікатор моделі.

Більшість коду для M2.7 працює з M3.1 Flash без змін. Проблема криється в одному рішенні щодо архітектури: M3.1 Flash завжди міркує, причому на найглибшому рівні, якщо не вказати інше. Через це виникає одна явна помилка, непомітно зростають витрати, а кілька параметрів узагалі перестають щось робити.

AIHubMix виконав усі запити з цієї статті через свій шлюз 19 жовтня 2026 року, використовуючи minimax-m3.1-flash. Тексти помилок скопійовано з відповідей. Правила MiniMax наведено з документації до API.

На кого це впливає і як

Ви користуєтеся M2.5/M2.7 через Що відбувається Кінцевий термін
MiniMax M Plan / Token Plan Запити обслуговуються через M3.1 Flash під старою назвою Уже сталося (19 жовтня)
MiniMax із оплатою за фактом використання Старі ідентифікатори працюватимуть, а потім перестануть 18 листопада 2026 року
Новий обліковий запис MiniMax M2.5/M2.7 недоступні 19 жовтня 2026 року

На сторінці моделей MiniMax це пояснює так для користувачів із планом: «усі запити до моделей M2.5 і M2.7 у межах цих планів автоматично спрямовуватимуться до M3.1 Flash Preview», а також «наявні назви моделей і надалі працюватимуть». Для користувачів із оплатою за фактом використання: «Після припинення підтримки API-запити до цих моделей більше не працюватимуть». У повідомленні не йдеться про автоматичне перенаправлення для користувачів із оплатою за фактом, тож очікуйте на помилки, а не на резервний варіант.

Користувачам із планом варто звернути увагу на значення слова «спрямовуватимуться». У журналах усе ще буде зазначено M2.7, але ваги моделі інші, контекст у 5× більший, а глибина міркування за замовчуванням — max. Сприймайте це як зміну моделі й повторно запустіть свої тести.

Що дає явну помилку

400: «requires adaptive thinking»

Що ви побачите. Запит, у якому вимкнено міркування, відхиляється:

{"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}}

Чому. У довіднику Messages API MiniMax зазначає, що модель «завжди міркує»: якщо передано thinking.type, його значення має бути adaptive, а значення disabled спричиняє помилку HTTP 400. Така помилка може виникнути в коді, написаному для M3, адже в M3 можна вимкнути міркування. Фреймворки, які позначають модель як таку, що не виконує міркувань, і за замовчуванням надсилають команду «вимкнути міркування», отримуватимуть її під час кожного виклику; про подібні випадки повідомляли проєкти kodus-ai та 9router-go.

Мінімальний запит, що спричиняє помилку (Chat Completions в 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"}}'

Виправлення. Видаліть поле thinking або задайте для нього значення {"type": "adaptive"}. Якщо ви вимикали міркування, щоб заощадити час, натомість використовуйте "reasoning_effort": "low".

Помилка 400 із тим самим кодом 2013 для URL-адрес зображень

Що ви побачите. invalid param: remote returned status 400 (2013). Ми отримали цю помилку для URL-адреси зображення на upload.wikimedia.org. Той самий запит із зображенням у форматі base64 або URL-адресою з іншого хосту повернув код 200.

Чому. Код 2013 — це загальний код MiniMax для «некоректних параметрів», а не помилка, специфічна для міркування. У цьому випадку, схоже, сторонній сервіс не зміг завантажити віддалене зображення. Так ми тлумачимо повідомлення; MiniMax не документує цей випадок.

Виправлення. Надсилайте зображення у форматі base64 (data:image/png;base64,…) або розміщуйте їх на хості, який обслуговує звичайні HTTP-запити. Шукаючи код 2013 у журналах, прочитайте повне повідомлення, перш ніж вирішувати, що це помилка міркування.

Після 18 листопада: припинення підтримки ідентифікаторів моделей

Виклики API MiniMax із оплатою за фактом використання для MiniMax-M2.5, MiniMax-M2.5-highspeed, MiniMax-M2.7 і MiniMax-M2.7-highspeed перестануть працювати цього дня. M2.1 і M2 у повідомленні не згадуються. Змініть ідентифікатор моделі заздалегідь. В AIHubMix новий ідентифікатор — minimax-m3.1-flash.

Що відбувається без явної помилки

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

1. Перемикачі «вимкнути міркування», які більше нічого не змінюють

Через AIHubMix запити з трьома способами вимкнути міркування приймаються без помилки, але модель усе одно міркує:

Запит Результат в AIHubMix
Messages API, міркування вимкнено 200; 469–622 токени міркування для короткої головоломки
Chat, reasoning_effort none 200; 265–372 токени міркування для тієї самої головоломки
Chat, reasoning_effort minimal 200; модель усе одно міркує

Перші два рядки — це по три запуски однієї й тієї самої логічної задачі про три коробки, де для low використано 173–251 токен міркування. Перевірку зі значенням minimal виконано один раз на однорядковому арифметичному запиті.

Лише в Chat Completions значення thinking: {"type": "disabled"} спричиняє описану вище помилку 400. Якщо ваш код для M2.x або M3 покладався на будь-який із цих перемикачів, щоб прискорити виклики, тепер модель непомітно міркує. Єдиний справжній спосіб керувати цим — рівень інтенсивності, мінімальне значення якого — low.

2. За замовчуванням рівень інтенсивності — max

У M2.7 не було рівнів міркування. У M3.1 Flash їх п’ять, а згідно з документацією MiniMax, якщо поле не вказано, використовується max. Для невеликого виправлення двох помилок в одній функції Python AIHubMix виміряв такі показники:

Параметр Середня кількість токенів міркування Середній час Середня вартість виправлення
Рівень інтенсивності не вказано 6,364 56 s $0.0045
Рівень інтенсивності low 591 9.5 s $0.0006

Кожен запуск із обома значеннями успішно пройшов усі 215 прихованих тестів. Вартість розраховано за цінами AIHubMix — $0.165 за мільйон вхідних і $0.66 за мільйон вихідних токенів; для кожного значення виконано по три запуски. Якщо перейти на нову модель, не задавши рівень інтенсивності, те саме завдання триватиме приблизно в 6× довше. Повне вимірювання для всіх п’яти рівнів наведено в статті про рівні інтенсивності з цієї серії.

3. Токени міркування витрачають ліміт max_tokens

Токени міркування враховуються в ліміті max_tokens. У коді для M2.x часто задають невеликі ліміти для коротких відповідей. За значення max_tokens: 64 і запиту з двома реченнями модель витратила весь ліміт на міркування, після чого повернула finish_reason: "length" і відповідь «Сонячне світло містить багато кольорів», обірвану посеред речення. MiniMax рекомендує 131,072 і дозволяє використовувати до 524,288. Збільште малі ліміти або перевіряйте finish_reason, перш ніж покладатися на текст відповіді.

4. Змінилися кешування та рівні обслуговування

  • cache_control не підтримується в M3.1 Flash (або M3), згідно з довідником API MiniMax. У M2.7 явний запис у кеш коштував $0.375 за мільйон токенів. У M3.1 Flash кешування відбувається автоматично. AIHubMix стягує $0.0165 за мільйон токенів, зчитаних із кешу, а приблизно 175–195 токенів промпту в кожному надісланому нами запиті обслуговувалися з кешу, навіть у першому. Схоже, на стороні MiniMax це незмінний початковий текст; за такою ціною це коштує близько третини цента за тисячу запитів. Видаліть блоки cache_control — тут вони нічого не роблять.
  • service_tier не підтримується. Якщо ви користувалися рівнем Priority у M3 для зменшення затримки, у Flash немає рівноцінної альтернативи.

5. Та сама назва, інші параметри семплювання

Значення top_p за замовчуванням у MiniMax змінилося з 0.9 у M2.x на 0.95 у M3.1 Flash, а розмір контексту збільшився з 204,800 до 1,000,000 токенів. Промпти, налаштовані для M2.7, можуть давати довші або менш чіткі результати. Навіть якщо назва моделі не змінилася, це все одно нова модель: повторно запустіть свої тести.

Правила оплати, які легко не помітити

  • Міркування тарифікуються як вихідні дані. В AIHubMix це $0.66 за мільйон токенів. За замовчуванням міркування становили 95% вихідних токенів під час нашого виправлення помилок (6,364 із 6,673 токенів).
  • MiniMax поки що не оприлюднила офіційну ціну за токен. На сторінці з цінами вказано M3 і M2.x, але не M3.1 Flash. AIHubMix стягує $0.165 / $0.66 / $0.0165 (вхідні токени / вихідні токени / токени, зчитані з кешу).
  • Офіційна ціна M3 подвоюється для запитів, у яких понад 512K вхідних токенів. AIHubMix указує одну ціну для M3.1 Flash. Якщо ви надсилаєте дуже довгі промпти, звірте перший рахунок зі своїм розрахунком.

Як зменшити витрати:

  1. За замовчуванням задавайте reasoning_effort: "low" (Chat), output_config.effort: "low" (Messages) або reasoning.effort: "low" (Responses), а для окремих завдань підвищуйте рівень.
  2. Розміщуйте незмінні інструкції на початку промпту, щоб їх можна було обслуговувати з автоматичного кешу.
  3. Задавайте для max_tokens достатньо велике значення, щоб міркування не обрізало відповідь: повторне надсилання запиту через обрізану відповідь коштуватиме дорожче, ніж додатковий запас.

Агенти з реальними дозволами

Якщо модель може виконувати команди або редагувати файли, важливі три її особливості:

  • Перед дією модель завжди міркує, навіть за значення low. Це допомагає вибирати інструменти. Водночас кожен крок із використанням інструмента має затримку на міркування; у наших коротких викликах інструментів один крок за значення low тривав близько 2–7 секунд.
  • Вона виконує вказівки буквально й без зайвого. Один із перших тестувальників назвав її «неймовірно швидкою, але їй потрібні чіткі й конкретні інструкції, інакше вона надто лінива». Задавайте агентам явні умови завершення та кроки перевірки («запусти тести й встав їхній результат»), а не формулюйте відкриті цілі.
  • tool_choice офіційно підтримує лише значення auto. AIHubMix прийняв "required" (Chat) і {"type": "any"} (Messages), і модель викликала інструмент, але MiniMax не документує примусове використання. Не покладайтеся на це в перевірках безпеки.

MiniMax радить повертати блоки міркування без змін у наступних ходах (Messages) і зберігати reasoning_content без змін (Chat). У нашому тесті короткий цикл виклику інструмента спрацював і після вилучення блока міркування, але в довгих циклах роботи агента дотримуйтеся документованого правила.

Інструменти для кодування

AIHubMix обслуговує minimax-m3.1-flash через усі три протоколи, потрібні найпоширенішим інструментам для роботи з кодом. Кожен інструмент було протестовано 19 жовтня: текстовим запитом, викликом інструмента та обміном результатом його роботи.

Інструмент Потрібний протокол Працює через AIHubMix Поле рівня інтенсивності
Claude Code Anthropic Messages Так output_config.effort
Codex CLI OpenAI Responses Так reasoning.effort
OpenCode Сумісний з OpenAI Так reasoning_effort

В API MiniMax розмір контексту становить 1,000,000 токенів. Сам клієнт MiniMax Code за замовчуванням обмежує його до 512K, «щоб збалансувати зручність і вартість», згідно з цитатою супровідника документації MiniMax у проєкті magpie; параметра для розміру контексту в API немає.

Claude Code. Спрямуйте його на AIHubMix, як описано в посібнику AIHubMix з Claude Code, і задайте модель 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

Обидва формати thinking, які надсилають клієнти в стилі Anthropic, — enabled із бюджетом і adaptive — у наших тестах повертали 200, тож помилки 400 не буде. Відоме обмеження: не задокументовано, чи передається параметр effort у Claude Code до моделі, що не належить до Claude, як output_config.effort. Якщо ні, модель працюватиме зі значенням за замовчуванням max, а відповіді надходитимуть повільніше, ніж із M2.7. Наведений нижче smoke-тест допоможе це перевірити.

Codex CLI. Codex працює з Responses API, який підтримує цю модель: виклики функцій повертаються як елементи function_call. Налаштуйте власного провайдера, як описано в посібнику AIHubMix для Codex, задавши wire_api = "responses", а потім установіть model = "minimax-m3.1-flash" і model_reasoning_effort. Значення xhigh і minimal приймалися; minimal не є одним із рівнів MiniMax, але модель усе одно міркує.

OpenCode. У зверненні OpenCode #54801 (відтворено у v2.0.27) повідомляється, що OpenCode не визначає варіанти effort для цієї моделі, тож ctrl+t нічого не робить. Як обхідний шлях у зверненні пропонується самостійно оголосити п’ять варіантів у opencode.json. Для OpenAI-сумісного провайдера AIHubMix у полі запиту кожного варіанта слід задавати reasoning_effort (low … max), а не output_config.effort, як у зверненні. Не додавайте варіант none.

15-хвилинний smoke-тест для будь-якого з трьох інструментів:

  1. Створіть тимчасову папку з функцією, у якій є одна відома помилка, і тестовим файлом, який через неї завершується невдало.
  2. Попросіть агента: «Запусти тести, виправ помилку, запусти тести ще раз і покажи мені результат».
  3. Ознаки успіху: агент запускає тести до й після виправлення, останній запуск проходить успішно, агент завершує роботу за кілька ходів, і жоден із ходів не повертає помилку 400.
  4. Перевірте журнал використання AIHubMix. Ви маєте побачити запити minimax-m3.1-flash із токенами reasoning. Якщо кожен хід триває майже хвилину, параметр effort не передається моделі й вона працює зі значенням max.

Контрольний список міграції

  • Замініть ідентифікатори MiniMax-M2.5 / M2.7 на minimax-m3.1-flash (в AIHubMix) до 18 листопада.
  • Приберіть із запитів параметри вимкнення thinking, effort none та effort minimal.
  • Явно задавайте рівень effort у кожному запиті; почніть із low.
  • Збільште max_tokens, щоб thinking не обрізав відповіді; перевіряйте finish_reason.
  • Приберіть поля cache_control і service_tier.
  • Надсилайте зображення у форматі base64 або з хоста, доступного для отримання зображень upstream-сервісом.
  • Не змінюйте блоки thinking і reasoning_content між ходами роботи з інструментами.
  • Повторно запустіть оцінювання: та сама назва, нова модель, нові параметри семплювання за замовчуванням.
  • У засобах для написання коду перевірте, чи передається параметр effort моделі (тривалість ходу — швидка підказка).

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

Чому з’являється помилка «requires adaptive thinking»?
У вашому запиті вимкнено thinking, зазвичай через тип thinking зі значенням disabled в ендпойнті Chat Completions. M3.1 Flash завжди використовує thinking. Приберіть це поле або встановіть значення adaptive, а для швидшої роботи задайте effort low.

Мої запити до M2.7 не змінилися, але відповіді стали іншими. Чому?
Якщо ви користуєтеся MiniMax M Plan або Token Plan, запити із зазначенням M2.5 або M2.7 з 19 October 2026 обслуговуються моделлю M3.1 Flash під старою назвою.

Коли спливає термін для користувачів із оплатою за фактом використання?
18 November 2026. Після цієї дати запити до M2.5 і M2.7 через MiniMax API перестануть працювати.

Чи працює reasoning_effort none в AIHubMix?
Запит повертає 200, але модель усе одно міркує. Найнижчий ефективний рівень — low.

Чи потрібно й надалі використовувати cache_control?
Ні. MiniMax не підтримує його в M3.1 Flash. Кешування відбувається автоматично, а AIHubMix стягує за кешований ввід $0.0165 за мільйон токенів.

Чи можна використовувати M3.1 Flash у Claude Code і Codex?
Так. AIHubMix надає доступ до неї через Anthropic Messages API для Claude Code і через Responses API для Codex. 19 October 2026 обидва інструменти пройшли тести з текстом, викликами інструментів і результатами їхньої роботи.

Чому мої відповіді обрізані?
Токени thinking враховуються в max_tokens. Якщо finish_reason має значення length, збільште max_tokens. MiniMax рекомендує 131,072.

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

Джерела