Большинство учебных материалов по чат-ботам на React заканчиваются демонстрацией. Ответ появляется целиком через восемь секунд, вся переписка отправляется модели заново при каждом сообщении, а ключ хранится в переменной NEXT_PUBLIC_, которую Next напрямую встраивает в браузерный бандл. На скриншоте всё выглядит нормально, но при реальном использовании проблемы начинаются уже в первую неделю.
Это руководство по созданию, а не системный prompt. Вы добавляете файл в проект, открываете его в Claude Code или Cursor, и он вместе с вами прорабатывает архитектуру: потоковую передачу с помощью читателя Fetch ReadableStream, AbortController, подключённый к остановке, оптимистичное сообщение пользователя с добавлением к нему токенов, список, который не перерисовывает каждое сообщение при каждом токене, автопрокрутку, которая перестаёт мешать читателю, прокрутившему страницу вверх, Markdown и блоки кода, ключ за обработчиком маршрута, историю в localStorage, а затем в настоящем бэкенде, и ограничение количества токенов на случай, когда переписка станет длинной.
Вы покупаете его один раз и сохраняете навсегда. Никакой подписки, зависимостей времени выполнения и ограничений, мешающих использовать его в следующем проекте или редактировать по мере развития вашей кодовой базы.