Перейти к содержимому
d.nikolaev
Все проекты
ФлагманПродуктПод NDA

Чат с GPT-помощником

Стриминг ответов, шаблоны со шагами и условиями, ветвление диалога, загрузка файлов

Роль
Frontend-разработчик: логика шаблонов, стриминг, файлы, SSO
Период
апрель 2024 г. — июль 2026 г.
Команда
4 человека
Компания
LazurM

Детали и код закрыты соглашением: описываю задачи и решения без раскрытия внутренностей.

Обезличенный чат с GPT-помощником под пометкой NDA

Ассистент для сотрудников и студентов: свободный чат и режим шаблонов, где запрос собирается по шагам. Отвечает потоком, помнит ветки диалога, принимает файлы и работает под единой авторизацией платформы.

Что сделано

  • Стриминг ответа модели: чтение потока через ReadableStream и посимвольный рендер без ожидания полного ответа
  • Шаблоны запросов как сценарий: шаги, блоки, циклы и условия перехода вместо одного большого поля ввода
  • Интерактивная схема шаблона: пошаговая навигация по сценарию с возвратом к предыдущим шагам
  • Ветвление истории диалога: регенерация ответа создаёт ветку, а не затирает предыдущий вариант
  • Загрузка файлов к сообщению и их учёт в контексте запроса
  • Единая авторизация через SSO с корректной обработкой истёкшего токена посреди стриминга
  • Рендер markdown с подсветкой кода, экспорт переписки, тёмная и светлая темы

Контекст

Продукт

Помощник встроен в экосистему платформы: пользователь заходит по единому логину и работает либо в обычном чате, либо в режиме шаблонов — заранее собранных сценариев под типовые задачи.

Шаблон отличается от простого промпта тем, что он ведёт пользователя: задаёт вопросы по шагам, умеет повторять блоки и выбирать следующий шаг по условию.

Задача

Задача

Ответ модели приходит долго. Ждать его целиком неприемлемо: без потоковой выдачи интерфейс кажется зависшим, а пользователь не понимает, работает ли запрос.

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

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

Решение

Решение

Ответ появляется по мере генерации, шаблоны ведут по шагам, а предыдущие варианты ответа сохраняются. Файлы прикладываются к сообщению, вход общий с платформой.

Результат

Результат

Помощник стал рабочим инструментом внутри платформы: шаблоны закрывают повторяющиеся задачи, стриминг снял ощущение зависшего интерфейса, а ветвление истории позволяет спокойно экспериментировать с формулировками.

Технически это самый интересный для меня проект из продуктовых: здесь пришлось работать с потоками, а не с привычным «запрос — ответ», и придумывать интерфейс для нелинейной истории диалога.

Интерфейс

Обезличенный чат с GPT-помощником под пометкой NDA

Связанные проекты