Узнайте, как использовать потоковую передачу для получения ответов Claude в реальном времени с помощью server-sent events.
"stream": true
, чтобы инкрементально передавать ответ в потоковом режиме, используя server-sent events (SSE).
event: message_stop
) и включать соответствующий type
события в своих данных.
Каждый поток использует следующий поток событий:
message_start
: содержит объект Message
с пустым content
.content_block_start
, одно или несколько событий content_block_delta
и событие content_block_stop
. Каждый блок контента будет иметь index
, который соответствует его индексу в финальном массиве content
сообщения.message_delta
, указывающих на изменения верхнего уровня в финальном объекте Message
.message_stop
.usage
события message_delta
, является кумулятивным.ping
.
overloaded_error
, который обычно соответствует HTTP 529 в не-потоковом контексте:
content_block_delta
содержит delta
типа, который обновляет блок content
по заданному index
.
text
выглядит так:
tool_use
соответствуют обновлениям поля input
блока. Для поддержки максимальной детализации дельты являются частичными JSON строками, тогда как финальный tool_use.input
всегда является объектом.
Вы можете накапливать строковые дельты и парсить JSON после получения события content_block_stop
, используя библиотеку типа Pydantic для частичного парсинга JSON, или используя наши SDK, которые предоставляют помощники для доступа к парсированным инкрементальным значениям.
Дельта блока контента tool_use
выглядит так:
input
за раз. Таким образом, при использовании инструментов могут быть задержки между потоковыми событиями, пока модель работает. Как только ключ и значение input
накоплены, мы выдаем их как несколько событий content_block_delta
с разбитым на части частичным json, чтобы формат мог автоматически поддерживать более тонкую детализацию в будущих моделях.
thinking_delta
. Эти дельты соответствуют полю thinking
блоков контента thinking
.
Для контента размышлений специальное событие signature_delta
отправляется непосредственно перед событием content_block_stop
. Эта подпись используется для проверки целостности блока размышлений.
Типичная дельта размышлений выглядит так:
message_start
content_block_start
content_block_delta
content_block_stop
message_delta
message_stop
ping
, разбросанные по всему ответу. Смотрите Типы событий для более подробной информации о формате.
text
, tool_use
, thinking
). Блоки использования инструментов и расширенного мышления не могут быть частично восстановлены. Вы можете возобновить потоковую передачу с самого последнего текстового блока.