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

Чтобы получить чистый Markdown этой страницы, добавьте .md к этому URL. Полный индекс документации см. на https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. на https://docs.nvidia.com/dynamo/llms-full.txt.

Расширения запросов NVIDIA (nvext)

nvext - это верхнеуровневый JSON-объект в теле запроса, который предоставляет расширения NVIDIA для совместимого с OpenAI API. Поля nvext используются frontend'ом Dynamo, preprocessor'ом, router'ом и backend worker'ами для управления маршрутизацией, preprocessing, метаданными ответа, планированием и приоритетом на уровне движка.

Использование​

Добавляйте nvext как верхнеуровневое поле рядом со стандартными полями, совместимыми с OpenAI:

{
"model": "my-model",
"messages": [{"role": "user", "content": "Hello"}],
"nvext": {
"greed_sampling": true,
"extra_fields": ["worker_id", "timing"],
"agent_hints": {
"osl": 1024,
"priority": 5
}
}
}

Справочник полей​

ПолеТипПо умолчаниюИспользуетсяОписание
greed_samplingboolNonePreprocessorПринудительно включает жадную выборку независимо от других параметров sampling.
use_raw_promptboolNonePreprocessorОбходит шаблон prompt и передаёт prompt напрямую tokenizer'у.
annotationsstring[]NonePreprocessorЗапускает передачу внеполосной информации в потоке SSE через поле event:.
backend_instance_idu64NoneRouterМаршрутизирует запрос к конкретному backend instance.
token_datau32[]NonePreprocessorПредтокенизированные токены prompt'а. Если переданы вместе с backend_instance_id, токенизация пропускается.
max_thinking_tokensu32NoneBackendМаксимально допустимое число thinking tokens (передаётся в backend).
extra_fieldsstring[]NoneResponse builderПоля, которые нужно включить в nvext ответа. Поддерживаются: "worker_id", "timing", "routed_experts", "engine_data", "stop_reason".
prefill_worker_idu64NoneRouterМаршрутизирует запрос к конкретному prefill worker (disaggregated serving).
decode_worker_idu64NoneRouterМаршрутизирует запрос к конкретному decode worker (disaggregated serving).
agent_contextobjectNonePreprocessorПассивная идентичность сессии и trajectory для agent traces. См. Agent Context ниже и Agent Tracing.
agent_hintsobjectNoneRouterПодсказки на уровне запроса для планирования и балансировки нагрузки. См. Agent Hints.
session_controlobjectNoneRouterЖизненный цикл сессии и sticky routing для изоляции KV subagent'ов. См. Session Control.

Связанная корневая опция вывода Dynamo:

ПолеТипПо умолчаниюИспользуетсяОписание
return_tokens_as_token_idsboolfalseResponse builderФорматирует строки токенов logprob как token_id:<id> вместо декодированного текста.

return_tokens_as_token_ids изменяет только отображение возвращаемых токенов logprob. Чтобы остановка происходила по token ID, передавайте целочисленные ID в обычном массиве stop, например "stop": [576]. Строки вроде "token_id:576" остаются буквальными stop-sequences и не интерпретируются как token ID.

Переопределение через заголовки​

Поля маршрутизации также можно задавать через HTTP-заголовки, и они имеют приоритет над значениями nvext:

ЗаголовокПереопределяет
x-worker-instance-idbackend_instance_id и decode_worker_id
x-prefill-instance-idprefill_worker_id

Agent Context​

Подобъект agent_context передаёт пассивную идентичность сессии и trajectory для agentic-запросов. Dynamo использует эти метаданные, чтобы выводить request traces, когда включён sink agent trace. Это не влияет на маршрутизацию, планирование или поведение кэша.

ПолеТипОбязательноОписание
session_type_idstringДаПереиспользуемый профиль или метка класса agent'а.
session_idstringДаИдентификатор верхнеуровневого запуска/сессии agent'а.
trajectory_idstringДаОдна планируемая trajectory для reasoning/tool.
parent_trajectory_idstringНетРодительская trajectory, обычно для subagent'ов.
{
"nvext": {
"agent_context": {
"session_type_id": "deep_research",
"session_id": "research-run-42",
"trajectory_id": "research-run-42:researcher",
"parent_trajectory_id": "research-run-42:planner"
}
}
}

О семантике идентичности, настройке trace sink и деталях JSONL-схемы см. Agent Tracing.

Agent Hints​

Подобъект agent_hints передаёт подсказки на уровне запроса, которые router использует для планирования, балансировки нагрузки и оптимизации KV cache.

ПолеТипПо умолчаниюОписание
priorityi32NoneЕдиный приоритет запроса. Чем выше значение, тем выше приоритет на уровне Dynamo API. Используется для упорядочивания очереди router'а и планирования/вытеснения в backend.
oslu32NoneОжидаемая длина выходной последовательности (tokens). Используется для отслеживания output blocks и оценки ресурсов.
speculative_prefillboolfalseКогда true, выполняет speculative prefill прогнозируемого prompt'а следующего хода после завершения текущего хода, чтобы прогреть KV cache.

priority​

priority - это единственная пользовательская подсказка для планирования. Более высокие значения означают "более важный" запрос во всём Dynamo.

