Код, интерфейсы и трафик без воды
lawebbox

Обновление Vercel AI SDK 3.3: нативная потоковая передача JSON без ошибок парсинга

SDK от Vercel, по сообщению компании, добавил нативную потоковую передачу структурированных данных.

Максим Воронцов, Хардкорный бэкендер и девопс · обновлено 02 августа 2026 г.

Обновление Vercel AI SDK 3.3: нативная потоковая передача JSON без ошибок парсинга

блога Vercel, релизнулся AI SDK 3.3 с поддержкой потоковой передачи структурированных данных. Если вы хоть раз в три часа ночи разбирали логи, почему парсер упал на полпути и оставил UI в невалидном состоянии — это ваш апдейт. Если не разбирали — найдите того, кто разбирал, и пожмите ему руку. Человек заслужил.

Что именно починили

Раньше стандартная схема была болью. Провайдер отдаёт токены по сети, фронт собирает их по кусочкам, фронт страдает. Модель вставляет лишнюю запятую или пропускает закрывающую скобку — привет, пустой UI, exception в консоли, тимлид в мессенджере с вопросом «ну что там». SDK от Vercel, по сообщению компании, добавил нативную потоковую передачу структурированных данных. JSON летит инкрементально, с валидацией схемы на каждом шаге. Никакой магии — просто нормальный контракт между клиентом и моделью, которого не хватало с момента появления публичных LLM-API. Слой ручного склеивания чанков уходит в прошлое, а вместе с ним — десяток самописных обёрток, которые все давно хотели выкинуть, но боялись сломать прод.

Где раньше стоял костыль

Список типичных грабель, под которые теперь можно ставить пометку deprecated:

— ручной парсер обрезанного JSON в React-компоненте, падающий на каждом втором ответе модели;

— обёртка над zod-to-json-schema, прибитая гвоздями к конкретному провайдеру;

— клиентский setState после каждого чанка, ловящий гонку состояний и роняющий React DevTools намертво;

— отдельный endpoint на бэке, дожидающийся полного ответа LLM и только потом отдающий результат — потому что стримить невалидный JSON в прод было страшно.

Всё это теперь кандидаты на удаление. Или хотя бы на перенос в отдельный репозиторий, чтобы через полгода никто случайно не поднял из мёртвых.

Что делать перед апгрейдом

Перед тем как втыкать новую зависимость, пройдитесь по точкам:

— Node.js 20 и выше. На 18-м стриминг структурированных данных ведёт себя непредсказуемо — проверено не одним инцидентом.

— Проверьте поддержку вашим провайдером. OpenAI, Anthropic и Google обновляют совместимость вразнобой, не факт, что все из коробки.

— Если уже есть zod-схема — она подсовывается SDK напрямую, без адаптеров и переходников.

— Старые клиентские парсеры удаляйте явно, а не оставляйте мёртвым кодом до следующего ночного дебага.

Команды терминала — базовый минимум: npm install ai@latest, апгрейд провайдерского пакета, удаление partial-json и самописного парсера, отдельная ветка с понятным именем, без слёр-магии в main.

После установки — тестовый прогон под реальной нагрузкой, а не на синтетических трёх запросах. И бэкапы. Серьёзно. Бэкапы. Снапшот стейбла перед апгрейдом — это не перестраховка, это гигиена. Если его до сих пор нет — закройте терминал и идите делать. Остальное подождёт.