заметка · 28.10.2026

Почему DeepSeek ломал Vane

DeepSeek не принимает response_format json_schema — только json_object. Как это ломало Vane и чем закончилось.

Vane использовал DeepSeek через OpenAI-совместимый API. Простые запросы работали, но как только включался research-режим, интерфейс зависал. В логах — тишина, в браузере — вечное «думает».

Что оказалось

Vane генерирует поисковые запросы через AI SDK generateObject. Тот отправляет response_format: {type: "json_schema"} с полной схемой. DeepSeek поддерживает только json_object и отвечает 400 This response_format type is unavailable now. Ошибка проглатывалась внутри стрима, поэтому наружу не выходило ничего.

Проверил напрямую: json_object — 200 для обеих моделей, json_schema — 400 и для Flash, и для Pro. То есть проблема не в модели и не в сети, а в формате ответа.

Что сделал

Патч внутри контейнера: в двух чанках заменил генерацию схемы на json_object и добавил mode: "json" в вызовы generateObject. После рестарта /api/chat стал отвечать за 3–6 секунд.

Патч живёт в слое контейнера и исчезает при обновлении образа. Поэтому рядом лежит скрипт-повторитель, а Vane остаётся лабораторным полигоном, а не семейным сервисом: авторизации там нет.

Вывод

OpenAI-совместимый API не означает «всё как у OpenAI». Если модель не поддерживает часть параметров, ошибка может уйти в стрим и выглядеть как зависание. Проверять такие вещи нужно прямым запросом к /v1/chat/completions, а не только через UI.