Заглавная карточка: вызов инструментов в DeepSeek V4.1 Flash появился в vLLM — теги с пробелами сломали детектор V4
Engineering & Research

DeepSeek V4.1 Flash: вызов инструментов появился в vLLM — что сломали теги с пробелами

Автор

Rowan Sterling

Дата публикации

Новые модели · 20Все модели
Бенчмарки: Artificial Analysis · обновляется ежедневно
Назад ко всем статьям

DeepSeek V4.1 Flash находится в общем доступе с 10 сентября 2026 года, и в первые двенадцать дней своего существования у модели был пробел, о котором никто не писал: она умела рассуждать, могла видеть изображения, могла удерживать миллион токенов контекста — и не могла надёжно вызывать инструмент через наиболее широко используемый открытый стек обслуживания. Теперь этот пробел закрыт в vLLM — не с помощью флага конфигурации, а путём переписывания парсера. Два пул-реквеста содержат эту работу, и самое интересное — это причина, по которой они понадобились.

Коротко: DeepSeek V4.1 Flash выдаёт свои вызовы инструментов в формате тегов, который существующий детектор DeepSeek V4 не распознаёт, поэтому при стандартном развёртывании vLLM разметка вызова инструмента поступает как обычный текст, а не как структурированный вывод. Никаких ошибок не возникает. Модель выглядит так, будто она просто отказалась вызывать функцию. Если вы тестировали агентные циклы с самостоятельно размещённым DeepSeek V4.1 Flash и приходили к выводу, что модель плохо работает с инструментами, весьма вероятно, что вы смотрели именно на это.

Что на самом деле изменилось в стеке обслуживания

Парсинг вызовов инструментов vLLM для моделей DeepSeek уже некоторое время находится в двух местах: во фронтенде на Python и в более новом фронтенде на Rust, а работа на уровне грамматики делегирована проекту XGrammar. Чтобы добавить поддержку V4.1 Flash, потребовалось портировать C++ deepseek_xml-преобразование внутри XGrammar в построитель на Rust, а затем подключить собственную кодировку модели в каталог токенизатора vLLM.

• Работа над Rust-фронтендом — это PR #56235, который переносит преобразование XGrammar C++ deepseek_xml в Rust-сборщик. В него входят 18 новых тестов специально для V4.1, а все существующие наборы тестов — 472 теста в vllm-parser и 326 в vllm-chat — остаются зелёными.

• Работа над фронтендом на Python — это PR #56408, который всё ещё находится в статусе черновика. Она зависит от того, что сначала будет принято изменение в вышестоящем XGrammar (mlc-ai/xgrammar#885), и, согласно отчётам, при применении этой зависимости проходят 110 тестов.

• Новый модуль кодирования — это vllm/tokenizers/deepseek_v41_encoding.py — отдельный файл, а не ветка внутри кодирования V4, что говорит о том, что грамматика тегов действительно отличается, а не просто расширяется.

• Вызов задан явно: --tool-parser deepseek_v41. Не существует резервного механизма автоопределения, который бы незаметно делал всё правильно.

Теги с пробелами — вот и вся история.

Причина, по которой вместо расширенного регулярного выражения появился новый парсер, — это пробелы. DeepSeek V4.1 Flash записывает свои инструментальные теги DSML с пробелами между токенами. Шаблон детектора V4 рассчитан на форму без пробелов, поэтому совпадение не находится, а неудачное совпадение в парсере вызовов инструментов по замыслу происходит молча — текст передаётся дальше как содержимое, а не вызывает ошибку.

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

Это также означает, что исправление — не ручка настройки. Нельзя решить проблему одними промптами, если детектор не соответствует формату вывода вашей модели, и нельзя исправить это на стороне клиента постобработкой, потому что к моменту, когда текст доходит до вашего клиента, структура уже потеряна. Это должно происходить в стеке обслуживания — и именно там это теперь и находится.

Почему для V4.1 Flash это важнее, чем для V4

Вызов инструментов — не просто приятное дополнение для этой конкретной модели. DeepSeek V4.1 Flash — это модель смеси экспертов с 552 миллиардами параметров, из которых 8 миллиардов активны на входе и 16 миллиардов — на выходе, с контекстным окном в 1 млн токенов и максимальным объёмом вывода в 384 тыс. токенов. Распределение активаций говорит само за себя: модель создана для того, чтобы принимать большой объём входных данных — репозиторий, набор документов, длинную трассировку вызовов инструментов — и выдавать длинный структурированный ответ. Это форма агента, а не форма чата.

Остальная часть спецификации запуска указывает в том же направлении. Веса под лицензией MIT, 890 байт KV-кэша на токен, 45 триллионов токенов предобучения, нативное зрение. Показатель KV-кэша — именно тот, что важен с операционной точки зрения при контексте 1M: он делает длинный транскрипт агента достаточно дешёвым, чтобы держать его резидентным, и именно поэтому модель выглядит убедительно в роли дешёвого исполнителя в цикле, который курирует более дорогая модель.

