Мигриране от Claude Haiku 4.5 до 5.5: Пет 400 грешки и тихите промени

AIHubMix9 мин четене
Мигриране от Claude Haiku 4.5 до 5.5: Пет 400 грешки и тихите промени

Смяната на claude-haiku-4-5 с claude-haiku-5-5 е най-малката част от това мигриране. Пет модела на заявки, които работеха на Haiku 4.5, сега връщат 400 грешка, а няколко допълнителни промени не провалят заявки, но променят какво получавате, каква е цената или как моделът се държи в рамките на агент.

Anthropic казва, че съществуващите подсказки от Haiku 4.5 трябва да работят добре на Haiku 5.5 без промени. Кодът на заявките около тези подсказки е друга история. Тази публикация изброява всеки проблем, с който ще се срещнете: какво ще видите, защо се случва и как да го поправите, последвано от контролен списък. Авторитетната справка е ръководството за мигриране на Haiku 5.5 на Anthropic Haiku 5.5 migration guide.

Триаж: съответствайте на симптома

Какво виждате Причина Поправка
400 на заявка с бюджет за мислене Ръчното мислене е премахнато Адаптивно мислене плюс усилие
400 с температура, top_p или top_k Параметрите за вземане на проби са заключени Премахнете ги
400, когато съобщенията завършват с ход на асистент Предварителното попълване е премахнато Завършете с ход на потребител
400 при използване на компютър Старият инструмент за компютър е отхвърлен Преместете се в набора от инструменти за компютър
400 след редактиране на предишни ходове Мисленето е свързано с историята Запазете историята само за добавяне
Парсерът връща празен или грешен текст Блокът за мислене идва първи Изберете блокове по тип
Отговорът е прекъснат или липсва Мисленето се брои за лимита Увеличете max_tokens или намалете усилието
Броят на токените и сметките се увеличават с около 30% Нов токенизатор Пребройте отново на новия модел
Отговор с причина за спиране отказ Новите класфикатори за безопасност Обработете го в клиента си

Първите пет провалят шумно. Останалите провалят тихо, което ги прави по-скъпи за откриване.

Петте шумни провала

1. Ръчни бюджети за мислене

Какво ще видите: 400 на всяка заявка, която изпраща thinking: {"type": "enabled", "budget_tokens": N}.

Защо: Haiku 4.5 поддържаше само ръчно разширено мислене с бюджет за токени. Haiku 5.5 поддържа само адаптивно мислене и контролира дълбочината с effort.

Поправка: изпратете {"type": "adaptive"} или оставете thinking извън, и изберете ниво на усилие. Където старият бюджет беше малък, за да спести токени, изберете ниско ниво.

# Преди: Haiku 4.5
thinking={"type": "enabled", "budget_tokens": 8000}

# След: Haiku 5.5
thinking={"type": "adaptive"},
output_config={"effort": "medium"},

2. Параметри за вземане на проби

Какво ще видите: 400, когато заявка задава temperature, top_p или top_k.

Защо: Haiku 5.5 приема само стойностите по подразбиране: temperature от 1 и top_p от 0.99. Всяка друга стойност на която и да е от тях, всяко top_k или изпращането на и двете temperature и top_p връща 400, независимо дали се използва мислене или не. top_p от 1 също е отхвърлено.

Поправка: премахнете трите. Честият случай е temperature=0 на класификатор, използван за получаване на стабилни етикети. Заменете го с структурирано изходно или инструмент, чийто вход е enum, така че наборът от етикети да се налага от схемата, а не от вземането на проби. Също така проверете обвивките на SDK и шлюзовете, които добавят стойности по подразбиране за вземане на проби от ваше име.

3. Предварително попълване на асистент

Какво ще видите: 400, когато последният запис в messages е ход на асистент, дори и с изключено мислене.

Защо: предварителното попълване не се поддържа на Haiku 5.5, в съответствие с останалата част от текущата линия на Claude.

