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

Для чистого 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.

ArgumentDefaultDescription
--dyn-chat-processor vllm(none)Включить процессор чата vLLM
--tool-call-parserNoneИмя tool call parser (любой parser, поддерживаемый vLLM)
--reasoning-parserNoneИмя reasoning parser (любой parser, поддерживаемый vLLM)
--enable-auto-tool-choiceFalseРазрешить модели отправлять tool calls без явного tool_choice в запросе

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

VariableDefaultDescription
DYN_VLLM_STREAM_INTERVAL20Количество токенов, которые нужно накопить перед 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.

См. также