Il ragionamento esteso fornisce a Claude capacità di ragionamento migliorate per compiti complessi, con diversi livelli di trasparenza nel suo processo di pensiero passo dopo passo prima di fornire la risposta finale.
Il ragionamento esteso è supportato nei seguenti modelli:
claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-3-7-sonnet-20250219) (deprecato)claude-haiku-4-5-20251001)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)Il comportamento dell'API differisce tra i modelli Claude Sonnet 3.7 e Claude 4, ma le forme dell'API rimangono esattamente le stesse.
Per ulteriori informazioni, consulta Differenze nel ragionamento tra le versioni dei modelli.
Quando il ragionamento esteso è attivato, Claude crea blocchi di contenuto thinking dove produce il suo ragionamento interno. Claude incorpora gli insegnamenti da questo ragionamento prima di formulare una risposta finale.
La risposta dell'API includerà blocchi di contenuto thinking, seguiti da blocchi di contenuto text.
Ecco un esempio del formato di risposta predefinito:
{
"content": [
{
"type": "thinking",
"thinking": "Lasciami analizzare questo passo dopo passo...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "text",
"text": "Basandomi sulla mia analisi..."
}
]
}Per ulteriori informazioni sul formato di risposta del ragionamento esteso, consulta il Riferimento API Messages.
Ecco un esempio di utilizzo del ragionamento esteso nell'API Messages:
Per attivare il ragionamento esteso, aggiungi un oggetto thinking, con il parametro type impostato su enabled e budget_tokens impostato su un budget di token specificato per il ragionamento esteso.
Il parametro budget_tokens determina il numero massimo di token che Claude può utilizzare per il suo processo di ragionamento interno. Nei modelli Claude 4, questo limite si applica ai token di ragionamento completo, e non all'output riassunto. Budget più grandi possono migliorare la qualità della risposta consentendo un'analisi più approfondita per problemi complessi, anche se Claude potrebbe non utilizzare l'intero budget allocato, specialmente negli intervalli superiori a 32k.
budget_tokens deve essere impostato su un valore inferiore a max_tokens. Tuttavia, quando si utilizza il ragionamento intercalato con strumenti, è possibile superare questo limite poiché il limite di token diventa l'intera finestra di contesto (200k token).
Con il ragionamento esteso abilitato, l'API Messages per i modelli Claude 4 restituisce un riassunto del processo di ragionamento completo di Claude. Il ragionamento riassunto fornisce i vantaggi di intelligenza completa del ragionamento esteso, prevenendo al contempo l'uso improprio.
Ecco alcune considerazioni importanti per il ragionamento riassunto:
Claude Sonnet 3.7 continua a restituire l'output di ragionamento completo.
Nei rari casi in cui hai bisogno di accesso all'output di ragionamento completo per i modelli Claude 4, contatta il nostro team di vendita.
Puoi trasmettere risposte di ragionamento esteso utilizzando server-sent events (SSE).
Quando lo streaming è abilitato per il ragionamento esteso, ricevi il contenuto di pensiero tramite eventi thinking_delta.
Per ulteriore documentazione sullo streaming tramite l'API Messages, consulta Streaming Messages.
Ecco come gestire lo streaming con il ragionamento:
Esempio di output dello streaming:
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-5", "stop_reason": null, "stop_sequence": null}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "Lasciami risolvere questo passo dopo passo:\n\n1. Per prima cosa scomponi 27 * 453"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n2. 453 = 400 + 50 + 3"}}
// Delta di pensiero aggiuntivi...
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}
event: content_block_stop
data: {"type": "content_block_stop", "index": 0}
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "text", "text": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "text_delta", "text": "27 * 453 = 12.231"}}
// Delta di testo aggiuntivi...
event: content_block_stop
data: {"type": "content_block_stop", "index": 1}
event: message_delta
data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null}}
event: message_stop
data: {"type": "message_stop"}Quando si utilizza lo streaming con il ragionamento abilitato, potresti notare che il testo a volte arriva in blocchi più grandi alternati con una consegna token per token più piccola. Questo è un comportamento previsto, specialmente per il contenuto di pensiero.
Il sistema di streaming deve elaborare il contenuto in batch per prestazioni ottimali, il che può risultare in questo modello di consegna "frammentaria", con possibili ritardi tra gli eventi di streaming. Stiamo continuamente lavorando per migliorare questa esperienza, con aggiornamenti futuri focalizzati su rendere il contenuto di pensiero più fluido nello streaming.
Il ragionamento esteso può essere utilizzato insieme all'uso di strumenti, consentendo a Claude di ragionare attraverso la selezione degli strumenti e l'elaborazione dei risultati.
Quando si utilizza il ragionamento esteso con l'uso di strumenti, tieni presente le seguenti limitazioni:
Limitazione della scelta dello strumento: L'uso di strumenti con ragionamento supporta solo tool_choice: {"type": "auto"} (il valore predefinito) o tool_choice: {"type": "none"}. L'utilizzo di tool_choice: {"type": "any"} o tool_choice: {"type": "tool", "name": "..."} risulterà in un errore perché queste opzioni forzano l'uso dello strumento, che è incompatibile con il ragionamento esteso.
Preservazione dei blocchi di ragionamento: Durante l'uso dello strumento, devi passare i blocchi thinking all'API per l'ultimo messaggio dell'assistente. Includi il blocco completo e non modificato all'API per mantenere la continuità del ragionamento.
Non puoi attivare/disattivare il ragionamento nel mezzo di un turno dell'assistente, incluso durante i cicli di uso dello strumento. L'intero turno dell'assistente deve operare in una singola modalità di ragionamento:
Dal punto di vista del modello, i cicli di uso dello strumento fanno parte del turno dell'assistente. Un turno dell'assistente non si completa finché Claude non termina la sua risposta completa, che può includere più chiamate di strumenti e risultati.
Ad esempio, questa sequenza fa parte di un singolo turno dell'assistente:
Utente: "Qual è il meteo a Parigi?"
Assistente: [ragionamento] + [tool_use: get_weather]
Utente: [tool_result: "20°C, soleggiato"]
Assistente: [testo: "Il meteo a Parigi è 20°C e soleggiato"]Anche se ci sono più messaggi API, il ciclo di uso dello strumento è concettualmente parte di una risposta dell'assistente continua.
Potresti incontrare questo errore:
Expected `thinking` or `redacted_thinking`, but found `tool_use`.
When `thinking` is enabled, a final `assistant` message must start
with a thinking block (preceding the lastmost set of `tool_use` and
`tool_result` blocks).Questo si verifica in genere quando:
✗ Non valido: Attivazione/disattivazione del ragionamento immediatamente dopo l'uso dello strumento
Utente: "Qual è il meteo?"
Assistente: [tool_use] (ragionamento disabilitato)
Utente: [tool_result]
// Non puoi abilitare il ragionamento qui - ancora nello stesso turno dell'assistente✓ Valido: Completa il turno dell'assistente per primo
Utente: "Qual è il meteo?"
Assistente: [tool_use] (ragionamento disabilitato)
Utente: [tool_result]
Assistente: [testo: "È soleggiato"]
Utente: "E domani?" (ragionamento disabilitato)
Assistente: [ragionamento] + [testo: "..."] (ragionamento abilitato - nuovo turno)Migliore pratica: Pianifica la tua strategia di ragionamento all'inizio di ogni turno piuttosto che cercare di attivare/disattivare a metà turno.
L'attivazione/disattivazione delle modalità di ragionamento invalida anche la memorizzazione nella cache dei prompt per la cronologia dei messaggi. Per ulteriori dettagli, consulta la sezione Ragionamento esteso con memorizzazione nella cache dei prompt.
Durante l'uso dello strumento, devi passare i blocchi thinking all'API, e devi includere il blocco completo e non modificato all'API. Questo è critico per mantenere il flusso di ragionamento del modello e l'integrità della conversazione.
Anche se puoi omettere i blocchi thinking dai turni precedenti del ruolo assistant, suggeriamo di passare sempre tutti i blocchi di ragionamento all'API per qualsiasi conversazione multi-turno. L'API:
Quando attivi/disattivi le modalità di ragionamento durante una conversazione, ricorda che l'intero turno dell'assistente (inclusi i cicli di uso dello strumento) deve operare in una singola modalità di ragionamento. Per ulteriori dettagli, consulta Attivazione/disattivazione delle modalità di ragionamento nelle conversazioni.
Quando Claude invoca strumenti, sta mettendo in pausa la costruzione di una risposta per attendere informazioni esterne. Quando i risultati dello strumento vengono restituiti, Claude continuerà a costruire quella risposta esistente. Questo rende necessaria la preservazione dei blocchi di ragionamento durante l'uso dello strumento, per un paio di motivi:
Continuità del ragionamento: I blocchi di ragionamento catturano il ragionamento passo dopo passo di Claude che ha portato alle richieste di strumenti. Quando pubblichi i risultati dello strumento, includere il ragionamento originale assicura che Claude possa continuare il suo ragionamento da dove l'ha lasciato.
Manutenzione del contesto: Mentre i risultati dello strumento appaiono come messaggi dell'utente nella struttura dell'API, fanno parte di un flusso di ragionamento continuo. Preservare i blocchi di ragionamento mantiene questo flusso concettuale attraverso più chiamate API. Per ulteriori informazioni sulla gestione del contesto, consulta la nostra guida sulle finestre di contesto.
Importante: Quando fornisci blocchi thinking, l'intera sequenza di blocchi thinking consecutivi deve corrispondere agli output generati dal modello durante la richiesta originale; non puoi riordinare o modificare la sequenza di questi blocchi.
Il pensiero esteso con uso di strumenti nei modelli Claude 4 supporta il pensiero intercalato, che consente a Claude di pensare tra le chiamate di strumenti e fare ragionamenti più sofisticati dopo aver ricevuto i risultati degli strumenti.
Con il pensiero intercalato, Claude può:
Per abilitare il pensiero intercalato, aggiungi l'intestazione beta interleaved-thinking-2025-05-14 alla tua richiesta API.
Ecco alcune considerazioni importanti per il pensiero intercalato:
budget_tokens può superare il parametro max_tokens, poiché rappresenta il budget totale su tutti i blocchi di pensiero all'interno di un turno dell'assistente.interleaved-thinking-2025-05-14.interleaved-thinking-2025-05-14 nelle richieste a qualsiasi modello, senza alcun effetto.interleaved-thinking-2025-05-14 a qualsiasi modello diverso da Claude Opus 4.5, Claude Opus 4.1, Opus 4 o Sonnet 4, la tua richiesta avrà esito negativo.Il caching dei prompt con il pensiero ha diverse considerazioni importanti:
I compiti di pensiero esteso spesso richiedono più di 5 minuti per essere completati. Considera l'utilizzo della durata della cache di 1 ora per mantenere i cache hit su sessioni di pensiero più lunghe e flussi di lavoro multi-step.
Rimozione del contesto del blocco di pensiero
Modelli di invalidazione della cache
Sebbene i blocchi di pensiero vengano rimossi per il caching e i calcoli del contesto, devono essere preservati quando si continuano conversazioni con uso di strumenti, specialmente con pensiero intercalato.
Quando si utilizza il pensiero esteso con uso di strumenti, i blocchi di pensiero mostrano un comportamento di caching specifico che influisce sul conteggio dei token:
Come funziona:
Flusso di esempio dettagliato:
Richiesta 1:
User: "What's the weather in Paris?"Risposta 1:
[thinking_block_1] + [tool_use block 1]Richiesta 2:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True]Risposta 2:
[thinking_block_2] + [text block 2]La richiesta 2 scrive una cache del contenuto della richiesta (non della risposta). La cache include il messaggio utente originale, il primo blocco di pensiero, il blocco di uso dello strumento e il risultato dello strumento.
Richiesta 3:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [thinking_block_2] + [text block 2],
User: [Text response, cache=True]Per Claude Opus 4.5 e versioni successive, tutti i blocchi di pensiero precedenti vengono mantenuti per impostazione predefinita. Per i modelli più vecchi, poiché è stato incluso un blocco utente non relativo al risultato dello strumento, tutti i blocchi di pensiero precedenti vengono ignorati. Questa richiesta verrà elaborata come:
User: ["What's the weather in Paris?"],
Assistant: [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [text block 2],
User: [Text response, cache=True]Punti chiave:
cache_control esplicitiNei modelli Claude più vecchi (precedenti a Claude Sonnet 3.7), se la somma dei token del prompt e di max_tokens superava la finestra di contesto del modello, il sistema regolava automaticamente max_tokens per adattarsi al limite di contesto. Ciò significava che potevi impostare un valore max_tokens grande e il sistema lo avrebbe silenziosamente ridotto secondo le necessità.
Con i modelli Claude 3.7 e 4, max_tokens (che include il tuo budget di pensiero quando il pensiero è abilitato) viene applicato come limite rigoroso. Il sistema ora restituirà un errore di convalida se i token del prompt + max_tokens superano la dimensione della finestra di contesto.
Puoi leggere la nostra guida sulle finestre di contesto per un approfondimento più completo.
Quando si calcola l'utilizzo della finestra di contesto con il pensiero abilitato, ci sono alcune considerazioni di cui essere consapevoli:
max_tokens per quel turnoIl diagramma sottostante dimostra la gestione specializzata dei token quando il pensiero esteso è abilitato:
La finestra di contesto effettiva viene calcolata come:
context window =
(current input tokens - previous thinking tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Consigliamo di utilizzare l'API di conteggio dei token per ottenere conteggi accurati dei token per il tuo caso d'uso specifico, specialmente quando si lavora con conversazioni multi-turno che includono il pensiero.
Quando si utilizza il pensiero esteso con uso di strumenti, i blocchi di pensiero devono essere esplicitamente preservati e restituiti con i risultati degli strumenti.
Il calcolo della finestra di contesto effettiva per il pensiero esteso con uso di strumenti diventa:
context window =
(current input tokens + previous thinking tokens + tool use tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Il diagramma sottostante illustra la gestione dei token per il pensiero esteso con uso di strumenti:
Data la finestra di contesto e il comportamento di max_tokens con il pensiero esteso nei modelli Claude 3.7 e 4, potrebbe essere necessario:
max_tokens al variare della lunghezza del promptQuesto cambiamento è stato apportato per fornire un comportamento più prevedibile e trasparente, specialmente poiché i limiti massimi di token sono aumentati significativamente.
Il contenuto completo del pensiero è crittografato e restituito nel campo signature. Questo campo viene utilizzato per verificare che i blocchi di pensiero siano stati generati da Claude quando passati di nuovo all'API.
È strettamente necessario inviare di nuovo i blocchi di pensiero solo quando si utilizzano strumenti con pensiero esteso. Altrimenti puoi omettere i blocchi di pensiero dai turni precedenti, o lasciare che l'API li rimuova per te se li passi di nuovo.
Se invii di nuovo i blocchi di pensiero, consigliamo di passare tutto di nuovo come lo hai ricevuto per coerenza e per evitare potenziali problemi.
Ecco alcune considerazioni importanti sulla crittografia del pensiero:
signature_delta all'interno di un evento content_block_delta poco prima dell'evento content_block_stop.signature sono significativamente più lunghi nei modelli Claude 4 rispetto ai modelli precedenti.signature è un campo opaco e non deve essere interpretato o analizzato - esiste esclusivamente per scopi di verifica.signature sono compatibili tra le piattaforme (API Claude, Amazon Bedrock e Vertex AI). I valori generati su una piattaforma saranno compatibili con un'altra.Occasionalmente il ragionamento interno di Claude verrà contrassegnato dai nostri sistemi di sicurezza. Quando ciò accade, crittografiamo parte o tutto il blocco thinking e lo restituiamo come blocco redacted_thinking. I blocchi redacted_thinking vengono decriptati quando passati di nuovo all'API, permettendo a Claude di continuare la sua risposta senza perdere il contesto.
Quando si costruiscono applicazioni rivolte ai clienti che utilizzano il pensiero esteso:
Ecco un esempio che mostra sia i blocchi di pensiero normali che quelli redatti:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "redacted_thinking",
"data": "EmwKAhgBEgy3va3pzix/LafPsn4aDFIT2Xlxh0L5L8rLVyIwxtE3rAFBa8cr3qpPkNRj2YfWXGmKDxH4mPnZ5sQ7vB9URj2pLmN3kF8/dW5hR7xJ0aP1oLs9yTcMnKVf2wRpEGjH9XZaBt4UvDcPrQ..."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Vedere blocchi di pensiero redatto nell'output è un comportamento previsto. Il modello può comunque utilizzare questo ragionamento redatto per informare le sue risposte mantenendo i guardrail di sicurezza.
Se hai bisogno di testare la gestione del pensiero redatto nella tua applicazione, puoi utilizzare questa stringa di test speciale come prompt: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB
Quando si passano i blocchi thinking e redacted_thinking di nuovo all'API in una conversazione multi-turno, è necessario includere il blocco completo e non modificato di nuovo all'API per l'ultimo turno dell'assistente. Questo è critico per mantenere il flusso di ragionamento del modello. Suggeriamo di passare sempre tutti i blocchi di pensiero all'API. Per ulteriori dettagli, consulta la sezione Preservazione dei blocchi di pensiero sopra.
L'API Messages gestisce il pensiero diversamente tra i modelli Claude Sonnet 3.7 e Claude 4, principalmente nel comportamento di redazione e riassunto.
Consulta la tabella seguente per un confronto condensato:
| Funzione | Claude Sonnet 3.7 | Modelli Claude 4 (pre-Opus 4.5) | Claude Opus 4.5 e successivi |
|---|---|---|---|
| Output del pensiero | Restituisce l'output completo del pensiero | Restituisce il pensiero riassunto | Restituisce il pensiero riassunto |
| Pensiero intercalato | Non supportato | Supportato con intestazione beta interleaved-thinking-2025-05-14 | Supportato con intestazione beta interleaved-thinking-2025-05-14 |
| Preservazione del blocco di pensiero | Non preservato tra i turni | Non preservato tra i turni | Preservato per impostazione predefinita (abilita l'ottimizzazione della cache, risparmio di token) |
Claude Opus 4.5 introduce un nuovo comportamento predefinito: i blocchi di pensiero dai turni dell'assistente precedenti vengono preservati nel contesto del modello per impostazione predefinita. Questo differisce dai modelli precedenti, che rimuovono i blocchi di pensiero dai turni precedenti.
Vantaggi della preservazione del blocco di pensiero:
Considerazioni importanti:
Per i modelli precedenti (Claude Sonnet 4.5, Opus 4.1, ecc.), i blocchi di pensiero dai turni precedenti continuano a essere rimossi dal contesto. Il comportamento esistente descritto nella sezione Pensiero esteso con caching del prompt si applica a quei modelli.
Per informazioni complete sui prezzi inclusi i tassi base, le scritture della cache, i hit della cache e i token di output, consulta la pagina dei prezzi.
Il processo di pensiero comporta addebiti per:
Quando il pensiero esteso è abilitato, un prompt di sistema specializzato viene automaticamente incluso per supportare questa funzione.
Quando si utilizza il pensiero riassunto:
Il conteggio dei token di output fatturati non corrisponderà al conteggio dei token visibili nella risposta. Sei fatturato per l'intero processo di pensiero, non per il riassunto che vedi.
max_tokens è maggiore di 21.333. Durante lo streaming, sii preparato a gestire sia i blocchi di contenuto di pensiero che di testo mentre arrivano.temperature o top_k così come con l'uso forzato di strumenti.top_p su valori tra 1 e 0,95.curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-sonnet-4-5",
"max_tokens": 16000,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [
{
"role": "user",
"content": "Esiste un numero infinito di numeri primi tali che n mod 4 == 3?"
}
]
}'curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-sonnet-4-5",
"max_tokens": 16000,
"stream": true,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [
{
"role": "user",
"content": "Quanto fa 27 * 453?"
}
]
}'Esplora esempi pratici di pensiero nel nostro cookbook.