vLLM reasoning parser: как отделить рассуждение от ответа
На странице · 4 разделов
Если приложение показывает внутреннее рассуждение модели вместо ответа, reasoning parser vLLM помогает разделить эти части. Для DeepSeek-R1-Distill-Qwen-1.5B в документации указан `deepseek_r1`: после запуска проверяйте `choices[0].message.reasoning` и `choices[0].message.content` отдельно. Старое имя `reasoning_content` уже заменено на `reasoning`; этот инженерный пример не проверен запуском Modelium.
Уровень: инженерный, не домашний рецепт. Ниже путь для Linux с совместимой NVIDIA CUDA-видеокартой и установленным
uv. Команды сверены с документацией vLLM на Git-ревизииa5105dbи карточкой весов DeepSeek на ревизииad9f0ae; Modelium не устанавливал пакет, не загружал веса и не запускал модель. Скачивание пакета и весов требует сети; локальный запрос после подготовки идёт на127.0.0.1, но это само по себе не доказательство полной офлайн-изоляции. s1 s2 s5
Что получится и зачем нужен парсер?
Представьте локального помощника: ему дали заметку «Встреча в пятницу; Анна принесёт черновик» и попросили назвать поручение. Приложение должно показать короткий ответ пользователю, а не промежуточные размышления модели. Reasoning parser — функция сервера vLLM, которая разбирает специальный формат вывода поддерживаемой модели на два поля: reasoning для промежуточных шагов и content для финального ответа. Это разбор текста модели, а не проверка истинности её выводов. s1
В старых примерах встречается reasoning_content. В документации на указанной ревизии оно переименовано в reasoning. Если клиент по привычке читает старое имя, он может показать пустое поле, хотя модель вернула рассуждение. Исправить нужно и код клиента, а не только сервер. s1
Что нужно подготовить?
Нужен Linux, Python 3.10–3.13 и NVIDIA GPU с CUDA compute capability не ниже 7.5; отдельно проверьте совместимость драйвера с выбранными колёсами PyTorch/CUDA. Установите uv по его официальной инструкции, если ещё не установлен. Пример использует конкретный репозиторий deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B, а не любую модель с названием DeepSeek. Авторы публикуют эти веса с MIT-лицензией и отдельно отмечают происхождение от Qwen2.5; условия исходной модели тоже следует читать перед повторным распространением. s2 s3 s4 s5
Документация этой пары не даёт универсального минимального объёма RAM, VRAM и свободного диска: он зависит от сборки, формата весов, длины контекста и других расходов памяти. Не выводите объём видеопамяти из «1.5B» или размера файла. Сначала убедитесь, что базовый сервер vLLM для вашего GPU стартует; при нехватке памяти этот гайд не обещает исправления одной опцией. Windows без Linux/WSL и Mac здесь не рассматриваются. s2 s3 s4
Как запустить один проверяемый путь?
- В терминале Linux установите
uvпо его документации, затем в отдельной рабочей папке выполнитеuv venv --python 3.12 --seed,source .venv/bin/activateиuv pip install vllm --torch-backend=auto. Дождитесь завершения установки без ошибок;uvдолжен подобрать совместимый вариант PyTorch по CUDA-драйверу. Это установка пакетов, а не проверка запуска модели. s2 s4 - В этом окружении запустите
vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --reasoning-parser deepseek_r1 --host 127.0.0.1. Именно эту пару модели и имени парсера даёт vLLM. Дождитесь сообщения о готовности сервера; первый запуск может загрузить веса через сеть. Адрес127.0.0.1ограничивает прослушивание текущим компьютером, но локальная программа с доступом к порту всё равно может обращаться к API. Не вставляйте сюдаqwen3илиgemma4только потому, что они встречаются в списке поддерживаемых парсеров. s1 s2 - Во втором терминале на том же компьютере откройте
http://127.0.0.1:8000/v1/modelsв браузере: в ответе JSON должна появиться загруженная модель. Если страницы нет, вернитесь к логу сервера; пока API не отвечает, разбор рассуждения тестировать рано. Список моделей подтверждает готовность API, но не генерацию ответа. s2 - Для учебного запроса выполните
curl -sS http://127.0.0.1:8000/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B","messages":[{"role":"user","content":"Заметка: Встреча в пятницу; Анна принесёт черновик. Назови поручение и срок, не придумывай дату."}],"stream":false}'. В полученном JSON проверьте отдельноchoices[0].message.content(ожидается поручение Анны принести черновик к пятнице без выдуманной даты) иchoices[0].message.reasoning(может содержать промежуточный текст). Ожидаемое содержание — критерий сверки, а не якобы фактический ответ модели у Modelium. Если вывод обрывается до окончания рассуждения, повторите тест с достаточным бюджетом генерации и проверьтеfinish_reason; пустое поле не всегда означает неверный парсер. s1 s2
Если два поля не появились
Проверьте точное имя репозитория, успешную загрузку весов, лог сервера и соответствие --reasoning-parser deepseek_r1 модели. Затем посмотрите сырой JSON: не читайте reasoning_content из старого примера. Рассуждение доступно для поддерживаемых моделей в chat endpoint; произвольная модель или выключенный ею режим рассуждения не обязаны давать непустой reasoning. Если content сомнителен, сверьте поручение и срок с исходной заметкой — парсер не исправляет фактические ошибки. s1 s2
Не публикуйте сырые промежуточные рассуждения в пользовательском интерфейсе без отдельного решения о приватности. Для первого запуска и проверки доступности сервера откройте базовый гайд vLLM; разделение рассуждения — следующий шаг для уже работающего локального API. s1
Источники
- vLLM Reasoning Outputs — поля, поддерживаемые парсеры и пример DeepSeek — revision a5105dba05616d74dde5d40267fc500a4422b3db. Получено 07.10.2026.
- vLLM Quickstart — установка uv, запуск и локальный chat API — revision a5105dba05616d74dde5d40267fc500a4422b3db. Получено 07.10.2026.
- vLLM GPU installation — ОС и версия Python — revision a5105dba05616d74dde5d40267fc500a4422b3db. Получено 07.10.2026.
- vLLM NVIDIA CUDA — требования GPU и отдельное окружение — revision a5105dba05616d74dde5d40267fc500a4422b3db. Получено 07.10.2026.
- DeepSeek-R1-Distill-Qwen-1.5B — карточка автора — revision ad9f0ae0864d7fbcd1cd905e3c6c5b069cc8b562. Получено 07.10.2026.