Преминаване от 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. Ако плащате според потреблението, имате четири седмици сами да смените ID на модела.

Повечето код за M2.7 работи без промени с M3.1 Flash. Проблемът идва от едно дизайнерско решение: M3.1 Flash винаги разсъждава и, ако не посочите друго, го прави на най-високо ниво. Това води до една явна грешка, няколко незабележими увеличения на разходите и няколко настройки, които вече не правят нищо.

На 19 октомври 2026 г. AIHubMix изпрати през своя шлюз всяка заявка от тази статия към minimax-m3.1-flash. Текстовете на грешките са копирани от получените отговори. Правилата на MiniMax са цитирани от документацията на API.

Кого засяга и как

Използвате M2.5/M2.7 чрез Какво се случва Краен срок
MiniMax M Plan / Token Plan Заявките се обслужват от M3.1 Flash под старото име Вече се случи (19 октомври)
MiniMax с плащане според потреблението Старите ID продължават да работят, след което спират 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 разсъждението може да бъде изключено. Framework-ите, които определят модела като неразсъждаващ и по подразбиране изпращат „thinking off“, се сблъскват с нея при всяко извикване; проектите 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 за „невалидни параметри“, а не код, специфичен за разсъждението. В този случай upstream услугата очевидно не е успяла да изтегли отдалеченото изображение. Това е нашето тълкуване на съобщението; MiniMax не документира този случай.

Поправка. Изпращайте изображенията като base64 (data:image/png;base64,…) или ги хоствайте на място, което приема стандартни HTTP заявки. Когато търсите в логовете код 2013, прочетете цялото съобщение, преди да решите, че е грешката с разсъждението.

След 18 ноември: спрени ID на модели

На тази дата API на MiniMax ще спре да обработва заявки с плащане според потреблението към MiniMax-M2.5, MiniMax-M2.5-highspeed, MiniMax-M2.7 и MiniMax-M2.7-highspeed. В съобщението не се споменават M2.1 и M2. Сменете ID на модела преди тази дата. В AIHubMix новото ID е minimax-m3.1-flash.

Проблеми, които не се забелязват веднага

Всички тези заявки връщат 200. Разликата се вижда в сметката, времето за отговор или изхода.

1. Превключватели за изключване на разсъждението, които вече не правят нищо

Чрез AIHubMix три начина да поискате разсъждението да бъде изключено се приемат без грешка, но моделът въпреки това разсъждава:

Заявка Резултат в AIHubMix
Messages API, thinking disabled 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 токена от prompt-а бяха обслужени от кеша, дори при първата заявка. Изглежда, че MiniMax добавя в началото на всяка заявка неизменен пролог; при тази цена това струва около една трета от цента на хиляда заявки. Премахнете блоковете cache_control; тук те не правят нищо.
  • service_tier не се поддържа. Ако сте използвали ниво Priority на M3 за по-ниско време за отговор, във Flash няма еквивалент.

5. Едно и също име, различни настройки за семплиране

Стойността по подразбиране на MiniMax за top_p се е променила от 0.9 при M2.x на 0.95 при M3.1 Flash, а контекстният прозорец е нараснал от 204,800 на 1,000,000 токена. Prompt-овете, настроени за 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. Ако изпращате много дълги prompt-ове, сравнете първата си фактура със собствената си оценка.

Стъпки за намаляване на разходите:

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

Агенти с реални разрешения

Три особености са важни, когато моделът може да изпълнява команди или да редактира файлове:

  • Той винаги разсъждава, преди да действа, дори при low. Това помага при избора на инструменти. Но всяка стъпка с инструмент добавя време за разсъждение; при нашите кратки извиквания на инструменти една стъпка отнемаше около 2 to 7 секунди при low.
  • Изпълнява инструкциите ви точно в тесния им обхват. Един от първите тестери го описа като „невероятно бърз, но му трябват ясни и конкретни инструкции, иначе е твърде мързелив“. Задавайте на агентите изрични условия за спиране и стъпки за проверка („изпълни тестовете и постави изхода тук“), вместо неограничени цели.
  • Официално 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 от поддържащ проектa 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

Двата формата за мислене, които изпращат клиентите в стил Anthropic — enabled с бюджет и adaptive — върнаха 200 при тестовете ни, така че няма да получите 400. Известен проблем: не е документирано дали настройката за effort в Claude Code се подава към модел, различен от Claude, като output_config.effort. Ако не се подава, моделът работи с настройката си по подразбиране max, а ходовете ще са по-бавни, отколкото с M2.7. Тестът за бърза проверка по-долу показва как да установите това.

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. В проблем № 54801 в OpenCode (възпроизведен във v2.0.27) се съобщава, че OpenCode не открива варианти на effort за този модел, така че ctrl+t не прави нищо. Заобиколното решение, описано в проблема, е да зададете сами петте варианта в opencode.json. При съвместимия с OpenAI доставчик на AIHubMix заявката трябва да задава полето reasoning_effort (low … max), а не output_config.effort, посочено в проблема. Не добавяйте вариант none.

15-минутен тест за бърза проверка за всеки от трите:

  1. Създайте временна папка с функция, която съдържа един известен бъг, и тестов файл, който се проваля заради него.
  2. Помолете агента: „Пусни тестовете, поправи бъга, пусни тестовете отново и ми покажи изхода.“
  3. Успехът изглежда така: агентът пуска тестовете преди и след поправката, последното изпълнение минава успешно, приключва за няколко хода и нито един ход не връща 400.
  4. Проверете регистъра на използването в AIHubMix. Трябва да виждате заявки към minimax-m3.1-flash с reasoning токени. Ако всеки ход отнема почти минута, настройката ви за effort не достига до модела и той работи на max.

Контролен списък за миграция

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

Често задавани въпроси

Защо получавам грешката „requires adaptive thinking“?
Заявката ви е изключила мисленето — обикновено чрез задаване на типа thinking на disabled в крайна точка Chat Completions. M3.1 Flash мисли винаги. Премахнете полето или задайте adaptive, а ако искате по-висока скорост, използвайте effort low.

Заявките ми към M2.7 не се промениха, но отговорите са различни. Защо?
Ако използвате MiniMax M Plan или Token Plan, от 19 октомври 2026 г. заявките с посочен M2.5 или M2.7 се обслужват от M3.1 Flash, но под старото име.

Какъв е крайният срок за потребителите с плащане според използването?
18 ноември 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 октомври 2026 г.

Защо отговорите ми се прекъсват?
Токените за мислене се броят към max_tokens. Ако finish_reason е length, увеличете max_tokens. MiniMax препоръчва 131,072.

Продължете с поредицата за MiniMax M3.1 Flash

Източници