Aprende cómo transmitir respuestas de forma incremental usando eventos enviados por el servidor (SSE) al crear mensajes con la API de Claude.
"stream": true
para transmitir incrementalmente la respuesta usando eventos enviados por el servidor (SSE).
event: message_stop
), e incluirá el type
de evento correspondiente en sus datos.
Cada stream utiliza el siguiente flujo de eventos:
message_start
: contiene un objeto Message
con content
vacío.content_block_start
, uno o más eventos content_block_delta
, y un evento content_block_stop
. Cada bloque de contenido tendrá un index
que corresponde a su índice en el array content
del Mensaje final.message_delta
, indicando cambios de nivel superior al objeto Message
final.message_stop
.usage
del evento message_delta
son acumulativos.ping
.
overloaded_error
, que normalmente correspondería a un HTTP 529 en un contexto no streaming:
content_block_delta
contiene un delta
de un tipo que actualiza el bloque de content
en un index
dado.
text
se ve así:
tool_use
corresponden a actualizaciones para el campo input
del bloque. Para soportar máxima granularidad, los deltas son cadenas JSON parciales, mientras que el tool_use.input
final siempre es un objeto.
Puedes acumular los deltas de cadena y analizar el JSON una vez que recibas un evento content_block_stop
, usando una biblioteca como Pydantic para hacer análisis JSON parcial, o usando nuestros SDKs, que proporcionan ayudantes para acceder a valores incrementales analizados.
Un delta de bloque de contenido tool_use
se ve así:
input
a la vez. Como tal, al usar herramientas, puede haber retrasos entre eventos de streaming mientras el modelo está trabajando. Una vez que una clave y valor de input
se acumulan, los emitimos como múltiples eventos content_block_delta
con json parcial fragmentado para que el formato pueda soportar automáticamente granularidad más fina en modelos futuros.
thinking_delta
. Estos deltas corresponden al campo thinking
de los bloques de contenido thinking
.
Para contenido de pensamiento, se envía un evento especial signature_delta
justo antes del evento content_block_stop
. Esta firma se usa para verificar la integridad del bloque de pensamiento.
Un delta de pensamiento típico se ve así:
message_start
content_block_start
content_block_delta
content_block_stop
message_delta
message_stop
ping
dispersos a lo largo de la respuesta. Consulta Tipos de eventos para más detalles sobre el formato.
text
, tool_use
, thinking
). Los bloques de uso de herramientas y pensamiento extendido no pueden ser parcialmente recuperados. Puedes reanudar el streaming desde el bloque de texto más reciente.