Міграція з 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.

Тріаж: відповідність симптому

Що ви бачите Причина Виправлення
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 на класифікаторі, який використовується для отримання стабільних міток. Замість цього використовуйте структурований вихід або інструмент, вхід якого є перерахуванням, щоб набір міток контролювався схемою, а не вибіркою. Також перевірте обгортки SDK та шлюзи, які додають значення за замовчуванням вибірки від вашого імені.

3. Попереднє заповнення асистента

Що ви побачите: 400, коли останній запис у messages є ходом асистента, навіть якщо мислення вимкнено.

Чому: попереднє заповнення не підтримується на Haiku 5.5, що відповідає решті поточної лінійки Claude.

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

4. Використання комп'ютера

Що ви побачите: 400 на API Claude або 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 запускає класифікатори безпеки в чотирьох категоріях: кібер, біо, розвиток LLM на передовій та загальні шкоди. Відмова повертається як звичайний HTTP 200 з stop_reason: "refusal" та категорією в stop_details. Haiku 5.5 не має резервного копіювання на стороні сервера: список моделей резервного копіювання повертає 400, а режим резервного копіювання за замовчуванням залишає запит відхиленим. Перевірте stop_reason перед читанням content і виріште у своєму коді, чи перефразувати, ескалувати до більшої моделі або зупинитися. Згідно з постом про запуск, кіберзахист дозволяє більш широкий спектр оборонної роботи, ніж Sonnet 5.5, але блокує тестування на проникнення.

Текст користувача всередині результатів інструмента може бути проігнорований. Haiku 5.5 навчена протистояти ін'єкції запитів через результати інструментів. Якщо ваш хостинг передає повідомлення, яке користувач набрав під час завдання, всередині блоку tool_result, модель може вважати його ненадійним і проігнорувати. Помістіть введення користувача в текстовий блок після останнього результату інструмента та зберігайте повідомлення хостингу в окремому системному повідомленні.

При низькому зусиллі агенти можуть зупинятися раніше або пропускати перевірки. З довгим системним запитом для кодування на low Haiku 5.5 іноді повертає завдання назад до завершення, а на low та medium іноді повідомляє про зміну коду як завершену без виконання тесту. Посібник з підказок Haiku 5.5 містить короткі інструкції для обох. Для агента, який може писати файли або виконувати команди, неперевірене "завершено" є більш небезпечним з двох.

Примус інструмента пропускає мислення. Примусовий tool_choice все ще приймається, але модель тоді викликає інструмент без попереднього мислення. Для інструментів з побічними ефектами auto плюс чітка інструкція дозволяє моделі міркувати перед дією.

Інструменти пошуку потребують сьогоднішньої дати. Коли Haiku 5.5 має інструмент пошуку, надайте йому поточну дату в системному запиті або описі інструмента. У тестуванні Anthropic це закріплювало відповіді в останніх результатах.

Мігрований запит через AIHubMix

Класифікатор Haiku 4.5, який використовував temperature=0 та попереднє заповнення { для JSON, переписаний для Haiku 5.5 на кінцевій точці AIHubMix Claude native:

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. Видаліть temperature, 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 стверджує, що існуючі запити повинні добре працювати без змін. Параметри запиту навколо них — це те, що ламає: бюджети на мислення, налаштування вибірки, попереднє заповнення та старий інструмент використання комп'ютера всі повертають помилки.

Чому мій класифікатор зазнає невдачі після того, як я видалив temperature 0?
Він не повинен зазнавати невдачі, але мітки можуть варіюватися більше. Використовуйте структурований вихід або інструмент з полем перерахування, щоб дозволені мітки контролювалися схемою. Це надійніше, ніж temperature 0 коли-небудь було.

Чи можу я все ще вимкнути мислення?
Так, на низькому, середньому та високому зусиллі. На xhigh та max вимкнення мислення повертає помилку. Anthropic рекомендує натомість нижчий рівень зусиль, оскільки модель може пропустити мислення на простих запитах самостійно.

Що має робити мій код, коли Haiku 5.5 відмовляє?
Перевірте причину зупинки перед читанням вмісту. Haiku 5.5 не має резервного копіювання на стороні сервера, тому ваш код вирішує, чи перефразувати, надіслати запит до більшої моделі або повернути помилку користувачу.

Чому моє використання токенів зросло після міграції?
Дві причини. Новий токенізатор рахує приблизно на 30% більше токенів для того ж тексту, а мислення за замовчуванням увімкнено, додаючи токени виходу. Знизьте зусилля та перераховуйте свої запити на новій моделі.

Чи потрібно мені щось змінювати для кешування запитів?
Зазвичай ні, і це стає простіше: згідно з посібником з міграції Anthropic, мінімальний кешований запит зменшується з 4,096 до 512 токенів, а блоки мислення з попередніх ходів залишаються в кешованому префіксі за замовчуванням. Уникайте редагування попередніх ходів, що тепер робить блоки мислення недійсними, а також кеш.

Чи може розмова перейти з Haiku 5.5 на більшу модель?
Так, сама розмова переноситься. Чи перенесуться також ранні блоки мислення Haiku 5.5, залежить від цільової моделі, тому перевірте документацію Anthropic щодо збережених думок, перш ніж покладатися на це.

Продовжуйте читати: серія Claude Haiku 5.5

Джерела