Чтобы получить чистую Markdown-версию этой страницы, добавьте
.mdк этому URL. Полный индекс документации см. в https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. в https://docs.nvidia.com/dynamo/llms-full.txt.
Парсинг рассуждений (Dynamo)
Некоторые модели выводят reasoning или thinking отдельно от финального ответа.
Dynamo может разделить этот вывод на reasoning_content и обычное
содержимое ассистента, если настроить --dyn-reasoning-parser на backend worker'е.
На этой странице описаны имена parser'ов для default-пути Dynamo-native. Если для вашей модели в Dynamo нет parser'а, см. Reasoning Parsing (Engine Fallback).
Предварительные требования
Чтобы включить reasoning parsing, запустите backend worker с:
--dyn-reasoning-parser: выберите reasoning parser из списка ниже
# <backend> can be sglang, trtllm, vllm, etc. based on your installation
python -m dynamo.<backend> --help
Некоторым моделям нужны одновременно reasoning parser и tool call parser. Для поддерживаемых имён tool call parser'ов см. Tool Call Parsing (Dynamo).
Поддерживаемые reasoning parser'ы
В таблице ниже перечислены reasoning parser'ы, которые сейчас поддерживаются
в registry Dynamo. В столбце Upstream name показано, где имя parser'а
в vLLM или SGLang отличается от имени в Dynamo. Это важно при использовании
--dyn-chat-processor vllm или sglang
(см. Reasoning Parsing (Engine Fallback)). Если столбец upstream
пустой, одно и то же имя работает везде. Dynamo-only означает, что
upstream parser для этого формата отсутствует.
Parser'ы, помеченные force-reasoning, начинают выдавать reasoning
content с первого токена без явного открывающего тега (<think> и т. п.).
Для всех остальных открывающий тег должен присутствовать в выводе модели.
| Имя parser'а | Модели | Upstream name | Force-reasoning | Примечания |
|---|---|---|---|---|
kimi_k25 | Thinking-модели, совместимые по формату с Kimi K2.5 / Kimi K2.6 | Только Dynamo | Да | <think>...</think> с force-reasoning |
kimi | Kimi K2 Instruct / Thinking с Unicode-разделителями | Только Dynamo | Нет | ◁think▷...◁/think▷ |
minimax_append_think | MiniMax M2 / M2.1 | Только Dynamo | Нет | Неявно добавляет открывающий <think> |
deepseek_v4 | DeepSeek V4 Pro / Flash | vLLM: deepseek_v4; SGLang: deepseek-v4 | Нет | <think>...</think>. Алиасы: deepseek-v4, deepseekv4 |
deepseek_r1 | DeepSeek R1, DeepSeek V3.1, DeepSeek V3.2 | Да | Явно указывайте для V3.1/V3.2 (без alias) | |
qwen3 | Qwen3.5, QwQ-32B, Qwen3-Think, Qwen3-Coder | Нет | <think>...</think> | |
glm45 | GLM-4.5, GLM-4.7 | Только Dynamo | Нет | Alias для nemotron_deci. <think>...</think> |
nemotron3 | Nemotron-3 / Mini | vLLM: nemotron_v3 | Да | Alias для deepseek_r1. Также принимает nemotron_v3 |
nemotron_deci | Nemotron-Super / -Ultra / -Deci, Llama-Nemotron | Только Dynamo | Нет | <think>...</think> |
nemotron_nano | Nemotron-Nano | Только Dynamo | Да | Alias для deepseek_r1 |
gemma4 | Google Gemma 4 (thinking-модели) | vLLM: gemma4 | Нет | <|channel>thought\n...<channel|> с удалением role label thought\n. Алиасы: gemma-4 |
gpt_oss | gpt-oss-20b / -120b | Только Dynamo | Нет | Формат reasoning для Harmony channel |
mistral | Magistral | Да | [THINK]...[/THINK] | |
granite | Языковые модели IBM Granite 3.x / Granite 3.2 | Нет | Here's my thought process: / Here's my response: | |
step3 | Step-3 / Step-3-Reasoning | Только Dynamo | Да | <think>...</think> |
basic | Generic CoT-модели | Только Dynamo | Нет | Обычный <think>...</think> |
Типовые сочетания parser'ов
Некоторым моделям нужно настроить оба parser'а одновременно. Типовые сочетания:
openai/gpt-oss-*:--dyn-tool-call-parser harmony --dyn-reasoning-parser gpt_ossdeepseek-ai/DeepSeek-V4-*:--dyn-tool-call-parser deepseek_v4 --dyn-reasoning-parser deepseek_v4zai-org/GLM-4.7:--dyn-tool-call-parser glm47 --dyn-reasoning-parser glm45moonshotai/Kimi-K2.5*/ выводы, совместимые с форматом Kimi K2.6:--dyn-tool-call-parser kimi_k2 --dyn-reasoning-parser kimi_k25google/gemma-4-*thinking-модели:--dyn-tool-call-parser gemma4 --dyn-reasoning-parser gemma4 --custom-jinja-template examples/chat_templates/gemma4_tool.jinjaQwen/Qwen3.5*:--dyn-tool-call-parser qwen3_coder --dyn-reasoning-parser qwen3- Выводы в стиле MiniMax M2.1:
--dyn-tool-call-parser minimax_m2 --dyn-reasoning-parser minimax_append_think
Взаимодействие с tool calling
Reasoning parsing выполняется до парсинга tool call. Если модель выдаёт и reasoning content, и вызовы инструментов, настройте оба parser'а, чтобы Dynamo сначала отделил reasoning-текст, а затем распарсил tool call из оставшегося вывода assistant.
Примеры
Запуск frontend и backend Dynamo
# запуск backend worker (или dynamo.vllm)
python -m dynamo.sglang --model Qwen/Qwen3.5-4B --dyn-tool-call-parser qwen3_coder --dyn-reasoning-parser qwen3
# запуск frontend worker
python -m dynamo.frontend
Пример запроса с reasoning
curl -s http://localhost:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "Qwen/Qwen3.5-4B",
"messages": [{"role": "user", "content": "If a train leaves at 3pm going 60 mph and another leaves at 4pm going 80 mph, when does the second catch up?"}]
}'
Dynamo разделяет вывод модели так, чтобы chain-of-thought попадал в
reasoning_content, а пользовательский ответ оставался в content:
{
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": "The first train has a 1-hour head start at 60 mph, so it is 60 miles ahead at 4pm. The second train closes the gap at 80 - 60 = 20 mph. 60 / 20 = 3 hours after 4pm.",
"content": "The second train catches up at 7pm."
},
"finish_reason": "stop"
}
]
}