Gestione delle ragioni di interruzione
Quando effettui una richiesta all’API Messages, la risposta di Claude include un campo stop_reason
che indica perché il modello ha smesso di generare la sua risposta. Comprendere questi valori è fondamentale per costruire applicazioni robuste che gestiscano in modo appropriato diversi tipi di risposta.
Per i dettagli su stop_reason
nella risposta API, consulta il riferimento dell’API Messages.
Che cos’è stop_reason?
Il campo stop_reason
fa parte di ogni risposta dell’API Messages andata a buon fine. A differenza degli errori, che indicano fallimenti nell’elaborazione della tua richiesta, stop_reason
ti dice perché Claude ha completato con successo la generazione della sua risposta.
Valori di stop reason
end_turn
La ragione di interruzione più comune. Indica che Claude ha terminato naturalmente la sua risposta.
max_tokens
Claude si è fermato perché ha raggiunto il limite max_tokens
specificato nella tua richiesta.
stop_sequence
Claude ha incontrato una delle tue sequenze di interruzione personalizzate.
tool_use
Claude sta chiamando uno strumento e si aspetta che tu lo esegua.
pause_turn
Utilizzato con strumenti server come la ricerca web quando Claude deve mettere in pausa un’operazione di lunga durata.
Best practice per gestire le ragioni di interruzione
1. Controlla sempre stop_reason
Prendi l’abitudine di controllare stop_reason
nella tua logica di gestione delle risposte:
2. Gestisci max_tokens con eleganza
Quando una risposta viene troncata a causa dei limiti di token:
3. Implementa la logica di ripetizione per pause_turn
Per strumenti server che potrebbero andare in pausa:
Ragioni di interruzione vs. errori
È importante distinguere tra i valori di stop_reason
e gli errori effettivi:
Ragioni di interruzione (risposte riuscite)
- Parte del corpo della risposta
- Indicano perché la generazione si è fermata normalmente
- La risposta contiene contenuto valido
Errori (richieste fallite)
- Codici di stato HTTP 4xx o 5xx
- Indicano fallimenti nell’elaborazione della richiesta
- La risposta contiene dettagli sull’errore
Considerazioni sullo streaming
Quando si utilizza lo streaming, stop_reason
è:
null
nell’evento inizialemessage_start
- Fornito nell’evento
message_delta
- Non nullo in tutti gli altri eventi
Pattern comuni
Gestione dei flussi di lavoro degli strumenti
Garantire risposte complete
Gestendo correttamente i valori di stop_reason
, puoi costruire applicazioni più robuste che gestiscono con eleganza diversi scenari di risposta e forniscono esperienze utente migliori.