Migreren van Claude Haiku 4.5 naar 5.5: Vijf 400-fouten en de Stille Wijzigingen

AIHubMix9 min leestijd
Migreren van Claude Haiku 4.5 naar 5.5: Vijf 400-fouten en de Stille Wijzigingen

Het veranderen van claude-haiku-4-5 naar claude-haiku-5-5 is het kleinste deel van deze migratie. Vijf aanvraagpatronen die werkten op Haiku 4.5 geven nu een 400-fout terug, en verschillende andere wijzigingen veroorzaken geen fout, maar veranderen wat je terugkrijgt, wat het kost, of hoe het model zich gedraagt binnen een agent.

Anthropic zegt dat bestaande Haiku 4.5 prompts goed zouden moeten werken op Haiku 5.5 zonder wijzigingen. De aanvraagcode rond die prompts is een ander verhaal. Deze post somt elk probleem op zoals je het tegenkomt: wat je zult zien, waarom het gebeurt, en hoe je het kunt oplossen, gevolgd door een checklist. De autoritatieve referentie is de Haiku 5.5 migratiehandleiding van Anthropic.

Triage: match het symptoom

Wat je ziet Oorzaak Oplossing
400 bij een aanvraag met een denkbudget Handmatig denken verwijderd Adaptief denken plus inspanning
400 met temperatuur, top_p of top_k Samplingparameters vergrendeld Verwijder ze
400 wanneer berichten eindigen op een assistentbeurt Prefill verwijderd Eindig op een gebruikersbeurt
400 bij computergebruik Oud computertool afgewezen Verplaats naar de computertoolset
400 na het bewerken van eerdere beurten Denken gebonden aan geschiedenis Houd geschiedenis alleen toevoegen
Parser retourneert lege of verkeerde tekst Denken blok komt eerst Selecteer blokken op type
Antwoord afgebroken of ontbrekend Denken telt mee voor de limiet Verhoog max_tokens of verlaag inspanning
Token tellingen en rekeningen stijgen met ongeveer 30% Nieuwe tokenizer Hertel de telling op het nieuwe model
Antwoord met stopreden weigering Nieuwe veiligheidsclassificaties Behandel het in je client

De eerste vijf falen luid. De rest faalt stil, wat het duurder maakt om te vinden.

De vijf luide fouten

1. Handmatige denkbudgetten

Wat je zult zien: een 400 bij elke aanvraag die thinking: {"type": "enabled", "budget_tokens": N} verzendt.

Waarom: Haiku 4.5 ondersteunde alleen handmatig uitgebreid denken met een tokenbudget. Haiku 5.5 ondersteunt alleen adaptief denken en controleert de diepte met effort.

Oplossing: stuur {"type": "adaptive"} of laat thinking weg, en kies een inspanningsniveau. Waar het oude budget klein was om tokens te besparen, kies een laag niveau.

# Voor: Haiku 4.5
thinking={"type": "enabled", "budget_tokens": 8000}

# Na: Haiku 5.5
thinking={"type": "adaptive"},
output_config={"effort": "medium"},

2. Samplingparameters

Wat je zult zien: een 400 wanneer een aanvraag temperature, top_p of top_k instelt.

Waarom: Haiku 5.5 accepteert alleen de standaardinstellingen: temperature van 1 en top_p van 0.99. Elke andere waarde van een van beide, elke top_k, of het verzenden van zowel temperature als top_p geeft een 400 terug, ongeacht of denken wordt gebruikt. Een top_p van 1 wordt ook afgewezen.

Oplossing: verwijder alle drie. De gebruikelijke situatie is temperature=0 op een classifier, gebruikt om stabiele labels te krijgen. Vervang het door gestructureerde output of een tool waarvan de invoer een enum is, zodat de labelset wordt afgedwongen door schema in plaats van door sampling. Controleer ook SDK-wrappers en gateways die standaard samplingwaarden aan je toevoegen.

3. Assistent prefill

Wat je zult zien: een 400 wanneer de laatste invoer in messages een assistentbeurt is, zelfs met denken uit.

Waarom: prefill wordt niet ondersteund op Haiku 5.5, wat overeenkomt met de rest van de huidige Claude-lijn.

