AI / LLM Dev Tools

SSE-парсерПроверяйте доставленные события

Вставьте запись потока или откройте локальный UTF-8-файл. В список попадут только блоки, завершённые пустой строкой.

SSE-парсер

Входной поток SSE

Результат разбора

Список событий

Пока нет отправленных событий.

Вставленный текст и локальные файлы обрабатываются в браузере. Сетевые запросы не отправляются.

Ввод изменён. Повторите разбор перед экспортом.

Если в журнале есть последняя строка data, но клиент не получил событие, проверьте пустую строку в конце. SSE-парсер показывает реальные границы отправки и незавершённый блок.

Этот разбор Server-Sent Events работает с сохранённой записью. Парсинг SSE-потока не требует повторного соединения; исходный текст остаётся рядом с необязательным просмотром JSON.

Зачем использовать SSE-парсер?

Отделите события протокола от догадок о соединении.

Найдите блок без отправки

SSE-парсер считает границей пустую строку. Один перевод строки в конце файла не отправляет событие; диагностика показывает начальную строку оставшегося блока.

Завершённые блоки переходят в карточки событий, а последний блок без пустой строки остаётся вне списка.

Сравните текст и JSON

Исходные data сохраняются. Для корректного JSON появляется читаемый вид; [DONE] остаётся текстом, а ошибка в JSON-подобных данных не удаляет SSE-событие.

У выбранного события рядом показаны исходные data и структура JSON, а текстовый маркер остаётся отдельным.

Проследите запись без изменения данных

01

Выберите источник

Откройте файл UTF-8 или примеры обычного, ИИ и пограничного потока. Перед заменой видны старые и новые числа строк и байт; после применения доступна одна отмена.

02

Выберите момент запуска

Авторазбор ждёт 350 мс после правки. Отключите его для кнопки или Ctrl/Cmd+Enter. При изменении ввода экспорт старого результата сразу блокируется.

03

Проверьте объём экспорта

Список показывает ещё по 50 событий за раз. Фильтр типа действует только на экран; JSON-массив и NDJSON содержат все отправленные события.

Разберите поля и полезную нагрузку

Границы по спецификации

SSE-парсер принимает LF, CRLF и CR, соединяет несколько строк data через LF и не создаёт событие из блока без data.

История id и retry

id наследуется следующими событиями, пока пустое id его не сбросит. Только цифры ASCII меняют retry; ошибочные значения попадают в диагностику.

Текст не обязан быть JSON

Обычные строки допустимы в data. JSON-подобная ошибка отмечается отдельно и не уничтожает само событие.

Полный экспорт

Скопируйте или скачайте массив JSON либо NDJSON. Фильтр на экране не сокращает набор экспортируемых событий.

Границы проверки сохранённого потока

Нет соединения с сервером
SSE-парсер читает лишь вставку и локальный файл. Он не передаёт заголовки, не обходит CORS и не доказывает успешное переподключение.
Нужна завершающая пустая строка
Блок без неё отбрасывается даже при наличии data. Инструмент сообщает строку начала, но не исправляет поток автоматически.
[DONE] — обычный текст
Маркер не является универсальной командой завершения SSE. Ошибка необязательного JSON-просмотра не отменяет событие.
Не более 2 МиБ
Некорректный UTF-8 и слишком большие файлы отклоняются целиком, без частичной выдачи. Разделите большой журнал.
Нет сборки ответа модели
Инструмент не объединяет дельты OpenAI и Anthropic, не создаёт поток, не чинит строки и не выполняет JSONPath-запросы.

Вопросы про SSE-парсер

Почему мой парсер JSON выбрасывает исключение на последней строке потока?

Последняя data может содержать обычный текст вроде [DONE], а не JSON. Здесь событие остаётся видимым; JSON-проверка сообщается отдельно.

Можно ли использовать браузерный EventSource для потоковой передачи в стиле OpenAI?

EventSource принимает SSE, но формат полей ответа зависит от API. Эта страница читает сохранённый поток и не создаёт подключение к OpenAI.

Чем SSE отличается от формата событий конкретного LLM API?

SSE задаёт границы и поля event, data, id, retry. Схема токенов внутри data принадлежит конкретному API; SSE-парсер не собирает ответ модели.

Обязателен ли маркер [DONE] в LLM-стриминге?

Нет. Это соглашение некоторых API, а не правило SSE. Парсер трактует [DONE] как обычный текст и продолжает читать следующие блоки.

Что делать, если SSE-соединение оборвалось после нескольких токенов?

Здесь можно проверить последнюю записанную id, retry и незавершённый блок. Причину разрыва или поведение сервера следует изучать в настоящем клиенте и сетевых журналах.

Не нашли ответ?

Откройте следующую запись в SSE-парсер

Начните с примера незавершённого блока, затем сравните event, id, retry и data в своём журнале.

Разбор целиком выполняется в браузере.