Поправка: завършете messages с ход на потребител и заменете предварителното попълване с това, за което е било. Контролът на формата става структурирано изходно (output_config.format). Предварително попълненият предговор става инструкция за системен подканващ текст за директен отговор. Продължението на прекъснат отговор преминава в съобщението на потребителя: "Вашият предишен отговор завърши с [текст]. Продължете оттам."

4. Използване на компютър

Какво ще видите: 400 на Claude API или Google Cloud, когато заявката декларира инструмента computer_20250124.

Защо: на тези платформи Haiku 5.5 поддържа използването на компютър само чрез новия набор от инструменти, computer_toolset_20260801.

Поправка: премахнете бета заглавието computer-use-2025-01-24, заменете записа на инструмента с {"type": "computer_toolset_20260801"} и актуализирайте цикъла на агента: разпределяйте на всеки блок tool_use по name и toolset_name, а не по input.action, обработвайте всеки такъв блок в ход и повтаряйте toolset_name на резултатите. Zoom е включен по подразбиране; ако вашата среда не го реализира, деактивирайте го в конфигурацията на набора от инструменти. На Amazon Bedrock проверете бележките за съвместимост на инструмента за използване на компютър, преди да изберете версия. Същото семейство инструменти също предлага използване на браузър, което Haiku 4.5 никога не е имал.

5. Редактиране на предишни ходове

Какво ще видите: 400, когато заявка изпраща обратно блок за мислене след нещо, което е променено преди него: системната подканваща текст, списъка с инструменти или предишно съобщение.

Защо: блокът за мислене на Haiku 5.5 остава валиден само докато всичко изпратено преди него не е променено. Проверка се прилага по подразбиране за акаунти, създадени на или след 31 август 2026 г., а за по-стари акаунти само когато заявката избере да се включи.

Поправка: запазете разговорите само за добавяне. Чести виновници са системна подканваща текст с времеви печат, списък с инструменти, който расте, когато се свърже плъгин, клиентска съкратена версия и напомняния, инжектирани в историята и премахнати на следващия ход. За инструкции на всеки ход, Haiku 5.5 поддържа системни съобщения вътре в messages, без бета заглавие, които добавят контекст без редактиране на предходното.

Тихите провали

Блоковете за мислене идват първи. Мисленето е включено по подразбиране, така че отговорът може да започне с един или повече thinking блокове. Код, който чете response.content[0].text като отговор, се проваля или връща празен текст. Изберете блокове по type.

Текстът за мислене е празен по подразбиране. Haiku 4.5 връщаше обобщено мислене. Haiku 5.5 връща thinking блокове с празно текстово поле и само подпис. Ако вашият потребителски интерфейс показваше резюмета на разсъжденията, задайте thinking: {"type": "adaptive", "display": "summarized"}. Във всеки случай, предавайте блоковете за мислене обратно без промяна с резултатите от инструмента; сериализатор, който премахва празни блокове, ги изтрива.

max_tokens сега трябва да покрива мисленето. Лимит, зададен за кратък отговор, може да бъде изразходван от мисленето, завършвайки отговора с stop_reason: "max_tokens" преди всякакъв текст. Увеличете лимита или намалете усилието.

Същият текст е с около 30% повече токени. Новият токенизатор променя полетата usage, резултатите от count_tokens, бюджетите за контекст и всякакви max_tokens, настроени за Haiku 4.5. Той също така премества ценовата линия от 100K токена на около 77K токена, както Haiku 4.5 ги броеше. Пребройте реалните подсказки с модела, зададен на claude-haiku-5-5, преди да се доверите на таблото за разходи.

По подразбиране усилието е средно. Haiku 4.5 нямаше настройка за усилие. Haiku 5.5 по подразбиране е medium, което може да е повече мислене, отколкото е необходимо за прост маршрут. Задайте го изрично.

Блоковете за мислене остават с акаунта, който ги е създал. Ако вашата услуга възпроизвежда съхранени разговори чрез различен API акаунт, блоковете за мислене на Haiku 5.5 се премахват безшумно и заявката се изпълнява без това разсъждение. Възпроизвеждайте всеки разговор през акаунта, който го е произвел.