Oplossing: eindig messages met een gebruikersbeurt, en vervang de prefill door waar het voor was. Formaatcontrole wordt gestructureerde output (output_config.format). Een voorgevulde inleiding wordt een systeem-promptinstructie om direct te antwoorden. Een voortzetting van een onderbroken antwoord gaat naar het gebruikersbericht: "Je vorige antwoord eindigde met [tekst]. Ga daar verder."

4. Computergebruik

Wat je zult zien: een 400 op de Claude API of Google Cloud wanneer de aanvraag het computer_20250124 tool verklaart.

Waarom: op die platforms ondersteunt Haiku 5.5 computergebruik alleen via de nieuwere toolset, computer_toolset_20260801.

Oplossing: verwijder de computer-use-2025-01-24 bètakop, vervang de toolinvoer door {"type": "computer_toolset_20260801"}, en werk de agentloop bij: dispatch op elke tool_use blok's name en toolset_name in plaats van op input.action, behandel elk dergelijk blok in een beurt, en echo toolset_name op resultaten. Zoom is standaard ingeschakeld; als je omgeving dit niet implementeert, schakel het dan uit in de toolsetconfiguratie. Controleer op Amazon Bedrock de compatibiliteitsnotities van de computertool voordat je een versie kiest. Dezelfde toolsetfamilie biedt ook browsergebruik, wat Haiku 4.5 nooit had.

5. Bewerken van eerdere beurten

Wat je zult zien: een 400 wanneer een aanvraag een denkblok terugstuurt nadat iets ervoor is veranderd: de systeemprompt, de lijst met tools, of een eerder bericht.

Waarom: een Haiku 5.5 denkblok blijft alleen geldig zolang alles wat ervoor is verzonden onveranderd is. De controle wordt standaard afgedwongen voor accounts die zijn aangemaakt op of na 31 augustus 2026, en op oudere accounts alleen wanneer een aanvraag ervoor kiest.

Oplossing: houd gesprekken alleen toevoegen. Veelvoorkomende schuldigen zijn een systeemprompt met een tijdstempel, een lijst met tools die groeit wanneer een plugin verbinding maakt, client-side afkapping, en herinneringen die in de geschiedenis worden geïnjecteerd en in de volgende beurt worden verwijderd. Voor instructies per beurt ondersteunt Haiku 5.5 systeemberichten binnen messages, zonder bètakop, die context toevoegen zonder wat eerder kwam te bewerken.

De stille fouten

Denkblokken komen eerst. Denken is standaard ingeschakeld, zodat een antwoord kan beginnen met een of meer thinking blokken. Code die response.content[0].text leest als het antwoord breekt of retourneert lege tekst. Selecteer blokken op type.

Denktekst is standaard leeg. Haiku 4.5 retourneerde samengevat denken. Haiku 5.5 retourneert thinking blokken met een leeg tekstveld en alleen een handtekening. Als je UI redeneersamenvattingen toonde, stel dan thinking: {"type": "adaptive", "display": "summarized"} in. Hoe dan ook, geef denkblokken onveranderd terug met toolresultaten; een serializer die lege blokken verwijdert, verwijdert ze.

max_tokens moet nu denken dekken. Een limiet die is ingesteld voor een kort antwoord kan worden opgebruikt door denken, waardoor het antwoord eindigt met stop_reason: "max_tokens" voordat er enige tekst is. Verhoog de limiet of verlaag de inspanning.

Dezelfde tekst is ongeveer 30% meer tokens. De nieuwe tokenizer verandert usage velden, count_tokens resultaten, contextbudgetten, en elke max_tokens die is afgestemd op Haiku 4.5. Het verplaatst ook de 100K-token prijsgrens naar ongeveer 77K tokens zoals Haiku 4.5 ze telde. Hertel echte prompts met het model ingesteld op claude-haiku-5-5 voordat je een kosten-dashboard vertrouwt.

De standaardinspanningsniveau is medium. Haiku 4.5 had geen inspanningsinstelling. Haiku 5.5 standaard op medium, wat meer denken kan zijn dan een eenvoudige route nodig heeft. Stel het expliciet in.

