К содержимому
Claude Code с 0:полный курс
Уровень 2 · Структура и инструменты 4 мин

Стриминг ответа по кускам

Читаем поток SSE и показываем ответ по мере генерации, а итог забираем через get_final_message.

В этом уроке нет практического задания — просто прочитай и ответь на вопросы.

Зачем стримить

Когда max_tokens большой, обычный запрос может молчать десятки секунд, а потом отдать весь ответ разом — и упереться в таймаут HTTP. Стриминг отдаёт текст по кускам, как только модель его генерирует. Пользователь твоего бота поддержки видит, как ответ печатается вживую, а соединение не висит впустую.

Правило простое: если ставишь большой max_tokens (порядка 64000) — стримь. Иначе рискуешь таймаутом.

Что приходит в потоке

Сервер шлёт SSE-события. Тебе важны три:

  • message_start — метаданные ответа, начало;
  • content_block_delta — кусочек текста лежит в delta.text;
  • message_stop — поток закончился.

SDK делает это за тебя

В Python-SDK не нужно парсить сырые SSE — есть client.messages.stream(...). Печатаем дельты по мере прихода, а в конце забираем собранный объект через get_final_message() — там готовый usage, stop_reason и полный текст.

from anthropic import Anthropic

client = Anthropic()

with client.messages.stream(
    model="claude-opus-4-8",
    max_tokens=64000,
    messages=[{"role": "user", "content": "Ответь покупателю про возврат товара"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

    final = stream.get_final_message()
    print("\n", final.usage.output_tokens, "токенов на выходе")
get_final_message() возвращает тот же объект, что и обычный create — текст бери из массива content по type == "text", не из content[0] вслепую.

Проверь себя

Отвечено 0/3
Режим:

В каком SSE-событии лежит очередной кусочек текста?

Зачем вообще стримить ответ при большом max_tokens?

Как в Python-SDK забрать собранный итоговый ответ после стрима?

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

📝 Мои заметки

Сохраняется автоматически в этом браузере · видно на странице «Заметки».

Листай уроки клавишами · поиск по ⌘K