Чтобы получить чистую Markdown-версию этой страницы, добавьте .md к этому URL. Для полного индекса документации см. https://docs.nvidia.com/dynamo/llms.txt. Для полного содержимого, включая API reference и примеры SDK, см. https://docs.nvidia.com/dynamo/llms-full.txt.
Используйте Pi-Mono с Dynamo
Pi-Mono — это open-source harness для coding-agent, чья чистая архитектура плагинов сделала его популярной основой для таких паттернов, как subagents и циклы planner/implementer. Расширение pi-dynamo-provider использует этот слой плагинов, чтобы зарегистрировать Dynamo как провайдера моделей Pi. Оно работает в процессе, добавляет в каждый запрос Dynamo agent_context и agent_hints и отправляет события жизненного цикла инструментов Pi в Dynamo по ZMQ.
Эта страница — один практический пример того, как связать harness с API трассировки и подсказок Dynamo. Используйте его как ориентир, а не как предписание.
Зачем запускать Pi через Dynamo
Вы уже можете направить Pi на любой OpenAI-compatible endpoint — Ollama, vLLM, hosted API или Dynamo из коробки. Маршрутизация через Dynamo с этим расширением даёт две вещи, которых нет при обычном хостинге:
- Наблюдаемость, учитывающая harness. Идентификаторы session и trajectory из Pi попадают в трассы
request_endв Dynamo, а span'ы инструментов Pi оказываются на той же временной шкале. Один просмотр в Perfetto показывает запросы LLM, стадии prefill/decode и вызовы инструментов вместе. - Оркестрация, учитывающая harness. Как только Dynamo понимает, к какой trajectory относится запрос, оно может учитывать agent hints (priority, expected output length, speculative prefill) для более умного планирования и маршрутизации с учётом KV. Та же awareness к trajectory позволяет таким backend'ам, как SGLang, применять eviction на основе priority и изоляцию KV на уровне session.
Интеграция работает с любым backend Dynamo — vLLM, SGLang или TRT-LLM — без специализированной обвязки для конкретного backend.
Что делает расширение
- Регистрирует провайдер
dynamoв Pi:pi --model dynamo/<model-id>. - Находит модели через Dynamo
/v1/models. - Вставляет
nvext.agent_context(session/trajectory IDs) в каждый запрос chat-completion. - Добавляет
x-request-id, если он ещё не задан. - Передаёт события Pi
tool_start/tool_end/tool_errorв Dynamo по ZMQ, чтобы span'ы LLM и инструментов попадали в одну трассу.
sequenceDiagram
participant Pi as Pi-Mono
participant Provider as pi-dynamo-provider
participant Dynamo as Dynamo frontend
participant Trace as Agent trace sink
Pi->>Provider: streamSimple(model, context)
Provider->>Dynamo: POST /v1/chat/completions<br/>nvext.agent_context, x-request-id
Dynamo-->>Provider: SSE chunks
Dynamo->>Trace: request_end
Pi->>Provider: tool_execution_start / _end
Provider->>Dynamo: ZMQ PUSH tool record
Dynamo->>Trace: tool_start / tool_end
Быстрый старт
1. Установите провайдер
Соберите его из исходников и установите в Pi:
git clone git@github.com:ai-dynamo/pi-dynamo-provider.git
cd pi-dynamo-provider
npm install && npm run build
pi install /absolute/path/to/pi-dynamo-provider
2. Запустите Dynamo с включённой трассировкой
Используйте встроенный в репозиторий launcher SGLang (examples/backends/sglang/launch/agg_agent.sh), который запускает frontend с KV routing и одного worker SGLang с подключёнными streaming sessions, KV events и reasoning/tool parsers. Сначала экспортируйте переменные окружения agent-trace, чтобы worker записывал трассы в JSONL-файл и привязывал ZMQ socket, к которому подключится Pi:
export DYN_AGENT_TRACE_SINKS=jsonl
export DYN_AGENT_TRACE_OUTPUT_PATH=/tmp/dynamo-agent-trace.jsonl
export DYN_AGENT_TRACE_TOOL_EVENTS_ZMQ_ENDPOINT=tcp://127.0.0.1:20390
./examples/backends/sglang/launch/agg_agent.sh
По умолчанию здесь обслуживается zai-org/GLM-4.7-Flash на TP 2. При необходимости переопределите это через --model-path / --tp. Полный список переменных окружения см. в Agent Tracing → Enable output. Провайдер одинаково хорошо работает с любым backend Dynamo (vLLM, SGLang, TRT-LLM); launcher SGLang — просто самый готовый к использованию стартовый вариант.
3. Настройте Pi на Dynamo
export DYNAMO_BASE_URL=http://127.0.0.1:8000/v1
export DYNAMO_API_KEY=dummy
export DYN_AGENT_SESSION_TYPE_ID=pi_coding_agent
export DYN_AGENT_SESSION_ID=pi-demo-001
export DYN_AGENT_TOOL_EVENTS_ZMQ_ENDPOINT=tcp://127.0.0.1:20390
pi --model dynamo/zai-org/GLM-4.7-Flash \
-p "Run the tests in this folder, fix the smallest bug, and rerun the tests."
DYN_AGENT_SESSION_ID становится session_id трассы; если DYN_AGENT_TRAJECTORY_ID не задан, session id Pi используется как trajectory id.
4. Просмотрите трассу в Perfetto
python benchmarks/agent_trace/convert_to_perfetto.py \
/tmp/dynamo-agent-trace.jsonl \
--include-markers \
--separate-stage-tracks \
--output /tmp/dynamo-agent-trace.perfetto.json
Откройте результат на ui.perfetto.dev. Вы увидите:
- span'ы
dynamo.llmдля каждого запроса LLM. - span'ы
dynamo.llm.stageдля prefill/decode, когда Dynamo их записывает. - span'ы
dynamo.agent.toolдля каждого вызова инструмента Pi.
Переменные окружения Pi
| Переменная | Значение по умолчанию | Назначение |
|---|---|---|
DYNAMO_BASE_URL | http://127.0.0.1:8000/v1 | Корень OpenAI-compatible endpoint Dynamo. |
DYNAMO_API_KEY | dynamo-local | Bearer token. Локальный Dynamo обычно принимает любое значение. |
DYN_AGENT_SESSION_TYPE_ID | pi_coding_agent | Стабильный класс workload для трассы. |
DYN_AGENT_SESSION_ID | unset | Идентификатор session/run. Для событий инструментов берётся из Pi. |
DYN_AGENT_TRAJECTORY_ID | unset | Переопределение trajectory id; по умолчанию используется session id Pi для каждого запроса. |
DYN_AGENT_PARENT_TRAJECTORY_ID | unset | Родительский trajectory id для вложенных или subagent workflows. |
DYN_AGENT_TOOL_EVENTS_ZMQ_ENDPOINT | unset | ZMQ PULL endpoint Dynamo, к которому Pi подключается для событий инструментов. |
DYN_AGENT_TOOL_EVENTS_ZMQ_TOPIC | agent-tool-events | Первый frame ZMQ; должен совпадать с DYN_AGENT_TRACE_TOOL_EVENTS_ZMQ_TOPIC. |
Полный список переменных, алиасы и формат ZMQ wire см. в README провайдера.
Устранение неполадок
| Симптом | Вероятная причина | Исправление |
|---|---|---|
pi сообщает, что модель неизвестна | Во время старта Pi /v1/models вернул пустой ответ | Выполните curl -s "$DYNAMO_BASE_URL/models" для проверки; перезапустите Pi после готовности Dynamo. |
| Появляются span'ы LLM, но не инструмента | На обеих сторонах не настроен endpoint событий инструмента | Укажите одинаковое значение DYN_AGENT_TRACE_TOOL_EVENTS_ZMQ_ENDPOINT на Dynamo и DYN_AGENT_TOOL_EVENTS_ZMQ_ENDPOINT на Pi. |
| Появляются span'ы инструмента, но не запросов | Не включены trace sinks Dynamo | Укажите на Dynamo DYN_AGENT_TRACE_SINKS=jsonl и DYN_AGENT_TRACE_OUTPUT_PATH. |
| Сбой аутентификации | Dynamo ожидает конкретный token | Установите DYNAMO_API_KEY в значение, соответствующее вашему deployment. Локальный Dynamo обычно принимает dummy. |
Дополнительно
- репозиторий pi-dynamo-provider — установка, скрипты и исходники.
- Agent Tracing — базовый протокол трассировки и схема
request_end. - Agent Hints — подсказки на каждый запрос (
priority,osl,speculative_prefill), которые Pi-Mono может передавать черезnvext.agent_hints.