Отладка AI-стриминга

Я потратил три недели на создание интерфейса чата с AI. Я хотел плавный поток слов, а получил обрывы соединений и незаконченные предложения.

Мое приложение использовало FastAPI и React. Короткие ответы работали. Длинные ответы обрывались на полуслове. Сервер переставал отправлять данные.

Я пытался это исправить. Увеличил таймаут — не помогло. Добавил цикл повторных попыток — это привело к дублированию слов.

Проблема была в парсере. AI API отправляет строки данных. Мой код закрывал соединение слишком рано. Он не дожидался сигнала об окончании.

Вот решение:

  • Используйте aiter_bytes вместо aiter_lines.
  • Управляйте буфером строк вручную.
  • Ищите сигнал [DONE], чтобы остановиться.

Затем мой UI завис. Сервер отправлял по 50 чанков в секунду. React не справлялся. Я добавил небольшую задержку на сервере, чтобы ограничить скорость передачи данных (throttle).

Уроки для вас:

  • Сначала изучите спецификацию стриминга.
  • Не считайте пустую строку признаком окончания.
  • Используйте библиотеку для парсинга SSE.
  • Отслеживайте количество чанков и задержки.

Стриминг — штука запутанная. У него есть свои причуды. Никогда не полагайтесь на то, что поток завершится корректно сам по себе.

Какой ваш самый странный баг со стримингом?

Источник: https://dev.to/__c1b9e06dc90a7e0a676b/debugging-ai-streaming-a-tale-of-chunks-and-timeouts-1p6m Дополнительное обучающее сообщество: https://t.me/GyaanSetuAi