Single-model scoreboard for DeepSeek V4.1 Flash: 552B total parameters in a mixture-of-experts design with 8B active on input and 16B on output, 1M-token context window, 384K max output, $0.15 input and $0.60 output per 1M tokens off-peak, and an 890-byte KV cache per token, footnoted as specs from DeepSeek's own release page with no independent tool-calling score yet

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

Screenshot of DeepSeek's own release page for DeepSeek-V4.1-Flash dated 2026/09/10, showing the 552B-parameter MoE architecture with 8B active for input and 16B for output, a KV-cache memory-reduction graphic, and DeepSeek's own four-benchmark comparison chart

Что всё ещё открыто?

Честное положение дел по состоянию на 22 сентября 2026 года:

• Путь фронтенда на Rust (PR #56235) — это тот, который имеет полное тестовое покрытие как для новых случаев V4.1, так и для ранее существовавших наборов тестов. Если вы используете сборку vLLM, которая включает его, парсер доступен вам уже сегодня.

• Путь через Python-фронтенд (PR #56408) — это черновик, и у него есть внешняя зависимость. Если вы зафиксированы на сборке, которая предшествует изменению XGrammar, Python-фронтенд пока не предоставит вам парсинг инструментов V4.1.

• Поскольку вызов является явным, развёртывание, которое обновляет vLLM, но не меняет свои флаги запуска, сохранит старое поведение. Существование парсера и использование парсера — это две разные вещи.

Пока нет публичных доказательств того, что независимый бенчмарк вызова инструментов запускался для V4.1 Flash с новым парсером. Нам известно, что инфраструктура работает и тесты проходят. Хорошо ли модель вызывает инструменты — это отдельный вопрос, на который слияние не отвечает.

За последний пункт стоит держаться. Исправление парсера переводит модель из состояния «не может быть оценена» в состояние «может быть оценена». Это предпосылка для вердикта, а не сам вердикт.

Если вы не хотите самостоятельно запускать стек обслуживания

Есть более короткий путь. DeepSeek V4.1 Flash доступен через эндпоинт OrcaRouter для него, а значит, поведение вызова инструментов приходит как обычный вызов API, а не как проблема сборки — не нужно подбирать версию XGrammar, не нужно выбирать фронтенд, не нужно запоминать флаг запуска. Причина, по которой это важно именно здесь, в том, что исправление попало в два места с разной степенью зрелости, а хостируемый эндпоинт сводит этот выбор на нет.

Тот же ключ также обеспечивает доступ к остальным моделям, с которыми вы будете сравнивать, и это полезное свойство, когда вопрос стоит не «правильно ли работает этот парсер», а «достаточно ли эта модель хороша для моего цикла». Вы можете поставить DeepSeek V4.1 Flash за правило маршрутизации в качестве дешёвого исполнителя и переключаться на более сильную модель при сбое вызова — без второго контракта или второго SDK. Попытка использовать модель, поддержке вызова инструментов в которой всего две недели, — это ровно та ситуация, для которой существует автоматическое переключение при сбое.

Screenshot of the OrcaRouter model page for deepseek/deepseek-v4.1-flash, showing the model id with a Featured badge, 1M-token context, 384K max output, text and image input, $0.15 input and $0.60 output per 1M tokens, a cache read rate of $0.003, and observed time to first token of 2.63 s at p50 and 9.05 s at p95

Что посмотреть дальше

Три вещи превратили бы это из истории о сантехнике в вердикт:

• PR #56408 выходит из черновика, что сделает путь Python-фронтенда реальным и положит конец ситуации с двухуровневой поддержкой.

• Независимая оценка агента или вызова инструментов, проведённая для V4.1 Flash на фиксированном стеке обслуживания. Модель вышла двенадцать дней назад, а парсер пригоден для использования меньше этого срока, так что любой показатель вызова инструментов, который вам сейчас приводят для неё, стоит уточнять — настройка значит не меньше, чем сама модель.

• Последуют ли за этим другие сервинг-стеки. Именно у vLLM есть публичные PR; проблема тегов с пробелами не специфична для vLLM, поэтому любой стек, который принял детектор версии V4, не перепроверив его по выходным данным V4.1, несёт в себе тот же самый тихий отказ.

Пока не появится первый из них, точная сводка остаётся узкой, и её стоит сформулировать прямо: DeepSeek V4.1 Flash — это GA-модель с весами MIT, контекстом 1M и потолком вывода 384K, а её вызов инструментов теперь работает на Rust-пути в vLLM с явным флагом парсера. Это реальный шаг, но пока ещё не результат.

Сравнение в этой статье1

Определено по этой статье · Бенчмарки: Artificial Analysis · обновляется ежедневно