Denkblokken blijven bij het account dat ze heeft gemaakt. Als je service opgeslagen gesprekken opnieuw afspeelt via een ander API-account, worden de denkblokken van Haiku 5.5 stilletjes verwijderd en draait de aanvraag zonder die redenatie. Speel elk gesprek opnieuw af via het account dat het heeft geproduceerd.

Prioriteit Niveau wordt niet overgedragen. Haiku 5.5 ondersteunt geen Prioriteit Niveau, dus plan capaciteit afzonderlijk als je erop vertrouwt voor Haiku 4.5.

Gedragswijzigingen die belangrijk zijn voor agents met echte machtigingen

Weigeringen zijn nieuw, en niets vangt ze voor jou. Haiku 5.5 draait veiligheidsclassificaties in vier categorieën: cyber, bio, grens LLM-ontwikkeling, en algemene schade. Een afwijzing komt terug als een normale HTTP 200 met stop_reason: "refusal" en een categorie in stop_details. Haiku 5.5 heeft geen server-side fallback: een lijst van fallback-modellen retourneert een 400, en de standaard fallback-modus laat de aanvraag afgewezen. Controleer stop_reason voordat je content leest, en beslis in je eigen code of je moet herformuleren, escaleren naar een groter model, of stoppen. Volgens de lanceringspost staan de cyberbeveiligingen een breder scala aan defensief werk toe dan die van Sonnet 5.5, maar blokkeren penetratietests.

Gebruikerstekst binnen toolresultaten kan worden genegeerd. Haiku 5.5 is getraind om promptinjectie door toolresultaten te weerstaan. Als je harnas een bericht levert dat de gebruiker tijdens de taak heeft getypt binnen een tool_result blok, kan het model het als onbetrouwbaar beschouwen en negeren. Plaats gebruikersinvoer midden in de beurt in een tekstblok na het laatste toolresultaat, en houd harnasmeldingen in een apart systeembericht.

Bij lage inspanning kunnen agents vroeg stoppen of controles overslaan. Met een lange coderende-agent systeemprompt op low, geeft Haiku 5.5 soms de taak terug voordat deze is voltooid, en op low en medium rapporteert het soms een codewijziging als voltooid zonder een test uit te voeren. Anthropic's Haiku 5.5 promptgids heeft korte instructies voor beide. Voor een agent die bestanden kan schrijven of opdrachten kan uitvoeren, is een onbevestigd "klaar" de gevaarlijkste van de twee.

Een tool forceren slaat denken over. Gedwongen tool_choice wordt nog steeds geaccepteerd, maar het model roept de tool dan aan zonder eerst te denken. Voor tools met bijwerkingen laat auto plus een duidelijke instructie het model redeneren voordat het handelt.

Zoektools hebben de huidige datum nodig. Wanneer Haiku 5.5 een zoektool heeft, geef het de huidige datum in de systeemprompt of de toolbeschrijving. In de tests van Anthropic verankerde dit antwoorden in recente resultaten.

Een gemigreerde aanvraag via AIHubMix

Een Haiku 4.5 classifier die temperature=0 en een voorgevulde { voor JSON gebruikte, herschreven voor Haiku 5.5 op de 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,                     # ruimte voor denken plus de JSON
    output_config={
        "effort": "low",                 # denken is standaard ingeschakeld; houd het licht
        "format": {                      # vervangt de prefill en temperature=0
            "type": "json_schema",
            "schema": {
                "type": "object",
                "properties": {
                    "label": {"type": "string", "enum": ["billing", "bug", "other"]}
                },
                "required": ["label"],
                "additionalProperties": False,
            },
        },
    },
    messages=[{"role": "user", "content": "Ticket: 'Ik ben twee keer in rekening gebracht voor oktober.'"}],
)

if r.stop_reason == "refusal":
    raise RuntimeError(f"afgewezen: {r.stop_details}")
text = next(b.text for b in r.content if b.type == "text")
print(text)

