Aprenda como usar streaming para receber respostas incrementais usando server-sent events (SSE) ao criar mensagens com a API do Claude.
"stream": true
para fazer streaming incremental da resposta usando server-sent events (SSE).
event: message_stop
), e incluirá o type
de evento correspondente em seus dados.
Cada stream usa o seguinte fluxo de eventos:
message_start
: contém um objeto Message
com content
vazio.content_block_start
, um ou mais eventos content_block_delta
, e um evento content_block_stop
. Cada bloco de conteúdo terá um index
que corresponde ao seu índice no array content
da Mensagem final.message_delta
, indicando mudanças de nível superior no objeto Message
final.message_stop
.usage
do evento message_delta
são cumulativas.ping
.
overloaded_error
, que normalmente corresponderia a um HTTP 529 em um contexto não-streaming:
content_block_delta
contém um delta
de um tipo que atualiza o bloco content
em um determinado index
.
text
se parece com:
tool_use
correspondem a atualizações para o campo input
do bloco. Para suportar granularidade máxima, os deltas são strings JSON parciais, enquanto o tool_use.input
final é sempre um objeto.
Você pode acumular os deltas de string e analisar o JSON uma vez que receber um evento content_block_stop
, usando uma biblioteca como Pydantic para fazer análise JSON parcial, ou usando nossos SDKs, que fornecem auxiliares para acessar valores incrementais analisados.
Um delta de bloco de conteúdo tool_use
se parece com:
input
por vez. Como tal, ao usar ferramentas, pode haver atrasos entre eventos de streaming enquanto o modelo está trabalhando. Uma vez que uma chave e valor de input
são acumulados, nós os emitimos como múltiplos eventos content_block_delta
com json parcial fragmentado para que o formato possa automaticamente suportar granularidade mais fina em modelos futuros.
thinking_delta
. Esses deltas correspondem ao campo thinking
dos blocos de conteúdo thinking
.
Para conteúdo de pensamento, um evento especial signature_delta
é enviado logo antes do evento content_block_stop
. Esta assinatura é usada para verificar a integridade do bloco de pensamento.
Um delta de pensamento típico se parece com:
message_start
content_block_start
content_block_delta
content_block_stop
message_delta
message_stop
ping
dispersos ao longo da resposta também. Consulte Tipos de eventos para mais detalhes sobre o formato.
text
, tool_use
, thinking
). Blocos de uso de ferramenta e pensamento estendido não podem ser parcialmente recuperados. Você pode retomar o streaming do bloco de texto mais recente.