Claude Sonnet 5: la guida sul campo
Il 30 giugno 2026 Anthropic ha rilasciato Claude Sonnet 5 (claude-sonnet-5) e, silenziosamente, lo ha reso il modello di default in Claude Code. Sulla carta è un drop-in per Sonnet 4.6 allo stesso prezzo di listino. In pratica, tre vincoli API faranno restituire 400 Bad Request alle migrazioni ingenue, un nuovo tokenizer produce circa il 30% di token in più per lo stesso testo (il che cambia sia il tuo budget di contesto sia il conto per richiesta), e la scala di effort è cambiata abbastanza da far sì che "tieni tutto uguale" non sia più la stessa cosa. Se stavi su Sonnet 4.6 a high, far girare Sonnet 5 a high è più vicino a Sonnet 4.6 a max.
Questa pagina è la guida pratica sul campo: cosa è cambiato, cosa si rompe, la checklist di migrazione esatta, la matematica del pricing sullo shift del tokenizer e i pattern di prompting che la maggior parte dei team ricalibra per primi.
- Capire cosa sia davvero Sonnet 5 — 1M di contesto di default, adaptive thinking attivo di default, primo Sonnet con safeguard di cybersecurity in tempo reale
- Conoscere i tre vincoli API che faranno restituire 400 al tuo codice esistente e la fix in una riga per ciascuno
- Modellare la matematica del pricing con il nuovo tokenizer: stesso $/token ma ~30% di token in più = conto per richiesta diverso
- Ricalibrare i livelli di effort: Sonnet 5 medium ≈ Sonnet 4.6 high, e Sonnet 5 high ≈ Sonnet 4.6 max
- Adeguare i pattern di prompting che cambiano di più: verbosity, triggering degli strumenti, recall nella code review e default di design
La versione in un paragrafo
Sonnet 5 è il tier Sonnet bilanciato "parti da qui", posizionato sopra Sonnet 4.6 allo stesso prezzo di listino e ora il default di Claude Code. Supporta di default la finestra di contesto da 1M token (non c'è una variante con contesto più piccolo), 128k di output massimo e adaptive thinking attivo di default. Tre contratti API si rompono nella migrazione: l'extended thinking manuale (thinking: {type: "enabled", budget_tokens: N}) è rimosso e restituisce 400, i parametri di sampling non-default (temperature, top_p, top_k) restituiscono 400, e il tokenizer è cambiato — lo stesso testo di input produce circa il 30% di token in più rispetto a Sonnet 4.6. Il Priority Tier non è disponibile su Sonnet 5. Questa è tutta la forma del rilascio.
Perché "drop-in" ha bisogno di un asterisco
I documenti ufficiali Anthropic descrivono Sonnet 5 come un "drop-in replacement per Claude Sonnet 4.6" — e per il contenuto dei prompt è vero. Ma la superficie API è cambiata abbastanza che "cambia la stringa del modello e spedisci" produrrà errori su richieste che ieri funzionavano bene. Ci sono quattro cose che ti morderanno, in ordine di quanto spesso vediamo rompersi le integrazioni:
temperature,top_potop_kimpostati su valori non-default ora restituiscono400. Non ignorati silenziosamente. Non clippati. Un errore hard. Questo è nuovo per i modelli classe Sonnet; Opus 4.7 ha introdotto lo stesso vincolo. Se il tuo wrapper SDK invia sempretemperature: 0.7, ora fallirà sempre.- L'extended thinking manuale è rimosso.
thinking: {type: "enabled", budget_tokens: N}era deprecato su 4.6 e restituisce400su Sonnet 5. Usa adaptive thinking con il parametro effort al suo posto. - L'adaptive thinking è attivo di default. Le richieste senza un campo
thinkingsu Sonnet 4.6 giravano senza thinking; su Sonnet 5 girano con adaptive thinking.max_tokensè un cap hard sull'output totale — thinking più testo di risposta — quindi un limite dimensionato per "solo la risposta" su Sonnet 4.6 può troncare la risposta su Sonnet 5. - Il nuovo tokenizer produce circa il 30% di token in più per lo stesso testo. Non è un cambio API — le shape di richiesta e risposta sono identiche — ma tutto ciò che misuri o budgeti in token ora misura di più.
I vincoli API che ti restituiranno 400
- Rimuovi qualsiasi temperature, top_p o top_k che non sia il default API. Se la tua app ha bisogno di varietà stilistica, usa istruzioni nel system prompt al posto di temperature (ora è l'unica leva). Se ti servono output di design diversi, chiedi al modello di proporre N direzioni distinte e sceglierne una — questo ti dà varietà tra run anche con sampling fisso.
- Cancella qualsiasi thinking: {type: "enabled", budget_tokens: N} nel tuo request builder. Imposta invece effort (low / medium / high / xhigh / max) e lascia che l'adaptive thinking decida quando pensare. Se stavi calcolando dinamicamente un budget di thinking per richiesta, sostituisci quella logica con un selettore di effort — Anthropic sconsiglia esplicitamente di tentare di riprodurre il vecchio comportamento.
- Su Sonnet 4.6, un campo thinking omesso significava niente thinking. Su Sonnet 5, significa adaptive thinking. Poiché max_tokens è un cap hard sull'output totale (blocchi di thinking + testo di risposta), puoi finire con una risposta prevalentemente di thinking e una risposta troncata con stop_reason: "max_tokens". Alza max_tokens, abbassa effort a medium, oppure passa thinking: {type: "disabled"} se davvero non vuoi thinking.
- Questo è ereditato da Sonnet 4.6, non è nuovo — ma molti team che migrano da Sonnet 4.5 o precedenti lo incontrano per la prima volta quando toccano questa superficie. Usa structured output, istruzioni di system prompt o output_config.format invece. Il prefilling restituisce un errore 400.
Migrazione minima sicura — un diff
# Before (Sonnet 4.6) — worked
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
temperature=0.7, # 400 on Sonnet 5
thinking={"type": "enabled",
"budget_tokens": 8000}, # 400 on Sonnet 5
messages=[...],
)
# After (Sonnet 5) — one-liner replacements
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=8192, # raise: thinking now shares the budget
# temperature removed — use system prompt instead
# thinking removed — adaptive is on by default
extra_body={"effort": "high"}, # was implicit in budget_tokens
messages=[...],
)Lo shift del tokenizer è una storia di pricing, non una storia di API
Il nuovo tokenizer è il cambiamento che con più probabilità sorprenderà il tuo team finance. Le richieste e le risposte appaiono identiche sul filo, ma lo stesso testo di input produce circa il 30% di token in più rispetto a Sonnet 4.6. Il moltiplicatore esatto dipende dal contenuto — codice, prosa inglese, testo non-inglese e dati strutturati shiftano tutti diversamente — ma 30% è il numero che Anthropic cita.
Tre cose che questo cambia contemporaneamente:
- Costo per richiesta. Il pricing per token è invariato rispetto a Sonnet 4.6 a $3 / $15 per MTok standard (e $2 / $10 fino al 31 agosto 2026). Ma se lo stesso testo produce il 30% di token in più, lo stesso testo costa circa il 30% in più una volta che scatta la tariffa standard.
- Capacità di contesto in termini di testo. La finestra di contesto è ancora 1M di token, ma ogni token ora copre in media meno testo. Lo stesso documento occupa ~30% in più della tua finestra.
- Rischio di troncamento su
max_tokens. Un cap di output tarato per "circa questa quantità di testo" su Sonnet 4.6 può troncare silenziosamente l'output equivalente su Sonnet 5. Rivedi qualsiasi limite dimensionato vicino alla lunghezza di output attesa.
La matematica del pricing, esposta onestamente:
| Periodo | Prezzo di listino | Stesso testo → costo vs Sonnet 4.6 |
|---|---|---|
| Ora → 31 ago 2026 (introduttivo) | $2 in / $10 out | Circa 13% più economico (30% di token in più × $2 vs. Sonnet 4.6 a $3) |
| Dal 1 set 2026 (standard) | $3 in / $15 out | Circa 30% più costoso per testo equivalente |
Se stai prezzando un'app sui token introduttivi e non hai modellato il flip del 1 settembre, te ne accorgerai.
Riconta i tuoi prompt con il nuovo tokenizer
# Recount before you migrate — don't trust old numbers
count = client.messages.count_tokens(
model="claude-sonnet-5", # count under the NEW tokenizer
messages=[{"role": "user", "content": your_prompt}],
system=your_system,
)
print(count.input_tokens) # roughly 30% higher than on claude-sonnet-4-6La scala di effort è cambiata — ricalibra prima di confrontare
Il parametro effort (low / medium / high / xhigh / max) ha ancora gli stessi cinque valori, ma Anthropic fornisce una mappatura esplicita cross-modello per la migrazione che la maggior parte dei team salta alla prima lettura:
- Sonnet 5 a
medium≈ Sonnet 4.6 ahigh. - Sonnet 5 a
high≈ Sonnet 4.6 amax. xhighè raccomandato per i task di coding e agentici più difficili.maxrimuove del tutto i vincoli di spesa di token.
Due implicazioni:
- Se stavi facendo girare Sonnet 4.6 a
highe cambi il modello senza cambiare effort, ora stai girando con più thinking, più token e probabilmente output migliori — ma un conto più salato. Considera di scendere amedium. - Se stavi facendo girare Sonnet 4.6 a
maxe passi a Sonnet 5 amax, potresti pagare per un headroom che non ti serve. Prova primaxhigh.
Anthropic avverte anche che Sonnet 5 rispetta l'effort rigorosamente, specialmente nel range basso. low e medium limitano il lavoro a ciò che è stato chiesto; non "vanno oltre". Questo è positivo per latenza e costi, ma su task moderatamente complessi a low c'è un rischio reale di sotto-pensiero. La fix raccomandata è alzare l'effort piuttosto che aggirare con il prompt.
Sonnet 5 è ora il default di Claude Code — cosa cambia
A partire da Claude Code v2.1.197 (30 giugno 2026), claude-sonnet-5 è il modello di default. Se non imposti nulla, le tue sessioni girano su Sonnet 5. Conseguenze pratiche:
- Ottieni 1M di contesto, ma le tue impostazioni
max_tokensed effort sono ereditate. I default di Claude Code sono tarati per il nuovo modello; le configurazioni CLAUDE.md custom che pinnavanomax_tokenso impostavano un override di effort dovrebbero essere riverificate. - Comportamento di default più veloce e più agentico. Sonnet 5 è più agentico di Sonnet 4.6 out of the box — allunga la mano verso i tool e fa loop di self-verification più prontamente. Se eri abituato a un Claude Code conservativo nell'eseguire comandi, aspettati più iniziativa.
- Aggiornamenti di progresso user-facing regolari. Sonnet 5 fornisce già update intermedi di qualità più alta su tracce lunghe. Scaffolding di prompt come "dopo ogni 3 tool call, riassumi il progresso" di solito può essere rimosso.
- Sonnet 4.6 è ora un modello legacy. Ancora disponibile (pin
claude-sonnet-4-6se hai una ragione), ma non è più l'on-ramp.
I quattro pattern di prompting che la maggior parte dei team ricalibra
1. La verbosity si calibra sulla complessità del task
Sonnet 5 sceglie la lunghezza della risposta in base alla complessità del task piuttosto che basarsi su una verbosity fissa di default. Le lookup semplici ottengono risposte più brevi; l'analisi aperta ne ottiene di più lunghe. Se il tuo prodotto vuole uno stile consistente, taratura del prompt — lo snippet ufficiale Anthropic funziona:
Doma la verbosity quando ti serve una voce fissa
Provide concise, focused responses. Skip non-essential context, and keep examples minimal.
Gli esempi positivi ("ecco come dirlo in modo conciso") funzionano meglio di quelli negativi ("non spiegare troppo").
2. Il triggering dei tool è più agentico — e può essere calibrato
Sonnet 5 allunga la mano verso i tool più prontamente di 4.6. Due leve:
- Effort.
highoxhighmostrano un uso dei tool sostanzialmente maggiore nei workload di ricerca agentica e coding.lowemediumlimitano il lavoro strettamente. - Thinking off. Con
thinking: {type: "disabled"}, il modello è meno incline ad allungare la mano verso i tool. Se disabiliti il thinking ma dipendi ancora dalle tool call, aggiungi un nudge esplicito nel system prompt.
3. Gli harness di code review possono vedere calare la recall — è il modello che diventa più letterale
Se il tuo prompt di review dice "riporta solo gli issue di alta gravità" o "non fare le pulci", Sonnet 5 può seguirlo fedelmente — investigando altrettanto a fondo, trovando gli stessi bug, e poi non riportando le finding che giudica sotto la soglia dichiarata. La precisione tipicamente sale, la recall può sembrare calare. La fix raccomandata da Anthropic separa la fase di finding dalla fase di ranking:
Prompt di code review orientato alla recall per Sonnet 5
Report every issue you find, including ones you are uncertain about or consider low-severity. Do not filter for importance or confidence at this stage - a separate verification step will do that. Your goal here is coverage: it is better to surface a finding that later gets filtered out than to silently drop a real bug. For each finding, include your confidence level and an estimated severity so a downstream filter can rank them.
Non devi effettivamente costruire il secondo step perché il prompt aiuti — spostare il filtro di confidence fuori dallo step di finding è ciò che cambia il comportamento.
4. I default di design si assestano su una "house style" — sovrascrivila esplicitamente
Su brief frontend e di design aperti, Sonnet 5 tende verso uno stile visivo di default consistente. Legge bene per alcuni prodotti, sbagliato per dashboard, dev tool, fintech, healthcare o app enterprise. Il pushback generico ("rendilo meno generico") tende a spostare il modello verso uno diverso stile fisso piuttosto che produrre varietà. Due pattern che funzionano:
- Specifica un'alternativa concreta — codici hex, nomi di typeface, regole di layout. Sonnet 5 segue le spec esplicite con precisione.
- Chiedi al modello di proporre N opzioni prima di costruire. Poiché
temperaturenon-default restituisce 400, questo è ora il modo raccomandato per produrre direzioni di design significativamente diverse tra run.
Forza la varietà di design senza temperature
Before building, propose 4 distinct visual directions tailored to this brief (each as: bg hex / accent hex / typeface, plus a one-line rationale). Ask the user to pick one, then implement only that direction.
Safeguard di cybersecurity: rifiuti come HTTP 200
Sonnet 5 è il primo modello tier Sonnet con safeguard di cybersecurity in tempo reale. Quando una richiesta viene declinata, ritorna come HTTP 200 di successo con stop_reason: "refusal" — non un errore. Se non hai costruito un branch di gestione dei rifiuti, la tua app tratterà la risposta vuota come una risposta vuota di successo e la spedirà silenziosamente all'utente.
La fix è un branch sulla risposta:
Gestisci i rifiuti in modo pulito
resp = client.messages.create(model="claude-sonnet-5", messages=[...]) if resp.stop_reason == "refusal": # Show a graceful message. Optionally retry on a fallback model # (Opus 4.8 is a common choice). You are NOT billed for a refusal # returned before any output was generated. return handle_refusal(resp) # Otherwise process resp.content as normal
Questa è la stessa forma dei rifiuti in-band di Fable 5 — se già li gestisci, sei coperto. Se sei nuovo a questo, vedi la guida sul campo di Fable 5 per il pattern più completo che include il parametro fallbacks.
Il Priority Tier non è disponibile — pianifica di conseguenza
Ogni altro modello Anthropic attuale supporta il Priority Tier per capacità riservata e latenza prevedibile. Sonnet 5 no. Se hai un workload enterprise che dipende oggi da un commitment di Priority Tier, le tue opzioni sono:
- Tieni il workload su Sonnet 4.6 (ancora supportato, ancora su Priority Tier).
- Migra il workload su Opus 4.8, che è su Priority Tier ed è il modello con cui Sonnet 5 viene confrontato per i task duri comunque.
- Passa al tier standard su Sonnet 5 e accetta capacità non riservata.
Non c'è un workaround via beta header. Se il Priority Tier è load-bearing per te, questo è il primo bloccante di migrazione da pianificare.
Sonnet 5 vs Sonnet 4.6 vs Opus 4.8 — la scelta
| Scelta | Sceglilo quando |
|---|---|
| Sonnet 5 | Default per qualsiasi cosa nuova. Coding, task agentici, 1M di contesto e sensibilità al prezzo puntano tutti qui. |
| Sonnet 4.6 | Ti serve il Priority Tier, hai prompt che dipendono da parametri di sampling non-default che non puoi ancora riscrivere, o sei in mezzo a un eval e vuoi una baseline stabile. |
| Opus 4.8 | Profondità di reasoning o stabilità in run lunghi che Sonnet 5 non raggiunge, o ti serve il Priority Tier al top di gamma. Abbina con un override di effort — xhigh su Opus 4.8 è uno sweet spot comune. |
| Fable 5 / Mythos 5 | Hai validato che Opus 4.8 non basta e sei disposto a pagare 5× il pricing di output di Sonnet 5 per run autonomi multi-giorno. Vedi la guida sul campo di Fable 5. |
Checklist di migrazione
- Usa l'API di token counting con model="claude-sonnet-5" per ogni prompt in cui la lunghezza conta. Ovunque tu confronti contro un budget fisso di 1M token, assumi ~30% di uso in più. Ovunque max_tokens sia stretto, alzalo.
- Fai grep nella tua codebase per temperature, top_p, top_k. Qualsiasi valore non-default ora restituisce 400 su Sonnet 5. Cancella o imposta al default.
- Fai grep per thinking={"type": "enabled" e cancella. Aggiungi un selettore di effort (parti da high). Se non vuoi thinking del tutto, passa esplicitamente thinking: {type: "disabled"}.
- I safeguard di cybersecurity sono nuovi sul tier Sonnet. I rifiuti sono HTTP 200, non errori — se non fai il branch, spedisci silenziosamente risposte vuote.
- Se qualche workload dipende dal Priority Tier, tienilo su Sonnet 4.6 o migra su Opus 4.8 — Sonnet 5 non offre Priority Tier.
- Il pricing introduttivo rimane fino al 31 agosto 2026. Dal 1 settembre, lo stesso testo costa circa il 30% in più dello stesso testo su Sonnet 4.6. Se stai prezzando un'app sui token, mettitelo in calendario.
Verifica rapida
Check yourself
0/5Fonti e letture aggiuntive
- What's new in Claude Sonnet 5 — documentazione ufficiale
- Prompting Claude Sonnet 5 — documentazione ufficiale
- Guida di migrazione — Sonnet 4.6 → Sonnet 5
- Release notes della piattaforma Claude — vedi la voce del 30 giugno 2026
- Riferimento del parametro effort
- Riferimento dell'adaptive thinking
- API di token counting — usa
model="claude-sonnet-5"per misurare con il nuovo tokenizer - Changelog di Claude Code — v2.1.197 ha reso Sonnet 5 il default
- Correlati su AILmanac: Claude Fable 5 & Mythos 5: la guida sul campo del flagship, Scegliere un modello, Thinking & Effort, Modelli e prezzi attuali