Of een gateway output_config velden en nieuwere bètakoppen onveranderd doorstuurt, is het de moeite waard om te bevestigen bij je eerste testuitvoering. Wanneer de gemigreerde route je evaluaties doorstaat, maakt de AIHubMix modellenlijst het gemakkelijk om dezelfde code naar Sonnet 5.5 te wijzen voor elk taaktype dat blijft falen op Haiku.

Migratie checklist

  1. Verander de model-ID naar claude-haiku-5-5, zonder datumachtervoegsel.
  2. Vervang elk denkbudget door adaptief denken en een expliciet inspanningsniveau.
  3. Verwijder temperatuur, top_p en top_k, inclusief standaardinstellingen die door wrappers zijn toegevoegd.
  4. Vervang assistentvoorafvullingen door gestructureerde output, systeeminstructies of gebruikersbeurten voortzettingen.
  5. Verplaats computergebruik naar de computertoolset en werk de agentloop bij.
  6. Maak gespreksgeschiedenis alleen toevoegen als denkblokken worden afgespeeld.
  7. Lees antwoordinhoud op bloktype, en houd lege denkblokken wanneer je afspeelt.
  8. Verhoog max_tokens op korte antwoordroutes, of verlaag inspanning.
  9. Behandel de weigering stopreden voordat je inhoud leest; configureer geen server-side fallbacks.
  10. Hertel prompttokens op het nieuwe model en her-basis kosten dashboards.
  11. Controleer welke prompts nu 100K tokens overschrijden en trim of splits ze.
  12. Stel weergave in op samengevat als gebruikers redeneersamenvattingen zagen.
  13. Lever gebruikersinvoer midden in de beurt buiten toolresultaten.
  14. Geef zoekgeactiveerde agents de huidige datum.
  15. Controleer opnieuw de limieten en behoeften van Prioriteit Niveau voordat je volume verplaatst.

FAQ

Werken mijn Haiku 4.5 prompts op Haiku 5.5?
Anthropic zegt dat bestaande prompts goed zouden moeten werken zonder wijzigingen. De aanvraagparameters eromheen zijn wat breekt: denkbudgetten, samplinginstellingen, voorafvullingen, en de oude computertool geven allemaal fouten terug.

Waarom faalt mijn classifier nu ik temperatuur 0 heb verwijderd?
Het zou niet moeten falen, maar labels kunnen meer variëren. Gebruik gestructureerde output of een tool met een enum-veld zodat de toegestane labels door schema worden afgedwongen. Dat is betrouwbaarder dan temperatuur 0 ooit was.

Kan ik denken nog steeds uitschakelen?
Ja, bij lage, gemiddelde en hoge inspanning. Bij xhigh en max, geeft het uitschakelen van denken een fout terug. Anthropic raadt een lager inspanningsniveau aan, omdat het model zelf kan overslaan denken bij eenvoudige aanvragen.

Wat moet mijn code doen wanneer Haiku 5.5 weigert?
Controleer de stopreden voordat je de inhoud leest. Haiku 5.5 heeft geen server-side fallback, dus jouw code beslist of je moet herformuleren, de aanvraag naar een groter model moet sturen, of een fout aan de gebruiker moet retourneren.

Waarom is mijn tokenverbruik gestegen na de migratie?
Twee redenen. De nieuwe tokenizer telt ongeveer 30% meer tokens voor dezelfde tekst, en denken is standaard ingeschakeld, wat outputtokens toevoegt. Verlaag de inspanning en hertel je prompts op het nieuwe model.

Moet ik iets veranderen voor prompt caching?
Gewoonlijk niet, en het wordt gemakkelijker: volgens de migratiehandleiding van Anthropic daalt de minimale cachebare prompt van 4.096 naar 512 tokens, en blijven denkblokken van eerdere beurten standaard in het gecachte voorvoegsel. Vermijd het bewerken van eerdere beurten, wat nu denkblokken evenals de cache ongeldig maakt.

Kan een gesprek van Haiku 5.5 naar een groter model gaan?
Ja, het gesprek zelf gaat mee. Of de eerdere denkblokken van Haiku 5.5 ook meegaan, hangt af van het doelformodel, dus controleer de documentatie van Anthropic over bewaarde denkblokken voordat je erop vertrouwt.

Blijf lezen: de Claude Haiku 5.5 serie

Bronnen