For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://docs.nvidia.com/dynamo/llms.txt. For full content including API reference and SDK examples, see https://docs.nvidia.com/dynamo/llms-full.txt.
Процессор чата SGLang
Процессор чата SGLang включает нативные для SGLang этапы предварительной и последующей обработки во frontend Dynamo. Он напрямую использует токенизатор, шаблоны чата, парсер вызовов инструментов и парсер рассуждений SGLang, обходя стандартный препроцессор Rust для запросов v1/chat/completions.
Когда использовать
Используйте --dyn-chat-processor sglang, когда встроенный Rust-препроцессор Dynamo еще не поддерживает нужный вам парсер вызовов инструментов или парсер рассуждений. Процессор SGLang передает обработку Python-реализациям SGLang, поэтому сразу работает любой поддерживаемый SGLang парсер.
Типичные случаи:
- Формат вызова инструмента, которого еще нет в библиотеке Rust
tool_calling - Парсер рассуждений, который пока не поддерживается нативно
- Шаблон чата, который Rust-препроцессор обрабатывает некорректно
Если нужного вам парсера нет в Rust-препроцессоре, рассмотрите возможность открыть issue или PR, чтобы добавить нативную поддержку -- нативные парсеры полностью избегают накладных расходов Python GIL.
Быстрый старт
# Frontend с процессором SGLang, tool calling и reasoning
python -m dynamo.frontend \
--router-mode kv \
--dyn-chat-processor sglang \
--tool-call-parser hermes \
--reasoning-parser qwen3
# Workers (без изменений)
CUDA_VISIBLE_DEVICES=0 python -m dynamo.sglang \
--model-path Qwen/Qwen3-14B-FP8 \
--served-model-name Qwen/Qwen3-14B-FP8 \
--tp 1 --trust-remote-code \
--kv-events-config '{"publisher":"zmq","topic":"kv-events","endpoint":"tcp://*:5557"}'
Параметры frontend
Эти параметры передаются frontend (а не worker) при использовании --dyn-chat-processor sglang:
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
--dyn-chat-processor sglang | (none) | Включает процессор чата SGLang |
--tool-call-parser | None | Имя парсера вызовов инструментов (любой поддерживаемый SGLang парсер) |
--reasoning-parser | None | Имя парсера рассуждений (любой поддерживаемый SGLang парсер) |
Переменные окружения
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
DYN_SGLANG_STREAM_INTERVAL | 20 | Количество токенов, которое накапливается перед детокенизацией. Более высокие значения повышают пропускную способность. Первый фрагмент всегда отправляется сразу (interval=1), чтобы минимизировать время до первого токена. |
Вызовы инструментов
Процессор поддерживает все форматы вызова инструментов SGLang. Передайте --tool-call-parser во frontend:
python -m dynamo.frontend \
--dyn-chat-processor sglang \
--tool-call-parser hermes
Можно использовать любой парсер, поддерживаемый SGLang. Полный список доступных парсеров вызова инструментов см. в документации SGLang.
Пример: запрос с вызовом инструмента
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-14B-FP8",
"messages": [{"role": "user", "content": "What is the weather in Paris?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}],
"tool_choice": "auto"
}'
Ответ:
{
"choices": [{
"message": {
"role": "assistant",
"tool_calls": [{
"id": "call_8cd24396f3671048",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\": \"Paris\"}"
}
}],
"reasoning_content": "The user wants weather info for Paris..."
},
"finish_reason": "tool_calls"
}]
}
Парсинг рассуждений
Для моделей, которые генерируют chain-of-thought reasoning (например, Qwen3, DeepSeek-R1), передайте --reasoning-parser:
python -m dynamo.frontend \
--dyn-chat-processor sglang \
--reasoning-parser qwen3
Парсер отделяет содержимое тега think в поле reasoning_content, а обычный контент - в поле content.
Миграция с --use-sglang-tokenizer
--use-sglang-tokenizer на worker устарел. Замените его на --dyn-chat-processor sglang во frontend:
# До (устарело)
- python -m dynamo.sglang --model-path <model> --use-sglang-tokenizer
- python -m dynamo.frontend
# После
python -m dynamo.sglang --model-path <model>
+ python -m dynamo.frontend --dyn-chat-processor sglang
Ключевые различия:
--use-sglang-tokenizer | --dyn-chat-processor sglang | |
|---|---|---|
| Расположение | Флаг worker | Флаг frontend |
| KV router | Не поддерживается | Поддерживается |
| Tool calling | Не поддерживается | Поддерживается |
| Reasoning | Не поддерживается | Поддерживается |
| Endpoints | Только v1/chat/completions | Только v1/chat/completions |
См. также
- Tool Calling: Общий справочник по tool calling
- Reference Guide: Полная справка по backend SGLang
- Agentic Workloads: Приоритизация расписания и закрепление кэша для агентов