Приоритетният слой не се пренася. Haiku 5.5 не поддържа Приоритетен слой, така че планирайте капацитета отделно, ако разчитате на него за Haiku 4.5.

Списъците на шлюзовете могат да се различават. Страницата на Haiku 5.5 на AIHubMix в момента изброява дължина на контекста от 200K, докато Anthropic специфицира 1M. Потвърдете лимита на маршрута, който използвате, преди да мигрирате дълги натоварвания на подсказки.

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

Отказите са нови и нищо не ги улавя вместо вас. Haiku 5.5 изпълнява класфикатори за безопасност в четири категории: кибер, биологични, фронтова LLM разработка и общи вреди. Отказът се връща като нормален HTTP 200 с stop_reason: "refusal" и категория в stop_details. За разлика от Sonnet 5.5 и Opus 5.5, Haiku 5.5 няма резервно решение на сървъра: списък с резервни модели връща 400, а режимът по подразбиране за резервиране оставя заявката отказана. Проверете stop_reason преди да прочетете content и решете в собствения си код дали да префразирате, да ескалирате до по-голям модел или да спрете. Според публикацията за стартиране, кибер защитите позволяват по-широк спектър от защитна работа, отколкото Sonnet 5.5, но блокират тестовете за проникване.

Потребителският текст в резултатите от инструментите може да бъде игнориран. Haiku 5.5 е обучен да устоява на инжектиране на подсказки чрез резултатите от инструментите. Ако вашият хъб доставя съобщение, което потребителят е написал по време на задача, вътре в блок tool_result, моделът може да го третира като ненадеждно и да го игнорира. Поставете входа на потребителя в текстов блок след последния резултат от инструмента и запазете уведомленията на хъба в отделно системно съобщение.

При ниско усилие агентите могат да спрат рано или да пропуснат проверки. С дълъг системен подканващ текст на агента на low, Haiku 5.5 понякога връща задачата преди да е завършена, а на low и medium понякога докладва промяна на кода като завършена без да извърши тест. Ръководството за подканване на Haiku 5.5 на Anthropic Haiku 5.5 prompting guide има кратки инструкции за двете. За агент, който може да пише файлове или да изпълнява команди, непровереното "готово" е по-опасното от двете.

Принуждаването на инструмент пропуска мисленето. Принуденото tool_choice все още се приема, но моделът след това извиква инструмента без предварително мислене. За инструменти с странични ефекти, auto плюс ясна инструкция позволява на модела да разсъждава преди да действа.

Инструментите за търсене се нуждаят от днешната дата. Когато Haiku 5.5 има инструмент за търсене, дайте му текущата дата в системния подканващ текст или описанието на инструмента. В тестовете на Anthropic това заземява отговорите в последните резултати.

Мигрирана заявка през AIHubMix

