← На главную

Опубликовано

Vision в API за копейки: разбор DeepSeek V4-Flash-Vision-Exp и локальный стек, который делает то же самое

Автор: Гусев Николай [портфолио]

Темы: ai-agents, benchmarks, llm-api, local-models

**Сложность: **средняя

DeepSeek выпустила экспериментальную модель V4-Flash-Vision-Exp: та же дешёвая V4 Flash, но принимающая картинки. Разбираем, почему это догонялка, а не прорыв, и показываем рабочий стек из двух локальных моделей, который закрывает большинство задач вообще без облака.

Что именно выпустили

21 августа DeepSeek открыла на своём API экспериментальную модель deepseek-v4-flash-vision-exp. Работают конечные точки Chat Completions, Messages и Responses, в одном запросе можно смешивать текст и изображения: base64, внешняя ссылка или файл из нового Files API. Files API бесплатный: изображение загружается один раз, дальше в запросах фигурирует его file_id.

Текстовые возможности не изменились: компания прямо говорит, что по работе с текстом модель соответствует обычной V4 Flash. Заявленный прирост только в мультимодальных агентных тестах: новинка обходит обычную V4 Flash и приближается к Claude Opus 4.8, местами превосходит. Независимых прогонов нет, все цифры вендорские.

Тарификация по расценкам V4 Flash, картинка стоит не дороже 384 входных токенов. В пиковые часы вход от $0.014 до $0.44 за миллион токенов, выход $1.32, в непиковые вдвое дешевле. Цены копеечные даже на фоне остальных мультимодальных API.

Почему это не прорыв

Первое: это не открытие, а закрытие дыры в линейке. Нативная мультимодальность в API давно стандарт: OpenAI, Gemini, Anthropic, открытые Qwen-VL и GLM. У DeepSeek её как раз не было. Архитектурно это классический паттерн образца 2023 года: к готовой языковой модели через адаптер прикручен визуальный энкодер, тот же путь, что в LLaVA. Инженерно аккуратно, научно пусто.

Второе: модель не стала умнее. Она стала видеть, не думая лучше. Прирост существует только там, где задаче нужен взгляд. Это расширение входа, а не новый интеллект.

Третье: цифры вендорские. Бенчмарк мультимодальных агентов и реальный GUI-агент, который три раза подряд промахивается по кнопке, разные вещи. Проверять обещенное "почти Opus 4.8" предстоит на независимых задачах.

Почему нативное зрение чаще всего не нужно

Большинство картинок в реальных пайплайнах это текст, нарисованный пикселями: PDF, сканы, таблицы скриншотами, инвойсы. Для них vision-способности универсальной модели проигрывают специализированному OCR даже размером 0.8B параметров: универсалка ужата до тех самых 384 токенов на кадр, плотный документ она размажет. А после OCR задача вообще перестаёт быть vision-задачей: дальше работает обычная дешёвая текстовая модель.

Если от картинки нужно только описание, хватает маленькой локальной VL: бесплатно, приватно, данные не покидают машину. И экономика тоже за конвейер: картинку в контексте приходится переотправлять на каждом шаге агентной петли, а переведённый в текст результат кэшируется, ищется и переиспользуется.

Нативное зрение выигрывает в одном классе задач: GUI-агенты, решающие по пикселям. Координаты, расположение элементов, решение "куда кликнуть" в момент действия. Там пересказ картинки теряет детали, и никакой OCR не спасёт, потому что распознавать нечего, смотреть надо.

Наш стек: три роли вместо одной универсальной модели

Мы пользуемся связкой из двух локальных моделей и простого правила роутинга. OvisOCR2 (0.8B, квантованная, 530 MB веса плюс 205 MB визуальный энкодер) переписывает документы в Markdown. LFM2.5-VL-2.6B в LM Studio на игровой видеокарте описывает интерфейсы и фотографии. Облачная vision остаётся на случай, когда агент должен принимать решения по расположению элементов.

Правило роутинга тривиальное. Картинка это текст в графике: сначала OCR, потом работа с текстом. Важна компоновка, интерфейс, схема, фото: отдаём VL. Агент сам смотрит и действует по пикселям: вот единственный случай, где нужно нативное зрение в контексте.

Пайплайн 1: PDF и сканы в Markdown

Поднимаем чистый llama.cpp с Vulkan:

`llama-server.exe -m OvisOCR2-Q4_K_M.gguf \
  --mmproj mmproj-F16.gguf \
  --port 8017 -ngl 99 -c 8192 --temp 0.0`

Практическая грабля: vision-запросы через встроенный llama-server из комплекта LM Studio падают с ConnectionReset, нужен отдельно стоящий бинарник llama.cpp.

Страницы PDF рендерим в PNG на 300 dpi:

`import fitz

doc = fitz.open("document.pdf")
for i, page in enumerate(doc):
    page.get_pixmap(dpi=300).save(f"page_{i}.png")`

Дальше обычный OpenAI-совместимый запрос:

`import base64, requests

img = base64.b64encode(open("page_0.png", "rb").read()).decode()
prompt = ("Extract all readable content from the image in natural human "
          "reading order and output the result as a single Markdown "
          "document. Format formulas as LaTeX. Format tables as HTML. "
          "Preserve the original text without translation.")
r = requests.post("http://127.0.0.1:8017/v1/chat/completions", json={
    "messages": [{"role": "user", "content": [
        {"type": "image_url",
         "image_url": {"url": f"data:image/png;base64,{img}"}},
        {"type": "text", "text": prompt}]}],
    "max_tokens": 4096, "temperature": 0})
markdown = r.json()["choices"][0]["message"]["content"]`

Замеры на реальной документации: около 17 секунд на страницу, 2.7 GB RAM, видеопамять почти не занята. Заголовки, иерархия, таблицы и формулы выходят корректно. Полученный Markdown дальше уходит в текстовую модель: суммаризация, поиск по базе, ответы на вопросы. Ни одна из этих задач не требует vision в оркестраторе.

Пайплайн 2: документирование интерфейсов

Скриншоты веб-интерфейса это противоположный случай: там важно расположение, поэтому работает LFM2.5-VL-2.6B. Промпт простой:

`Опиши экран как раздел документации: для каждой зоны заголовок,
назначение, поля ввода и кнопки, порядок сверху вниз.
Только то, что видно на скриншоте.`

Результат сразу ложится в Markdown-документацию продукта, а дальше текстовой модели можно задавать любые вопросы по интерфейсу. Здесь текстовый ответ VL не баг, а фича: документация и есть текст. Потеря деталей по сравнению с картинкой в контексте для этой задачи несущественна, зато цена ноль и данные не выходят с машины.

Для сравнения: тот же скриншот через V4-Flash-Vision-Exp стоил бы до 384 токенов входа на каждый ход диалога. Не разорение, но и преимуществ нет, кроме сценария, где агенту надо самому целиться в элементы интерфейса.

Итог

Релиз DeepSeek это паритет с рынком, а не рывок: они научили дешёвую модель видеть, но не думать. Ценность есть ровно в одном сценарии: агентные петли, где решение принимается по картинке, по копеечной цене и без привязки к западным провайдерам.

Для всего остального достаточно конвейера: OCR превращает документы в текст, маленькая VL описывает интерфейсы, текстовая модель думает над текстом. Каждая модель делает то, для чего собрана, и ни одна не притворяется универсальной. Поэтому правильный вопрос не "кто из моделей умнее", а нужно ли агенту видеть, или ему достаточно описания.

Ссылки

Разбор релиза на vc.ru | Технические детали API на techno-news | Files API и контекст на applespbevent | Первоисточник анонса

**Подписывайся: **@hermesagentru