AssistantMessage completi dopo che Claude ha terminato di generare ogni risposta. Per ricevere aggiornamenti incrementali mentre il testo e le chiamate di strumenti vengono generati, abilita lo streaming di messaggi parziali impostando include_partial_messages (Python) o includePartialMessages (TypeScript) su true nelle tue opzioni.
Abilita lo streaming di output
Per abilitare lo streaming, impostainclude_partial_messages (Python) o includePartialMessages (TypeScript) su true nelle tue opzioni. Questo fa sì che l’SDK restituisca messaggi StreamEvent contenenti eventi API grezzi mentre arrivano, oltre ai soliti AssistantMessage e ResultMessage.
Il tuo codice deve quindi:
- Controllare il tipo di ogni messaggio per distinguere
StreamEventda altri tipi di messaggio - Per
StreamEvent, estrarre il campoevente controllare il suotype - Cercare eventi
content_block_deltadovedelta.typeètext_delta, che contengono i veri frammenti di testo
StreamEvent, poi per content_block_delta, poi per text_delta:
Riferimento StreamEvent
Quando i messaggi parziali sono abilitati, ricevi eventi di streaming API Claude grezzi avvolti in un oggetto. Il tipo ha nomi diversi in ogni SDK:- Python:
StreamEvent(importa daclaude_agent_sdk.types) - TypeScript:
SDKPartialAssistantMessagecontype: 'stream_event'
event contiene l’evento di streaming grezzo dall’API Claude. I tipi di evento comuni includono:
| Tipo di evento | Descrizione |
|---|---|
message_start | Inizio di un nuovo messaggio |
content_block_start | Inizio di un nuovo blocco di contenuto (testo o uso di strumento) |
content_block_delta | Aggiornamento incrementale al contenuto |
content_block_stop | Fine di un blocco di contenuto |
message_delta | Aggiornamenti a livello di messaggio (motivo di arresto, utilizzo) |
message_stop | Fine del messaggio |
Flusso di messaggi
Con i messaggi parziali abilitati, ricevi messaggi in questo ordine:include_partial_messages in Python, includePartialMessages in TypeScript), ricevi tutti i tipi di messaggio tranne StreamEvent. I tipi comuni includono SystemMessage (inizializzazione della sessione), AssistantMessage (risposte complete), ResultMessage (risultato finale) e un messaggio di confine compatto che indica quando la cronologia della conversazione è stata compattata (SDKCompactBoundaryMessage in TypeScript; SystemMessage con sottotipo "compact_boundary" in Python).
Trasmettere risposte di testo
Per visualizzare il testo mentre viene generato, cerca eventicontent_block_delta dove delta.type è text_delta. Questi contengono i frammenti di testo incrementali. L’esempio seguente stampa ogni frammento mentre arriva:
Trasmettere chiamate di strumenti
Le chiamate di strumenti vengono trasmesse anche in modo incrementale. Puoi tracciare quando gli strumenti iniziano, ricevere il loro input mentre viene generato e vedere quando si completano. L’esempio seguente traccia lo strumento attualmente chiamato e accumula l’input JSON mentre viene trasmesso. Utilizza tre tipi di evento:content_block_start: lo strumento iniziacontent_block_deltaconinput_json_delta: i frammenti di input arrivanocontent_block_stop: la chiamata dello strumento è completa
Costruire un’interfaccia utente di streaming
Questo esempio combina il testo e lo streaming di strumenti in un’interfaccia utente coerente. Traccia se l’agente sta attualmente eseguendo uno strumento (utilizzando un flagin_tool) per mostrare indicatori di stato come [Using Read...] mentre gli strumenti vengono eseguiti. Il testo viene trasmesso normalmente quando non è in uno strumento e il completamento dello strumento attiva un messaggio “done”. Questo modello è utile per le interfacce di chat che devono mostrare lo stato di avanzamento durante attività di agenti multi-step.
Limitazioni note
- Structured output: il risultato JSON appare solo nel
ResultMessage.structured_outputfinale, non come delta di streaming. Vedi structured outputs per i dettagli.
Passaggi successivi
Ora che puoi trasmettere testo e chiamate di strumenti in tempo reale, esplora questi argomenti correlati:- Interactive vs one-shot queries: scegli tra le modalità di input per il tuo caso d’uso
- Structured outputs: ottieni risposte JSON tipizzate dall’agente
- Permissions: controlla quali strumenti l’agente può utilizzare