Перейти к основному содержимому

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-parserNoneИмя парсера вызовов инструментов (любой поддерживаемый SGLang парсер)
--reasoning-parserNoneИмя парсера рассуждений (любой поддерживаемый SGLang парсер)

Переменные окружения

ПеременнаяЗначение по умолчаниюОписание
DYN_SGLANG_STREAM_INTERVAL20Количество токенов, которое накапливается перед детокенизацией. Более высокие значения повышают пропускную способность. Первый фрагмент всегда отправляется сразу (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: Приоритизация расписания и закрепление кэша для агентов