Questa funzionalità è idonea per la Zero Data Retention (ZDR). Quando la tua organizzazione dispone di un accordo ZDR, i dati inviati tramite questa funzionalità non vengono conservati dopo che la risposta dell'API è stata restituita.
Il "extended thinking" (pensiero esteso) fornisce a Claude capacità di ragionamento avanzate per compiti complessi, offrendo al contempo diversi livelli di trasparenza nel suo processo di pensiero passo dopo passo prima di fornire la risposta finale.
Il pensiero esteso è disponibile su tutti i modelli Claude attuali. Il modo in cui lo abiliti dipende dal modello:
| Modello | Pensiero esteso manuale (budget_tokens) | Consigliato |
|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Non supportato (errore 400) | Pensiero adattivo, sempre attivo; usa effort per controllare la profondità |
| Claude Mythos Preview | Supportato | Pensiero adattivo, attivo per impostazione predefinita |
| Claude Opus 4.8 | Non supportato (errore 400) | Pensiero adattivo con effort |
| Claude Opus 4.7 | Non supportato (errore 400) | Pensiero adattivo con effort |
| Claude Sonnet 5 | Non supportato (errore 400) | Pensiero adattivo con effort |
| Claude Opus 4.6 | Deprecato | Pensiero adattivo con effort |
| Claude Sonnet 4.6 | Deprecato | Pensiero adattivo con effort |
| Claude Opus 4.5 | Supportato | N/D |
| Claude Haiku 4.5 | Supportato | N/D |
| Modelli Claude 4 precedenti | Supportato | N/D |
Con il pensiero adattivo, il modello decide quando e quanto pensare per ogni richiesta. Su Claude Mythos Preview, Claude Fable 5 e Claude Mythos 5, thinking: {type: "disabled"} non è supportato. Per le differenze di comportamento per modello (output del pensiero, pensiero intercalato e conservazione dei blocchi), consulta Differenze nel pensiero tra le versioni dei modelli.
Quando il pensiero esteso è attivato, Claude crea blocchi di contenuto thinking in cui produce il suo ragionamento interno. Claude incorpora le intuizioni derivanti da questo ragionamento prima di elaborare una risposta finale.
La risposta dell'API include blocchi di contenuto thinking, seguiti da blocchi di contenuto text.
Ecco un esempio del formato di risposta predefinito:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Per ulteriori informazioni sul formato di risposta del pensiero esteso, consulta il Riferimento dell'API Messages.
Ecco un esempio di utilizzo del pensiero esteso nell'API Messages:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
}
],
)
# La risposta contiene blocchi di pensiero riassunti e blocchi di testo
for block in response.content:
match block.type:
case "thinking":
print(f"\nThinking summary: {block.thinking}")
case "text":
print(f"\nResponse: {block.text}")Per attivare il pensiero esteso, aggiungi un oggetto thinking con type impostato su enabled e un valore budget_tokens. Sui modelli in cui il pensiero esteso manuale è deprecato o non supportato (consulta Modelli supportati), usa invece type: "adaptive" come descritto in Pensiero adattivo.
Il parametro budget_tokens imposta il numero massimo di token che Claude può utilizzare per il suo processo di ragionamento interno. Questo limite si applica ai token di pensiero completi, non all'output riassunto. Budget più ampi 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 per intervalli superiori a 32k.
budget_tokens è deprecato su Claude Opus 4.6 e Claude Sonnet 4.6 e sarà rimosso in una futura versione del modello. Usa invece il pensiero adattivo con il parametro effort per controllare la profondità del pensiero.
Claude Mythos Preview, Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6 e Claude Sonnet 4.6 supportano fino a 128k token di output. Claude Haiku 4.5 supporta fino a 64k. Consulta la panoramica dei modelli per i limiti sui modelli legacy. Sull'API Message Batches, l'header beta output-300k-2026-03-24 aumenta il limite di output a 300k per Claude Opus 4.8, Opus 4.7, Sonnet 5, Opus 4.6 e Sonnet 4.6.
budget_tokens deve essere impostato su un valore inferiore a max_tokens. Tuttavia, quando usi il pensiero intercalato con strumenti, puoi superare questo limite poiché il limite di token diventa l'intera finestra di contesto. Poiché budget_tokens deve essere inferiore a max_tokens, il pensiero esteso non può essere combinato con max_tokens: 0 (pre-riscaldamento della cache).
Il campo display nella configurazione del thinking controlla come il contenuto del thinking viene restituito nelle risposte dell'API. Accetta due valori:
"summarized": I blocchi di thinking contengono testo di thinking riassunto. Consulta Thinking riassunto per i dettagli. Questa è l'impostazione predefinita su Claude Opus 4.6, Claude Sonnet 4.6 e sui modelli Claude 4 precedenti."omitted": I blocchi di thinking vengono restituiti con un campo thinking vuoto. Il campo signature contiene comunque il thinking completo crittografato per la continuità multi-turno (consulta Crittografia del thinking). Questa è l'impostazione predefinita su Claude Fable 5, Claude Mythos 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7 e Claude Mythos Preview.Impostare display: "omitted" è utile quando la tua applicazione non mostra il contenuto del thinking agli utenti. Il vantaggio principale è un time-to-first-text-token più rapido durante lo streaming: il server salta completamente lo streaming dei token di thinking e fornisce solo la signature, quindi la risposta testuale finale inizia lo streaming prima.
Ecco alcune considerazioni importanti per il thinking omesso:
signature per ricostruire il thinking originale per la costruzione del prompt (consulta Preservare i blocchi di thinking). Qualsiasi testo inserito nel campo thinking di un blocco omesso restituito al server viene ignorato.display non è valido con thinking.type: "disabled" (non c'è nulla da visualizzare).thinking.type: "adaptive" e il modello salta il thinking per una richiesta semplice, non viene prodotto alcun blocco di thinking indipendentemente da display.Il campo signature è identico sia che display sia "summarized" o "omitted". È supportato il cambio dei valori di display tra i turni di una conversazione.
Su Claude Mythos Preview, display ha come valore predefinito "omitted". Gli esempi in questa sezione passano display esplicitamente in modo che si applichino a tutti i modelli, ma su Mythos Preview puoi lasciarlo non impostato e ottenere lo stesso comportamento. Per ricevere il pensiero riassunto su Mythos Preview, imposta esplicitamente display: "summarized".
Le pipeline automatizzate che non mostrano mai il contenuto del pensiero agli utenti finali possono evitare l'overhead di ricevere i token di pensiero via rete. Le applicazioni sensibili alla latenza ottengono la stessa qualità di ragionamento senza attendere che il testo del pensiero venga trasmesso in streaming prima che inizi la risposta finale.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000,
"display": "omitted",
},
messages=[
{"role": "user", "content": "What is 27 * 453?"},
],
)
for block in response.content:
if block.type == "thinking":
if block.thinking:
print(f"Thinking: {block.thinking}")
else:
print("Thinking: [omitted]")
elif block.type == "text":
print(f"Response: {block.text}")Quando display: "omitted" è impostato, la risposta contiene blocchi thinking con un campo thinking vuoto:
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}Quando si usa lo streaming con display: "omitted", non vengono emessi eventi thinking_delta; consulta Streaming del pensiero per la sequenza degli eventi.
Con il pensiero esteso abilitato, l'API Messages per i modelli Claude 4 restituisce un riepilogo del processo di pensiero completo di Claude. Il pensiero riepilogato fornisce tutti i vantaggi di intelligenza del pensiero esteso, prevenendo al contempo usi impropri. Questo è il comportamento predefinito sui modelli Claude 4 quando il campo display nella configurazione del pensiero non è impostato o è impostato su "summarized". Su Claude Fable 5, Claude Mythos 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7 e Claude Mythos Preview, display ha come valore predefinito "omitted", quindi devi impostare esplicitamente display: "summarized" per ricevere il pensiero riepilogato.
Ecco alcune considerazioni importanti per il pensiero riepilogato:
Nei rari casi in cui hai bisogno di accedere all'output di pensiero completo per i modelli Claude 4, contatta il team vendite di Anthropic.
Puoi trasmettere in streaming le risposte del pensiero esteso utilizzando i server-sent events (SSE).
Quando lo streaming è abilitato per il pensiero esteso, ricevi il contenuto del pensiero tramite eventi thinking_delta.
Quando display: "omitted" è impostato, non vengono emessi eventi thinking_delta. Consulta Controllare la visualizzazione del pensiero.
Per ulteriore documentazione sullo streaming tramite l'API Messages, consulta Streaming dei messaggi.
Ecco come gestire lo streaming con il pensiero:
client = anthropic.Anthropic()
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
) as stream:
thinking_started = False
response_started = False
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
# Reimposta i flag per ogni nuovo blocco
thinking_started = False
response_started = False
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
if not thinking_started:
print("Thinking: ", end="", flush=True)
thinking_started = True
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
if not response_started:
print("Response: ", end="", flush=True)
response_started = True
print(event.delta.text, end="", flush=True)
elif event.type == "content_block_stop":
print("\nBlock complete.")Esempio di output in streaming:
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-6", "stop_reason": null, "stop_sequence": null}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": "", "signature": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "I need to find the GCD of 1071 and 462 using the Euclidean algorithm.\n\n1071 = 2 × 462 + 147"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n462 = 3 × 147 + 21\n147 = 7 × 21 + 0\n\nSo GCD(1071, 462) = 21"}}
// Additional thinking deltas...
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": "The greatest common divisor of 1071 and 462 is **21**."}}
// Additional text deltas...
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 display: "omitted" è impostato, il blocco di pensiero si apre, arriva un singolo signature_delta e il blocco si chiude senza alcun evento thinking_delta. Lo streaming del testo inizia immediatamente dopo:
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"EosnCkYICxIMMb3LzNrMu..."}}
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":""}}Quando usi lo streaming con il pensiero abilitato, potresti notare che il testo a volte arriva in blocchi più grandi alternati a una consegna più piccola, token per token. Questo è un comportamento previsto, specialmente per il contenuto del pensiero.
Il sistema di streaming deve elaborare il contenuto in batch per prestazioni ottimali, il che può risultare in questo pattern di consegna "a blocchi", con possibili ritardi tra gli eventi di streaming.
Il pensiero esteso può essere utilizzato insieme all'uso degli strumenti, consentendo a Claude di ragionare sulla selezione degli strumenti e sull'elaborazione dei risultati.
Quando usi il pensiero esteso con l'uso degli strumenti, tieni presente le seguenti limitazioni:
Limitazione sulla scelta dello strumento: L'uso degli strumenti con il pensiero 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": "..."} genererà un errore perché queste opzioni forzano l'uso degli strumenti, il che è incompatibile con il pensiero esteso.
Conservazione dei blocchi di pensiero: Durante l'uso degli strumenti, devi passare i blocchi thinking all'API per l'ultimo messaggio dell'assistente. Includi il blocco completo e non modificato nell'API per mantenere la continuità del ragionamento.
Non puoi alternare il pensiero nel mezzo di un turno dell'assistente, incluso durante i cicli di uso degli strumenti. L'intero turno dell'assistente dovrebbe operare in una singola modalità di pensiero:
Dal punto di vista del modello, i cicli di uso degli strumenti 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 agli strumenti e relativi risultati.
Ad esempio, questa sequenza fa tutta parte di un singolo turno dell'assistente:
User: "What's the weather in Paris?"
Assistant: [thinking] + [tool_use: get_weather]
User: [tool_result: "20°C, sunny"]
Assistant: [text: "The weather in Paris is 20°C and sunny"]Anche se ci sono più messaggi API, il ciclo di uso degli strumenti è concettualmente parte di una risposta continua dell'assistente.
Quando si verifica un conflitto di pensiero a metà turno (come attivare o disattivare il pensiero durante un ciclo di uso degli strumenti), l'API disabilita automaticamente il pensiero per quella richiesta. Per preservare la qualità del modello e rimanere nella distribuzione, l'API può:
Ciò significa che tentare di alternare il pensiero a metà turno non causerà un errore, ma il pensiero verrà disabilitato silenziosamente per quella richiesta. Per confermare se il pensiero era attivo, verifica la presenza di blocchi thinking nella risposta.
Best practice: Pianifica la tua strategia di pensiero all'inizio di ogni turno piuttosto che tentare di alternarla a metà turno.
Esempio: Alternare il pensiero dopo aver completato un turno
User: "What's the weather?"
Assistant: [tool_use] (thinking disabled)
User: [tool_result]
Assistant: [text: "It's sunny"]
User: "What about tomorrow?"
Assistant: [thinking] + [text: "..."] (thinking enabled - new turn)Completando il turno dell'assistente prima di alternare il pensiero, ti assicuri che il pensiero sia effettivamente abilitato per la nuova richiesta.
Alternare le modalità di pensiero invalida anche la cache dei prompt per la cronologia dei messaggi. Per maggiori dettagli, consulta la sezione Pensiero esteso con la cache dei prompt.
Durante l'uso degli strumenti, devi passare i blocchi thinking all'API e devi includere il blocco completo e non modificato nell'API. Questo è fondamentale per mantenere il flusso di ragionamento del modello e l'integrità della conversazione.
Anche se puoi omettere i blocchi thinking dai turni precedenti con ruolo assistant, passa sempre tutti i blocchi di pensiero all'API per qualsiasi conversazione multi-turno. L'API:
Quali blocchi vengono mantenuti dipende dal modello. Consulta Conservazione dei blocchi di pensiero per modello per i valori predefiniti per classe. Per sovrascrivere il valore predefinito, usa la strategia di modifica del contesto clear_thinking_20251015.
Quando alterni le modalità di pensiero durante una conversazione, ricorda che l'intero turno dell'assistente (inclusi i cicli di uso degli strumenti) deve operare in una singola modalità di pensiero. Per maggiori dettagli, consulta Alternare le modalità di pensiero nelle conversazioni.
Quando Claude invoca strumenti, sta mettendo in pausa la costruzione di una risposta in attesa di informazioni esterne. Quando vengono restituiti i risultati degli strumenti, Claude continua a costruire quella risposta esistente. Ciò rende necessaria la conservazione dei blocchi di pensiero durante l'uso degli strumenti, per un paio di motivi:
Continuità del ragionamento: I blocchi di pensiero catturano il ragionamento passo dopo passo di Claude che ha portato alle richieste di strumenti. Quando invii i risultati degli strumenti, includere il pensiero originale garantisce che Claude possa continuare il suo ragionamento da dove si era interrotto.
Mantenimento del contesto: Anche se i risultati degli strumenti appaiono come messaggi utente nella struttura dell'API, fanno parte di un flusso di ragionamento continuo. La conservazione dei blocchi di pensiero mantiene questo flusso concettuale attraverso più chiamate API. Per ulteriori informazioni sulla gestione del contesto, consulta la 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 riorganizzare o modificare la sequenza di questi blocchi.
Se i blocchi di pensiero vengono modificati, l'API restituisce un errore 400 invalid_request_error il cui messaggio contiene `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified. La causa più comune è codice applicativo che filtra i blocchi di contenuto per tipo e scarta i blocchi redacted_thinking, o che ricostruisce il messaggio dell'assistente invece di restituirlo invariato. Consulta I blocchi di pensiero non possono essere modificati per l'errore completo e i passaggi di correzione.
Il pensiero esteso con l'uso degli strumenti nei modelli Claude 4 supporta il "interleaved thinking" (pensiero intercalato), che consente a Claude di pensare tra le chiamate agli strumenti e di effettuare ragionamenti più sofisticati dopo aver ricevuto i risultati degli strumenti.
Con il pensiero intercalato, Claude può:
Il modo in cui abiliti il pensiero intercalato dipende dal modello:
| Modello | Pensiero intercalato |
|---|---|
| Claude Fable 5 Claude Mythos 5 | Automatico con il pensiero adattivo. Il ragionamento tra strumenti si sposta nei blocchi di pensiero. Nessun header beta necessario. |
| Claude Mythos Preview | Automatico. Ogni passaggio di ragionamento tra strumenti si sposta in un blocco di pensiero invece che in testo semplice. Nessun header beta necessario o supportato. |
| Claude Opus 4.8 | Automatico con il pensiero adattivo (l'unica modalità di pensiero supportata). Nessun header beta necessario. |
| Claude Opus 4.7 | Automatico con il pensiero adattivo (l'unica modalità di pensiero supportata). Nessun header beta necessario. |
| Claude Opus 4.6 | Automatico con il pensiero adattivo. L'header beta interleaved-thinking-2025-05-14 è deprecato e viene ignorato in modo sicuro se incluso. |
| Claude Sonnet 5 | Automatico con il pensiero adattivo. L'header beta interleaved-thinking-2025-05-14 è deprecato e viene ignorato in modo sicuro se incluso. |
| Claude Sonnet 4.6 | Automatico con il pensiero adattivo (consigliato). L'header beta con type: "enabled" manuale è ancora funzionante ma deprecato. |
| Claude Opus 4.5 | Aggiungi l'header beta interleaved-thinking-2025-05-14 alla tua richiesta API. |
| Claude Haiku 4.5 | Non supportato. L'header beta è accettato sull'API Claude ma ignorato. |
| Modelli Claude 4 precedenti | Aggiungi l'header beta interleaved-thinking-2025-05-14 alla tua richiesta API. |
Per modelli Claude 4 precedenti si intendono Claude Sonnet 4.5, Claude Opus 4.1 (deprecato), Claude Opus 4 (ritirato, tranne su Google Cloud) e Claude Sonnet 4 (ritirato, tranne su Bedrock e Google Cloud).
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 nelle richieste a qualsiasi modello senza restituire un errore. Sui modelli che non supportano il pensiero intercalato, l'header viene ignorato. Su Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6 e Claude Sonnet 5, è deprecato e viene ignorato in modo sicuro. Su Claude Mythos Preview, non è necessario e viene ignorato in modo sicuro.interleaved-thinking-2025-05-14 a qualsiasi modello diverso da Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5, Claude Opus 4.1 (deprecato), Opus 4 (ritirato, tranne su Google Cloud), Sonnet 4.5 o Sonnet 4 (ritirato, tranne su Bedrock e Google Cloud), la tua richiesta fallirà.La cache dei prompt con il pensiero presenta 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 durante sessioni di pensiero più lunghe e flussi di lavoro multi-step.
Rimozione dei blocchi di pensiero dal contesto
Pattern di invalidazione della cache
Sui modelli Opus/Sonnet precedenti e su tutti i modelli Haiku, i blocchi di pensiero vengono rimossi per i calcoli di cache e contesto; su Opus 4.5+ e Sonnet 4.6+, vengono mantenuti per impostazione predefinita. In entrambi i casi, devono essere conservati quando si continuano conversazioni con l'uso degli strumenti, specialmente con il pensiero intercalato.
Quando si usa il pensiero esteso con l'uso degli strumenti, i blocchi di pensiero mostrano un comportamento di caching specifico che influisce sul conteggio dei token:
Come funziona:
Esempio dettagliato del flusso:
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 tool use 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 Opus 4.5+ e Sonnet 4.6+, tutti i blocchi di pensiero precedenti vengono mantenuti per impostazione predefinita. Per i modelli Opus/Sonnet precedenti e tutti i modelli Haiku, poiché è stato incluso un blocco utente non-tool-result, tutti i blocchi di pensiero precedenti vengono ignorati e rimossi dal contesto. 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 esplicitimax_tokens (che include il tuo budget di pensiero quando il pensiero è abilitato) viene applicato come limite rigido. Sui modelli Claude 4.5 e successivi, se i token di input più max_tokens superano la dimensione della finestra di contesto, l'API accetta la richiesta. Se la generazione raggiunge poi il limite della finestra di contesto, si interrompe con stop_reason: "model_context_window_exceeded". Sui modelli precedenti, l'API restituisce invece un errore di validazione. Consulta Gestione dei motivi di interruzione.
Puoi leggere la guida sulle finestre di contesto per un approfondimento più completo.
Quando calcoli l'utilizzo della finestra di contesto con il pensiero abilitato, ci sono alcune considerazioni da tenere presenti:
max_tokens per quel turnoIl diagramma seguente illustra 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)Usa l'API di conteggio dei token per ottenere conteggi di token accurati per il tuo caso d'uso specifico, specialmente quando lavori con conversazioni multi-turno che includono il pensiero.
Quando si usa il pensiero esteso con l'uso degli strumenti, i blocchi di pensiero devono essere esplicitamente conservati e restituiti con i risultati degli strumenti.
Il calcolo della finestra di contesto effettiva per il pensiero esteso con l'uso degli strumenti diventa:
context window =
(current input tokens + previous thinking tokens + tool use tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Il diagramma seguente illustra la gestione dei token per il pensiero esteso con l'uso degli strumenti:
Dato il comportamento della finestra di contesto e di max_tokens con il pensiero esteso, potresti dover:
max_tokens man mano che la lunghezza del tuo prompt cambiaIl 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 vengono ritrasmessi all'API.
È strettamente necessario rinviare i blocchi di pensiero solo quando si utilizzano strumenti con il pensiero esteso. Altrimenti puoi omettere i blocchi di pensiero dai turni precedenti. Se li ritrasmetti, il fatto che l'API li mantenga o li rimuova dipende dal modello: Opus 4.5+ e Sonnet 4.6+ li mantengono nel contesto per impostazione predefinita; i modelli Opus/Sonnet precedenti e tutti i modelli Haiku li rimuovono. Consulta modifica del contesto per configurare questo comportamento.
Se rinvii i blocchi di pensiero, ritrasmetti tutto esattamente come lo hai ricevuto per garantire coerenza ed evitare potenziali problemi.
Ecco alcune considerazioni importanti sulla crittografia del pensiero:
signature_delta all'interno di un evento content_block_delta subito 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.signature sono compatibili tra le piattaforme (API di Claude, Amazon Bedrock e Google Cloud). I valori generati su una piattaforma saranno compatibili con un'altra.Oltre ai normali blocchi thinking, l'API può restituire blocchi redacted_thinking. Un blocco redacted_thinking contiene contenuto di pensiero crittografato in un campo data, senza riepilogo leggibile:
{
"type": "redacted_thinking",
"data": "..."
}Il campo data è opaco e crittografato. Come il campo signature sui normali blocchi di pensiero, dovresti passare i blocchi redacted_thinking all'API senza modifiche quando continui una conversazione multi-turno con strumenti.
Se il tuo codice filtra i blocchi di contenuto per tipo (ad esempio, block.type == "thinking") quando restituisce le risposte con l'uso degli strumenti, includi anche i blocchi redacted_thinking. Filtrare solo su block.type == "thinking" scarta silenziosamente i blocchi redacted_thinking e interrompe il protocollo multi-turno descritto sopra.
I blocchi redacted_thinking sono un tipo di blocco di contenuto distinto restituito dall'API quando porzioni del pensiero vengono oscurate per motivi di sicurezza. Questo è separato dall'opzione display: "omitted", che restituisce normali blocchi thinking con un campo thinking vuoto.
L'API Messages gestisce il pensiero in modo diverso tra le versioni dei modelli Claude. La tabella seguente fornisce un confronto sintetico:
| Modello | budget_tokens | Output del pensiero | Pensiero intercalato | Conservazione dei blocchi |
|---|---|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Non supportato | Omesso per impostazione predefinita1 | Automatico2 | Consulta Pensiero adattivo |
| Claude Mythos Preview | Supportato | Omesso per impostazione predefinita1 | Automatico2 | Conservati3 |
| Claude Opus 4.8 | Non supportato | Omesso per impostazione predefinita1 | Automatico2 | Conservati |
| Claude Opus 4.7 | Non supportato | Omesso per impostazione predefinita1 | Automatico2 | Conservati |
| Claude Sonnet 5 | Non supportato | Omesso per impostazione predefinita1 | Automatico2 | Conservati |
| Claude Opus 4.6 | Deprecato | Riassunto | Automatico2 | Conservati |
| Claude Sonnet 4.6 | Deprecato | Riassunto | Automatico, o header beta | Conservati |
| Claude Opus 4.5 | Supportato | Riassunto | Header beta | Conservati |
| Claude Haiku 4.5 | Supportato | Riassunto | Non supportato | Solo ultimo turno |
| Modelli Claude 4 precedenti | Supportato | Riassunto | Header beta | Solo ultimo turno |
1 Imposta display: "summarized" per ricevere il pensiero riassunto. Su Claude Fable 5, Claude Mythos 5 e Claude Mythos Preview, i token di pensiero grezzi non vengono mai restituiti.
2 Con il pensiero adattivo. L'header beta interleaved-thinking-2025-05-14 non è necessario su questi modelli e viene ignorato in modo sicuro se incluso.
3 I blocchi vengono rimossi quando si continua la conversazione su un modello che non supporta il formato di pensiero Mythos.
Se i blocchi di pensiero dei turni precedenti dell'assistente vengono conservati nel contesto per impostazione predefinita dipende dalla classe del modello. Opus: Claude Opus 4.5 e i modelli Opus successivi mantengono tutti i blocchi di pensiero precedenti; Claude Opus 4.1 (deprecato) e i modelli Opus precedenti mantengono solo il pensiero dell'ultimo turno dell'assistente. Sonnet: Claude Sonnet 4.6 e i modelli Sonnet successivi mantengono tutti; Claude Sonnet 4.5 e i modelli Sonnet precedenti mantengono solo l'ultimo turno. Haiku: tutti i modelli Haiku fino a Claude Haiku 4.5 mantengono solo l'ultimo turno. Anche Claude Mythos Preview mantiene tutti i blocchi di pensiero precedenti.
Vantaggi della conservazione dei blocchi di pensiero:
Considerazioni importanti:
Per i modelli precedenti (Claude Sonnet 4.5, Opus 4.1 (deprecato), ecc.), i blocchi di pensiero dei turni precedenti continuano a essere rimossi dal contesto. Il comportamento esistente descritto nella sezione Pensiero esteso con la cache dei prompt si applica a quei modelli.
Per informazioni complete sui prezzi, inclusi i costi base, le scritture in cache, gli accessi alla cache e i token di output, consulta la pagina dei prezzi.
Il processo di pensiero comporta costi per:
Quando il pensiero esteso è abilitato, viene automaticamente incluso un prompt di sistema specializzato per supportare questa funzionalità.
Quando si utilizza il pensiero riassunto:
Quando si utilizza display: "omitted":
thinking è vuoto)Il conteggio dei token di output fatturati non corrisponderà al conteggio dei token visibili nella risposta. Ti viene addebitato l'intero processo di pensiero, non il contenuto di pensiero visibile nella risposta.
Per vedere quanti token di output fatturati sono stati spesi per il ragionamento interno, leggi usage.output_tokens_details.thinking_tokens nella risposta. Questo valore riflette il ragionamento grezzo generato dal modello (non il testo riassunto restituito nel corpo della risposta) ed è sempre minore o uguale a output_tokens. Sottrailo da output_tokens per ottenere un'approssimazione della porzione di output non relativa al ragionamento.
{
"usage": {
"input_tokens": 25,
"output_tokens": 348,
"output_tokens_details": {
"thinking_tokens": 312
}
}
}output_tokens rimane il totale inclusivo e autorevole utilizzato per la fatturazione. output_tokens_details è una suddivisione di sola lettura a scopo di osservabilità.
usage.output_tokens_details.thinking_tokens nella risposta riporta quanti dei token di output fatturati sono stati utilizzati per il ragionamento interno. Durante lo streaming, questa suddivisione appare solo nell'evento finale message_delta.max_tokens è maggiore di 21.333 per evitare timeout HTTP su richieste di lunga durata. Questa è una validazione lato client, non una restrizione dell'API. Se non hai bisogno di elaborare gli eventi in modo incrementale, usa .stream() con .get_final_message() (Python) o .finalMessage() (TypeScript) per ottenere l'oggetto Message completo senza gestire i singoli eventi. Consulta Streaming dei messaggi per i dettagli. Durante lo streaming, preparati a gestire sia i blocchi di contenuto di pensiero che quelli di testo man mano che arrivano.display: "omitted" nella configurazione del pensiero per ridurre il tempo al primo token di testo. Consulta Controllare la visualizzazione del pensiero.temperature o top_k, né con l'uso forzato degli strumenti.top_p su valori compresi tra 1 e 0,95.Lascia che Claude decida quando e quanto utilizzare il pensiero esteso.
Esplora esempi pratici di pensiero nel cookbook.
Scopri le best practice di prompt engineering per il pensiero esteso.
Was this page helpful?