Для чистого Markdown-содержимого этой страницы добавьте
.mdк этому URL. Полный индекс документации см. в https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. в https://docs.nvidia.com/dynamo/llms-full.txt.
Процессор чата vLLM
Процессор чата vLLM включает нативные для vLLM предварительную и последующую обработку во frontend Dynamo. Он напрямую использует tokenizer, chat templates, tool call parser и reasoning parser vLLM, минуя стандартный Rust-preprocessor для запросов v1/chat/completions.
Когда использовать
Используйте --dyn-chat-processor vllm, когда встроенный Rust-preprocessor Dynamo еще не поддерживает нужный вам tool call parser или reasoning parser. Процессор vLLM передает обработку Python-реализациям vLLM, поэтому любой поддерживаемый vLLM parser начинает работать сразу.
Типичные случаи:
- tool call format, которого еще нет в библиотеке Rust
tool_calling - reasoning parser, который еще не поддерживается нативно
- chat template, который Rust-preprocessor обрабатывает некорректно
Если нужного вам parser нет в Rust-preprocessor, рассмотрите возможность открыть issue или PR, чтобы добавить нативную поддержку -- нативные parser полностью исключают накладные расходы Python GIL.
Быстрый старт
# Frontend with vLLM processor, tool calling, and reasoning
python -m dynamo.frontend \
--router-mode kv \
--dyn-chat-processor vllm \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--reasoning-parser qwen3
# Workers (unchanged)
CUDA_VISIBLE_DEVICES=0 python -m dynamo.vllm \
--model Qwen/Qwen3-14B-FP8 \
--served-model-name Qwen/Qwen3-14B-FP8 \
--tensor-parallel-size 1 --trust-remote-code
Аргументы frontend
Эти аргументы передаются frontend (не worker) при использовании --dyn-chat-processor vllm. Frontend передает неизвестные аргументы собственному CLI-parser vLLM (AsyncEngineArgs и FrontendArgs), поэтому принимается любой флаг frontend или engine vLLM.
| Argument | Default | Description |
|---|---|---|
--dyn-chat-processor vllm | (none) | Включить процессор чата vLLM |
--tool-call-parser | None | Имя tool call parser (любой parser, поддерживаемый vLLM) |
--reasoning-parser | None | Имя reasoning parser (любой parser, поддерживаемый vLLM) |
--enable-auto-tool-choice | False | Разрешить модели отправлять tool calls без явного tool_choice в запросе |
Переменные окружения
| Variable | Default | Description |
|---|---|---|
DYN_VLLM_STREAM_INTERVAL | 20 | Количество токенов, которые нужно накопить перед detokenizing. Более высокие значения повышают throughput. Первый chunk всегда отправляется сразу (interval=1), чтобы минимизировать time-to-first-token. |
Tool Calling
Процессор поддерживает все форматы tool call vLLM. Передайте --tool-call-parser (и обычно --enable-auto-tool-choice) во frontend:
python -m dynamo.frontend \
--dyn-chat-processor vllm \
--enable-auto-tool-choice \
--tool-call-parser hermes
Можно использовать любой parser, поддерживаемый vLLM. Полный список доступных tool call parser см. в документации vLLM.
Пример: запрос tool call
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"
}]
}
Reasoning Parsing
Для моделей, которые генерируют reasoning в виде chain-of-thought (например, Qwen3, DeepSeek-R1), передайте --reasoning-parser:
python -m dynamo.frontend \
--dyn-chat-processor vllm \
--reasoning-parser qwen3
Parser разделяет содержимое тега think в поле reasoning_content, а обычное содержимое - в поле content.
См. также
- Tool Calling: Общий guide по tool calling
- Reference Guide: Полный reference vLLM backend
- Examples: Примеры развертывания vLLM