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

Чтобы получить чистую 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_URLhttp://127.0.0.1:8000/v1Корень OpenAI-compatible endpoint Dynamo.
DYNAMO_API_KEYdynamo-localBearer token. Локальный Dynamo обычно принимает любое значение.
DYN_AGENT_SESSION_TYPE_IDpi_coding_agentСтабильный класс workload для трассы.
DYN_AGENT_SESSION_IDunsetИдентификатор session/run. Для событий инструментов берётся из Pi.
DYN_AGENT_TRAJECTORY_IDunsetПереопределение trajectory id; по умолчанию используется session id Pi для каждого запроса.
DYN_AGENT_PARENT_TRAJECTORY_IDunsetРодительский trajectory id для вложенных или subagent workflows.
DYN_AGENT_TOOL_EVENTS_ZMQ_ENDPOINTunsetZMQ PULL endpoint Dynamo, к которому Pi подключается для событий инструментов.
DYN_AGENT_TOOL_EVENTS_ZMQ_TOPICagent-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.