# SGLang 0.5.21: API решений, Rust-кеш префиксов и изменения совместимости

Источник: https://modelium.tech/zhurnal/sglang-0-5-21-decisions-rust-cache/

Стабильный SGLang 0.5.21 добавил HTTP-маршрут /v1/decisions для выбора, оценки и ответов да/нет по вероятностям токенов без генерации текста. В этом же релизе Rust-ядро кеша префиксов включено по умолчанию, а передаваемые клиентом шаблоны чата отклоняются без явного разрешения. Перед обновлением своего inference-сервера стоит проверить шаблоны, старые эндпоинты и настройки кеша.

SGLang выпустил стабильный v0.5.21 2 октября 2026 года. Это обновление программного сервера инференса, а не выпуск новых весов: модель нужно выбрать и получить отдельно, соблюдая её собственную лицензию. Код SGLang в закреплённом теге распространяется по Apache-2.0; лицензия сервера не меняет условия использования весов. [s1](#src-s1) [s2](#src-s2)

## Что получает собственный сервер

**Решения без генерации ответа.** В закреплённом коде версии есть `POST /v1/decisions`. Он принимает вход и вопросы типов `choice`, `score` или `yes_no`, затем оценивает следующие токены допустимых меток вместо генерации и разбора произвольного текста. Для каждого вопроса возвращаются вероятности по предложенным вариантам и `label_mass` — доля общей вероятности словаря, пришедшаяся на метки. Это полезно для локальной маршрутизации обращений или предварительной сортировки документов, когда важна фиксированная схема ответа. Маршрут является расширением SGLang, а не методом OpenAI API. [s1](#src-s1) [s3](#src-s3) [s4](#src-s4)

**Не всякая модель годится без проверки.** Документация требует, чтобы метки ответа были различимыми одиночными токенами в позиции ответа, а шаблон чата не оставлял открытый блок рассуждений. Авторы проверили Qwen3.8-27B и Qwen3.5-35B-A3B на H200 в BF16; это условия авторской валидации, **не минимальные требования к оборудованию**. Вероятности среди меток не являются откалиброванной вероятностью правильного решения: порог передачи человеку нужно проверять на собственном размеченном наборе. Для воспроизводимости запросов API возвращает версию формата промпта и позволяет её закрепить. Мы не проводили собственного теста качества или скорости. [s3](#src-s3)

**Кеш префиксов.** Объединённое radix-дерево теперь использует ядро на Rust по умолчанию. Для несовместимых конфигураций предусмотрен автоматический возврат к реализации на Python; при диагностике можно явно выбрать её через `SGLANG_UNIFIED_RADIX_TREE_CORE_BACKEND=python`. Это изменение реализации кеша, а не обещание универсального ускорения для любой модели и нагрузки. [s1](#src-s1) [s5](#src-s5)

## Что проверить перед обновлением

- Запросы к `/v1/chat/completions` и `/v1/tokenize`, которые присылают свой `chat_template` через `chat_template_kwargs`, теперь отклоняются по умолчанию. Запуск с `--trust-request-chat-template` возвращает доверие клиентскому шаблону; включать его стоит только для доверенных клиентов. Остальные параметры `chat_template_kwargs` не запрещены. [s1](#src-s1) [s4](#src-s4)

- Устаревшие `/get_weight_version`, `/weight_version` и `/get_load` удалены: используйте `/model_info` и `/v1/loads`. Старые имена некоторых переменных и алиасов квантизации также удалены — сравните свою конфигурацию со списком breaking changes релиза до перезапуска. [s1](#src-s1)

- Для FlashInfer MoE режим fused finalize теперь выключен по умолчанию ради численной точности; возможен компромисс по задержке отдельных W4A4-сценариев. Не переносите чужие замеры производительности на свой стек без измерения. [s1](#src-s1)

## Как попробовать без смешения лицензий

Официальный релиз указывает установку `uv pip install --prerelease=allow sglang==0.5.21`; пакет этой версии присутствует на PyPI. Для проверяемого эксперимента с Decisions API документация показывает локальный сервер `python -m sglang.launch_server --model-path Qwen/Qwen3.8-27B --host 127.0.0.1 --port 30000` и HTTP-запрос к `/v1/decisions`. Сначала сверяйте доступность и лицензию выбранных весов, поддержку вашей платформы и память на собственной конфигурации. Привязка к `127.0.0.1` ограничивает сетевой доступ к примеру; это не эквивалент аутентификации при переносе сервера в сеть. [s1](#src-s1) [s3](#src-s3) [s6](#src-s6)

Практический следующий шаг: на тестовом сервере зафиксировать версию SGLang и модели, прогнать типовые вопросы с собственными эталонными метками, сравнить ответы и время обработки до и после обновления и лишь затем менять production. Сами вероятности API не заменяют проверку ошибок классификации. [s3](#src-s3)

## Источники

1. [SGLang v0.5.21 — официальный GitHub release](https://github.com/sgl-project/sglang/releases/tag/v0.5.21) — получено 2026-10-05
2. [SGLang LICENSE в теге v0.5.21](https://raw.githubusercontent.com/sgl-project/sglang/v0.5.21/LICENSE) — получено 2026-10-05
3. [SGLang decision models, документация в теге v0.5.21](https://github.com/sgl-project/sglang/blob/v0.5.21/docs/docs/supported-models/decision_models.mdx) — получено 2026-10-05
4. [SGLang HTTP routes, pinned v0.5.21](https://github.com/sgl-project/sglang/blob/v0.5.21/python/sglang/srt/entrypoints/http_server.py) — получено 2026-10-05
5. [SGLang PR #39627 — Rust TreeCore default](https://github.com/sgl-project/sglang/pull/39627) — получено 2026-10-05
6. [sglang 0.5.21 — метаданные PyPI](https://pypi.org/project/sglang/0.5.21/) — получено 2026-10-05
