SGLang reasoning parser: как отделить рассуждение от ответа
На странице · 4 разделов
Если приложение показывает промежуточные рассуждения Qwen3 вместо ответа, сервер SGLang может разделить их парсером `qwen3`. Для конкретной Qwen3-0.6B проверяйте в ответе локального интерфейса (API) поля `reasoning_content` и `content` по отдельности. Путь ниже требует Linux, совместимой видеокарты NVIDIA (GPU) и подготовки Python; редакция сверила инструкцию с документацией, но не запускала модель.
Инженерный уровень, не домашний рецепт. Инструкция по документации SGLang на Git-ревизии
f3b5a28и карточке Qwen на ревизииc1899de; Modelium не устанавливал пакет, не загружал веса и не запускал модель. Нужны Linux, совместимая видеокарта NVIDIA (GPU) и CUDA 13-совместимый драйвер. Установка и первая загрузка весов требуют интернета; запрос к127.0.0.1локален, но офлайн-изоляция всего процесса здесь не проверялась. s2 s3 s5
Что вы получите?
Локальному приложению дали заметку: «В пятницу Анна принесёт черновик». Оно должно показать поручение и срок, а не промежуточные мысли модели. Reasoning parser — обработчик на сервере SGLang, который для совместимой модели отделяет такой промежуточный текст в reasoning_content от финального content. Это не проверка истинности ответа и не парсер вызова инструментов. В отличие от аналогичного режима vLLM, имя поля SGLang — именно reasoning_content, а не reasoning. s1 s4
Что подготовить перед запуском?
Этот один путь использует Linux, Python 3.12, uv и NVIDIA GPU с драйвером, совместимым с CUDA 13; установите uv по официальной инструкции проекта. Модель — Qwen/Qwen3-0.6B, а не произвольная Qwen. Её карточка прямо приводит команду SGLang с --reasoning-parser qwen3; лицензия репозитория — Apache 2.0, но при распространении прочтите сам текст лицензии и notices. s2 s5 s6
Документация не даёт одного достоверного минимального объёма RAM, VRAM и свободного диска для этой связки на любом компьютере. Размер файлов модели не равен требованиям к памяти во время работы: проверьте свой GPU и оставьте место под пакеты и веса, не полагаясь на число параметров 0.6B. Это не инструкция для обычного Windows или Mac; если сервер не запускается на вашем оборудовании, сначала пройдите базовый гайд SGLang. s2 s3 s5
Как увидеть два поля ответа?
- В терминале Linux после установки
uvсоздайте рабочую папку и последовательно выполнитеuv venv --python 3.12,source .venv/bin/activate,uv pip install --prerelease=allow sglang. Дождитесь завершения установки без ошибок. Это подтверждает установку пакета, не запуск модели. s2 s3 - В том же окружении выполните
sglang serve Qwen/Qwen3-0.6B --host 127.0.0.1 --port 30000 --reasoning-parser qwen3. Адрес оставляет HTTP-сервер доступным только на этом компьютере; при первом старте модель может скачиваться из Hugging Face. Дождитесь сообщенияThe server is fired up and ready to roll!. Команда из карточки модели подтверждает пару Qwen3-0.6B иqwen3; ограничение интерфейса127.0.0.1здесь добавлено редакцией для локальной проверки. s1 s3 s5 - Во втором терминале того же компьютера отправьте учебную заметку:
curl -sS http://127.0.0.1:30000/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"Qwen/Qwen3-0.6B","messages":[{"role":"user","content":"Заметка: В пятницу Анна принесёт черновик. Назови поручение и срок, не выдумывай дату."}],"max_tokens":512,"stream":false,"chat_template_kwargs":{"enable_thinking":true},"separate_reasoning":true}'. Это локальный запрос к OpenAI-совместимому интерфейсу SGLang, не к облачному OpenAI. s1 s3 s4 - В текстовом ответе JSON (данные с именованными полями) найдите
choices[0].message.content: там должен быть ответ про черновик Анны и пятницу, без придуманного числа месяца. Вchoices[0].message.reasoning_contentпроверяйте только наличие и отделение промежуточного текста; не копируйте его в пользовательский ответ. Эти слова — критерий сверки с нашей заметкой, а не будто бы полученный Modelium ответ модели. Парсер разделяет вывод; переключательenable_thinkingразрешает модели рассуждать, но сам парсер не заставляет её это делать. s1 s4 s5
Если рассуждение не отделилось
Сначала проверьте сообщение о готовности сервера и точный model в запросе. Затем — --reasoning-parser qwen3, chat_template_kwargs.enable_thinking=true и separate_reasoning=true: выключенный режим рассуждения, преждевременная остановка генерации или неподходящий парсер могут оставить поле пустым. Увеличение max_tokens — диагностический шаг, не гарантия появления текста. Не переносите сюда имя deepseek_r1 из vLLM: имена парсеров у серверов различаются. Для прекращения работы нажмите Ctrl+C в терминале сервера. s1 s3 s4
Если задача — просто получить ответ на домашнем компьютере без GPU-сервера и Python, эта инженерная конфигурация избыточна. Для первого шага откройте обычный запуск SGLang только если вам нужен этот сервер; промежуточные рассуждения не заменяют проверку фактов человеком. s1 s3
Источники
- SGLang Reasoning Parser: qwen3, separate_reasoning и поля ответа — revision f3b5a28f4315767261d439baf4705f2049d8871f. Получено 07.10.2026.
- SGLang Installation: Linux, NVIDIA, Python и uv — revision f3b5a28f4315767261d439baf4705f2049d8871f. Получено 07.10.2026.
- SGLang Quickstart: запуск и проверка локального API — revision f3b5a28f4315767261d439baf4705f2049d8871f. Получено 07.10.2026.
- SGLang Chat Completions: enable_thinking и Qwen3 — revision f3b5a28f4315767261d439baf4705f2049d8871f. Получено 07.10.2026.
- Qwen/Qwen3-0.6B: карточка автора и пример SGLang — revision c1899de289a04d12100db370d81485cdf75e47ca. Получено 07.10.2026.
- Qwen/Qwen3-0.6B: текст лицензии Apache 2.0 — revision c1899de289a04d12100db370d81485cdf75e47ca. Получено 07.10.2026.