Vercel выпустил Remend: npm-пакет для восстановления битой Markdown-разметки при стриминге
При потоковой генерации текста нейросетями Markdown-разметка часто передаётся не полностью: открытые теги могут остаться без закрытия, списки обрываются, а ссылки теряют структуру. Это приводит к тому, что на экране пользователя отображается «сырая» разметка или ломается вёрстка. Vercel решил эту пр

При потоковой генерации текста нейросетями Markdown-разметка часто передаётся не полностью: открытые теги могут остаться без закрытия, списки обрываются, а ссылки теряют структуру. Это приводит к тому, что на экране пользователя отображается «сырая» разметка или ломается вёрстка. Vercel решил эту проблему, выпустив Remend — отдельный npm-пакет, который автоматически достраивает незавершённые Markdown-блоки. Библиотека работает как предпроцессор перед любым рендерером, обеспечивая плавный пользовательский опыт даже при неполном потоке данных.
Remend: как работает автоматическое восстановление Markdown
Remend — это standalone-библиотека, которая анализирует потоково поступающий Markdown и на лету закрывает незавершённые конструкции. Например, если AI-модель сгенерировала только начало кодового блока с тройными обратными кавычками, Remend добавит закрывающие кавычки, чтобы предотвратить поломку рендеринга. Аналогично обрабатываются полужирное начертание, курсив, ссылки и списки.
Библиотека работает как предпроцессор перед любым Markdown-рендерером. Пользователь может интегрировать её в приложение командой npm i remend и затем передавать через неё потоковый текст. Когда настоящие закрывающие маркеры приходят с последующими токенами, Remend корректно обновляет уже отображённый контент, обеспечивая плавный пользовательский опыт. Это особенно важно для AI-ассистентов, где каждая миллисекунда задержки влияет на восприятие.
Какие типы ошибок исправляет Remend?
Remend автоматически обрабатывает несколько классов проблем. Во-первых, незакрытые кодовые блоки: если модель начала блок с , но ещё не отправила закрывающие кавычки, библиотека добавляет их временно, а затем убирает, когда приходит настоящий закрывающий маркер. Во-вторых, неполные выделения: например, жирный текст без закрывающих звёздочек. В-третьих, оборванные ссылки и списки. Кроме того, Remend корректно обрабатывает сложные краевые случаи: математические выражения с подчёркиваниями в LaTeX, коды продуктов и имена переменных, содержащие звёздочки или подчёркивания, а также вложенные скобки в ссылках.
Как Remend избегает ложных срабатываний?
Разработчики Vercel внедрили в Remend интеллектуальные правила, чтобы не ломать валидную разметку. Например, библиотека отличает настоящий незакрытый маркер от ситуации, когда символ или является частью переменной (как в somevar). Для этого Remend анализирует контекст: если символ окружён буквами и не является частью пары, он не считается разметкой. Также обрабатываются вложенные конструкции: если внутри ссылки есть форматирование, Remend дожидается закрытия всех уровней. Это позволяет избежать ложных срабатываний, которые могли бы испортить корректно сгенерированный контент.
Предыстория и контекст
Проблема битой разметки при стриминге стала особенно острой с ростом популярности AI-ассистентов и чат-ботов, которые генерируют ответы токен за токеном. Такие модели, как GPT-4 и Claude, часто выдают Markdown частями, что приводит к временным артефактам. Ранее Vercel уже решал эту задачу внутри своего продукта Streamdown — библиотеки для стриминга Markdown. Теперь Remend выделен в отдельный пакет, чтобы им могли пользоваться все разработчики, независимо от стека. Это делает его универсальным инструментом для любого проекта, работающего с потоковым Markdown.
Кого затронет и как
Remend в первую очередь полезен разработчикам AI-приложений, чат-ботов и инструментов для генерации контента. Если ваше приложение выводит потоковый Markdown от нейросети, библиотека избавит от визуальных багов и улучшит пользовательский опыт. Для конечных пользователей это означает более чистый и читаемый вывод без «сырой» разметки. В российском контексте Remend может быть интегрирован в сервисы на базе YandexGPT или других локальных моделей, работающих с потоковым выводом. Простота установки через npm делает его доступным для любого разработчика.
Что будет дальше
Remend уже доступен в npm и может быть установлен командой npm i remend. Vercel продолжит развивать библиотеку: на сайте проекта указано, что Remend прошёл боевое тестирование в production AI-приложениях. В будущем ожидается поддержка дополнительных типов разметки и улучшение производительности для больших потоков данных. Разработчики могут следить за обновлениями в репозитории на GitHub. Это открывает возможности для сообщества вносить свой вклад и адаптировать библиотеку под специфические нужды.
Итог
Remend от Vercel решает насущную проблему битой Markdown-разметки при стриминге, делая вывод AI-моделей более стабильным и удобным для восприятия. Библиотека проста в интеграции и подходит для любого стека, что делает её ценным инструментом для разработчиков современных AI-интерфейсов. Если вы создаёте чат-бота или инструмент генерации контента, Remend поможет избежать визуальных артефактов и улучшить впечатления пользователей.