Потоковое мышление
Тема дорожной карты · Claude от Anthropic
Когда мышление включено, Claude возвращает отдельные блоки контента типа thinking до финального текстового ответа. При стриминге ("stream": true) эти блоки приходят инкрементально: рассуждения передаются событиями thinking_delta внутри стандартной последовательности content_block_start / content_block_delta / content_block_stop. Это позволяет интерфейсу показывать живой прогресс рассуждений, пока модель ещё работает над задачей. Важное изменение на современных моделях: на Opus 4.7+ и Fable 5 блоки мышления стримятся, но их текст по умолчанию пуст — чтобы получить содержимое, нужно явно включить display: "summarized".
Как это работает
Вы включаете адаптивное мышление (thinking: {"type": "adaptive"}) и стриминг, после чего в потоке событий сначала появляется блок типа thinking, а его текст приходит порциями через события thinking_delta; затем стартуют обычные блоки text с финальным ответом. На Opus 4.7+ и Fable 5 дельты мышления по умолчанию приходят пустыми (display: "omitted") — блоки есть, текста нет. Чтобы показать пользователю сводку рассуждений, запросите thinking: {"type": "adaptive", "display": "summarized"}. Отдельное практическое правило: стриминг обязателен для запросов с max_tokens выше примерно 16 000 токенов — без него обычные HTTP-запросы упираются в таймауты SDK. Благодаря interleaved thinking в адаптивном режиме блоки рассуждений могут появляться и между вызовами инструментов, а не только перед первым текстом.
Когда применять
Стримьте мышление везде, где пользователь ждёт ответа в реальном времени: чаты, ассистенты, агентные интерфейсы с длинными цепочками инструментов. Показ сводки рассуждений (display: "summarized") превращает долгую паузу в наблюдаемый прогресс и повышает доверие к ответу на сложных задачах. Для фоновых и пакетных сценариев отображение рассуждений не нужно — оставьте дефолтный omitted и просто обрабатывайте финальный текст, но сам стриминг всё равно включайте при больших max_tokens.
Типичные ошибки
Главная ошибка после миграции — ждать текст в thinking_delta на Opus 4.7+ или Fable 5 с настройками по умолчанию: события приходят, но пустые, и UI выглядит «зависшим» на долгой паузе. Решение — параметр запроса display: "summarized", а не правки обработчика ответа. Вторая ошибка — отключать стриминг при больших лимитах вывода: запросы с max_tokens выше ~16K без стриминга рискуют оборваться по таймауту. Третья — жёстко привязывать парсер стрима только к text_delta и падать на блоках thinking: обработчик должен корректно пропускать или отображать все типы блоков, включая рассуждения между вызовами инструментов.
Связанные понятия
Полезные ресурсы
Проверить знания (2)
Загрузка вопросов…