Класификатор на Haiku 4.5, който използва temperature=0, бюджет за мислене и предварително попълнено { за JSON, пренаписан за Haiku 5.5 на AIHubMix Claude native endpoint:

import os
import anthropic

client = anthropic.Anthropic(
    api_key=os.environ["AIHUBMIX_API_KEY"],
    base_url="https://aihubmix.com",
)

r = client.messages.create(
    model="claude-haiku-5-5",
    max_tokens=2000,                     # място за мислене плюс JSON
    output_config={
        "effort": "low",                 # заменя стария бюджет за мислене
        "format": {                      # заменя предварителното попълване и temperature=0
            "type": "json_schema",
            "schema": {
                "type": "object",
                "properties": {
                    "label": {"type": "string", "enum": ["billing", "bug", "other"]}
                },
                "required": ["label"],
                "additionalProperties": False,
            },
        },
    },
    messages=[{"role": "user", "content": "Билет: 'Бях таксуван два пъти за октомври.'"}],
)

if r.stop_reason == "refusal":
    raise RuntimeError(f"отказано: {r.stop_details}")
text = next(b.text for b in r.content if b.type == "text")
print(text)

Дали шлюзът предава полета output_config и нови бета заглавия без промяна, е важно да се потвърди при първото ви тестово изпълнение. Когато мигрираният маршрут премине вашите оценки, списъкът на моделите на AIHubMix улеснява насочването на същия код към Sonnet 5.5 за всякакъв тип задача, която продължава да се проваля на Haiku.

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

  1. Променете идентификатора на модела на claude-haiku-5-5, без суфикс с дата.
  2. Заменете всеки бюджет за мислене с адаптивно мислене и изрично ниво на усилие.
  3. Премахнете температура, top_p и top_k, включително стойности по подразбиране, добавени от обвивки.
  4. Заменете предварителните попълвания на асистента с структурирано изходно, системни инструкции или продължения на ходове на потребителя.
  5. Преместете използването на компютър в набора от инструменти за компютър и актуализирайте цикъла на агента.
  6. Направете историята на разговорите само за добавяне, ако блоковете за мислене се възпроизвеждат.
  7. Четете съдържанието на отговора по тип блок и запазвайте празните блокове за мислене при възпроизвеждане.
  8. Увеличете max_tokens на маршрути за кратки отговори или намалете усилието.
  9. Обработвайте причината за отказ преди да прочетете съдържанието; не конфигурирайте резервни решения на сървъра.
  10. Пребройте токените на подсказките на новия модел и пренастройте таблата за разходи.
  11. Проверете кои подсказки сега преминават 100K токена и ги намалете или разделете.
  12. Задайте дисплея на обобщен, ако потребителите са виждали резюмета на разсъжденията.
  13. Доставяйте входа на потребителя по време на ход извън резултатите от инструментите.
  14. Дайте на агенти с активирано търсене днешната дата.
  15. Проверете отново лимитите на скоростта, нуждите от Приоритетен слой и лимита на контекста на вашия шлюз, преди да преместите обем.

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

Ще работят ли моите подсказки от Haiku 4.5 на Haiku 5.5?
Anthropic казва, че съществуващите подсказки трябва да работят добре без промени. Параметрите на заявките около тях са това, което проваля: бюджети за мислене, настройки за вземане на проби, предварителни попълвания и старият инструмент за използване на компютър всички връщат грешки.

Защо класификаторът ми се проваля, след като премахнах температура 0?
Не трябва да се проваля, но етикетите може да варират повече. Използвайте структурирано изходно или инструмент с поле enum, така че разрешените етикети да се налагат от схемата. Това е по-надеждно, отколкото температура 0 някога е била.

Мога ли все още да изключа мисленето?
Да, на ниско, средно и високо усилие. На xhigh и max, деактивирането на мисленето връща грешка. Anthropic препоръчва вместо това по-ниско ниво на усилие, тъй като моделът може сам да пропусне мисленето при прости заявки.

Какво трябва да направи кодът ми, когато Haiku 5.5 откаже?
Проверете причината за спиране преди да прочетете съдържанието. Haiku 5.5 няма резервно решение на сървъра, така че вашият код решава дали да префразира, да изпрати заявката на по-голям модел или да върне грешка на потребителя.

Защо използването на токени ми се увеличи след мигрирането?
Две причини. Новият токенизатор брои около 30% повече токени за същия текст, а мисленето е включено по подразбиране, добавяйки токени за изход. Намалете усилието и пребройте подсказките си на новия модел.

Трябва ли да променя нещо за кеширане на подсказки?
Обикновено не, и става по-лесно: минималната кеширана подсказка пада от 4,096 на 512 токена, а блоковете за мислене от предишни ходове остават в кешираната префикс по подразбиране. Избягвайте редактирането на предишни ходове, което сега анулира блоковете за мислене, както и кеша.

Може ли разговор да премине от Haiku 5.5 към по-голям модел?
Да. Sonnet 5.5 и Opus 5.5 четат блоковете за мислене на Haiku 5.5, така че разговор, ескалиран до който и да е от тях, запазва предишното си разсъждение. За други целеви модели, проверете документацията за запазени разсъждения първо.

Продължете да четете: серията Claude Haiku 5.5

Източници