Когда задан --router-queue-threshold и очередь активна, запросы с более высоким приоритетом сдвигаются раньше в очереди router'а. После отправки Dynamo передаёт тот же семантический приоритет backend engine для упорядочивания очереди, preemption и вытеснения из KV cache. Dynamo внутренне нормализует полярность, зависящую от backend'а, включая соглашение vLLM, где более низкое значение означает более высокий приоритет.

{
"nvext": {
"agent_hints": {
"priority": 5
}
}
}

osl​

Ожидаемая длина выходной последовательности - приблизительное число выходных tokens, которое сгенерирует запрос. Router использует эту подсказку двумя способами:

  1. Отслеживание блоков вывода: когда включён --router-track-output-blocks, router добавляет заглушки блоков во время генерации и применяет дробное затухание в зависимости от прогресса к osl.
  2. Оценка ресурсов: помогает router'у оценивать суммарные потребности в ресурсах при принятии решений о маршрутизации.
{
"nvext": {
"agent_hints": {
"osl": 1024
}
}
}

speculative_prefill​

Если установлено true, система выполняет speculative prefill прогнозируемого prompt'а следующего хода после завершения текущего хода assistant'а. Это предназначено для многоходовых agentic workloads, где префикс следующего запроса предсказуем.

Как это работает:

  1. По мере потоковой передачи ответа assistant'а система накапливает полный текст ответа.
  2. После завершения ответа фоновая задача формирует prompt следующего хода, добавляя ответ assistant'а к истории диалога (при этом thinking content удаляется для не последнего хода).
  3. Сформированный prompt токенизируется и отправляется как запрос max_tokens=1, чтобы прогреть KV cache на worker'е.
  4. Когда приходит фактический следующий запрос, он использует уже прогретый KV cache, что сокращает TTFT.
{
"nvext": {
"agent_hints": {
"speculative_prefill": true
}
}
}

Детали backend'а:

  • SGLang: Требует --enable-priority-scheduling для упорядочивания очереди и --radix-eviction-policy priority для вытеснения на основе приоритета.
  • vLLM: Требует --scheduling-policy priority.
  • TensorRT-LLM: Пока не поддерживает приоритет на уровне отдельного запроса.
{
"nvext": {
"agent_hints": {
"priority": 5
}
}
}

Session Control​

session_control включает sticky routing по session_id. Используйте action: "bind" для sticky affinity только на уровне router'а без RPC к backend engine. Используйте action: "open" / "close" для жизненного цикла streaming-session в backend, если движок это поддерживает.

ПолеТипПо умолчаниюОписание
session_control.session_idstring—Уникальный идентификатор сессии. Присутствует на каждом ходе.
session_control.actionstringomittedНеобязательное действие: "bind", "open" или "close". На промежуточных ходах не указывается.
session_control.timeoutinteger300Тайм-аут неактивности в секундах. Используется с action: "bind" и action: "open".
{
"nvext": {
"session_control": {
"session_id": "subagent-1",
"action": "open",
"timeout": 300
}
}
}

Требует --router-mode=kv на frontend'е. Router-only sticky routing использует action: "bind" и не требует поддержки сессий на backend. Жизненный цикл сессии, поддерживаемый движком, требует поддержки backend; см. SGLang for Agentic Workloads для деталей настройки streaming-session в SGLang.

Расширения ответа​

Когда клиент запрашивает метаданные ответа через extra_fields, ответ включает объект nvext с запрошенными полями:

ПолеЗапрашивается черезОписание
worker_idextra_fields: ["worker_id"]ID prefill/decode worker'ов и data parallel rank'и, которые обработали запрос.
timingextra_fields: ["timing"]Временные показатели для каждого запроса (TTFT, ITL, время в очереди и т. д.).
routed_expertsextra_fields: ["routed_experts"]Payload с захваченными routed experts, возвращаемый запросами на базе SGLang.
engine_dataextra_fields: ["engine_data"]Непрозрачные метаданные engine, предоставленные backend'ом.
stop_reasonextra_fields: ["stop_reason"]Совпавшее условие остановки, специфичное для backend'а; возвращается в nvext, потому что не входит в schema OpenAI completions. Сейчас Dynamo выдаёт это как поле уровня ответа для запросов с одним вариантом выбора; поддержка n > 1 потребует индексированной формы на уровне каждого варианта.
token_idsAutomatic (GAIE Stage 1)Tokenized prompt для повторного использования в режиме query-only Stage 2.

Пример ответа nvext​

{
"nvext": {
"worker_id": {
"prefill_worker_id": 1,
"prefill_dp_rank": 0,
"decode_worker_id": 2,
"decode_dp_rank": 0
},
"timing": {
"ttft_ms": 45.2,
"itl_ms": 12.1
}
}
}

См. также​

ДокументОписание
Frontend GuideКонфигурация и интеграция KServe gRPC
Configuration and TuningПолная конфигурация router'а и аргументы CLI
Agent TracingПассивная идентичность сессии/trajectory, JSONL-traces запросов и приём tool events в harness
Agent HintsПодсказки serving на уровне запроса для маршрутизации, планирования и поведения кэша
SGLang for Agentic WorkloadsФлаги SGLang engine для приоритетного планирования, политик вытеснения и управления сессиями