Урок из полного доступа, первые уроки курса бесплатно Официальный курс Anthropic Academy на русском
Урок 05 · Текст · ~5 мин

Потоковая выдача ответа

Урок 5 из 6 курса «Основы Anthropic API»: официальный курс Anthropic Academy (Антропик) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

Цели урока

  • Понять, как работает потоковая передача
  • Работать с событиями потока

О чём урок

Начнем с импорта anthropic SDK и настройки нашего клиента:

До сих пор мы отправляли сообщения Claude, используя следующий синтаксис:

Это работает хорошо, но важно помнить, что при таком подходе мы получаем контент от API только **после того, как весь контент будет сгенерирован.** Попробуйте снова запустить ячейку выше, и вы увидите, что ничего не выводится, пока весь ответ не будет напечатан сразу. Это нормально во многих ситуациях, но может привести к негативному пользовательскому опыту, если вы создаете приложение, которое заставляет пользователя ждать генерации всего ответа.

**Встречайте потоковую передачу (streaming)!**

Потоковая передача позволяет нам писать приложения, которые получают контент по мере его генерации моделью, вместо того чтобы ждать генерации всего от ответа. Так работают приложения, подобные claude.ai. По мере того как модель генерирует ответы, этот контент передается в браузер пользователя и отображается:

Чтобы получить потоковый ответ от API, достаточно передать stream=True в client.messages.create. Это простая часть. Сложнее становится то, как мы впоследствии работаем с потоковым ответом и обрабатываем входящие данные.

Давайте посмотрим на нашу переменную stream

Здесь особо нечего смотреть! Сам по себе этот объект stream нам особо не поможет. Объект stream — это объект-генератор, который выдает отдельные события, отправленные сервером (SSE), по мере их получения от API. Нам нужно написать код для итерации по нему и работы с каждым отдельным событием, отправленным сервером. Помните, наши данные больше не поступают одним завершенным фрагментом. Давайте попробуем проитерировать по потоковому ответу:

Как вы видите, мы получили множество событий, отправленных сервером, от API. Давайте подробнее рассмотрим, что означают эти события. Ниже приведено цветовое объяснение событий:

Каждый поток содержит ряд событий в следующем порядке: * **MessageStartEvent** - Сообщение с пустым содержимым * **Серия блоков содержимого** - Каждый из которых содержит: * Событие **ContentBlockStartEvent** * Одно или несколько событий **ContentBlockDeltaEvent** * Событие **ContentBlockStopEvent** * Одно или несколько событий **MessageDeltaEvent**, которые указывают на изменения верхнего уровня в итоговом сообщении * Финальное событие **MessageStopEvent**

В…

План урока

  1. Потоковая передача
  2. Работа с потоками
  3. Другие типы событий потоковой передачи
  4. Время до первого токена (TTFT)
  5. Вспомогательные средства для потоковой передачи
  6. Упражнение
  7. Возможное решение

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Откройте полный доступ

Вы прошли бесплатные уроки. Выберите тариф, чтобы продолжить обучение.

Курсы Anthropic 1 490 ₽ Разовый платёж, навсегда
  • Все курсы от Anthropic (34 шт.)
  • Именной сертификат по каждому пройденному курсу
Оплатить
Полный доступ 4 900 ₽ Разовый платёж, навсегда
  • Все 77 курсов от 11 AI-провайдеров
  • Библиотека промптов и новые курсы
Оплатить

Безопасная оплата через Robokassa: СБП, карты, электронные кошельки. Доступ откроется в этом браузере и придёт письмом. Уже оплатили? Восстановить доступ

Полезные гиды