Перейти к содержанию
modelium.
Начать с задачи
←

SGLang reasoning parser: как отделить рассуждение от ответа

Если приложение показывает промежуточные рассуждения 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

Как увидеть два поля ответа?

  1. В терминале Linux после установки uv создайте рабочую папку и последовательно выполните uv venv --python 3.12, source .venv/bin/activate, uv pip install --prerelease=allow sglang. Дождитесь завершения установки без ошибок. Это подтверждает установку пакета, не запуск модели. s2 s3
  2. В том же окружении выполните 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
  3. Во втором терминале того же компьютера отправьте учебную заметку: 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
  4. В текстовом ответе 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

Источники

  1. SGLang Reasoning Parser: qwen3, separate_reasoning и поля ответа — revision f3b5a28f4315767261d439baf4705f2049d8871f. Получено 07.10.2026.
  2. SGLang Installation: Linux, NVIDIA, Python и uv — revision f3b5a28f4315767261d439baf4705f2049d8871f. Получено 07.10.2026.
  3. SGLang Quickstart: запуск и проверка локального API — revision f3b5a28f4315767261d439baf4705f2049d8871f. Получено 07.10.2026.
  4. SGLang Chat Completions: enable_thinking и Qwen3 — revision f3b5a28f4315767261d439baf4705f2049d8871f. Получено 07.10.2026.
  5. Qwen/Qwen3-0.6B: карточка автора и пример SGLang — revision c1899de289a04d12100db370d81485cdf75e47ca. Получено 07.10.2026.
  6. Qwen/Qwen3-0.6B: текст лицензии Apache 2.0 — revision c1899de289a04d12100db370d81485cdf75e47ca. Получено 07.10.2026.