Слоты параллельных инструментов — это контрактное число одновременных вызовов, стриминг нельзя отрывать от покомандного бюджета токенов, а удалённый узел оценивается в одном конверте с p95 сетевого круга и почасовой ставкой.

Оглавление: выбор рантайма · запас памяти (headroom) · метрики наблюдаемости · таблица и пороги · приёмка удалённого узла

На Apple Silicon M4 с унифицированной памятью сценарий «несколько tool-call подряд», «читать ответ по чанкам» и «жёстко ограничить генерацию на ход» завязан на фреймворк не слабее, чем на модель. Ниже Agno и OpenAI Agents SDK сведены в одну матрицу: локальные измерения можно перенести в акт приёмки для удалённого Mac без потери смысла порогов. Для трасс и спанов см. матрицу OpenTelemetry для GenAI; маршрутизацию моделей и деньги — в статье о мульти-модельном роутинге; границы JSON Schema у шлюза — в материале про PydanticAI и схемы.

Выбор рантайма

Agno удобен, когда важны явные асинхронные конвейеры и типизированные обёртки вокруг инструментов: лимитировать параллелизм семафором или очередью с приоритетом проще «рядом с кодом», и ревью видит то же число, что и эксплуатация. OpenAI Agents SDK выигрывает там, где нужен единый runner и событийная модель поколений, handoff между агентами и предсказуемый порядок колбэков — проще рисовать диаграмму и прикладывать её к runbook. На M4 зафиксируйте в таблице контрактное число одновременных инструментов и границы стрима (ход, сессия, пользовательский лимит), а строку таблицы обновляйте только при смене квантизации, версии SDK или политики отмены. Не смешивайте в одном прогоне локальный инференс и облачный без отдельной строки бюджета: для финансов это два разных хвоста задержки.

Отдельно прогоните сценарии с повторным вызовом одного и того же инструмента при сетевых таймаутах: идемпотентность и дедупликация на стороне бэкенда должны совпадать с тем, что вы декларируете в матрице, иначе рост параллелизма превратится в скрытые двойные списания API или двойные побочные эффекты в CRM. Для handoff в Agents SDK фиксируйте не только имена агентов, но и максимальную глубину передачи контекста в токенах — это напрямую бьёт по headroom следующего раздела.

Запас памяти (headroom)

Помимо весов модели растут кучи воркеров инструментов, буферы стрима и кратковременные копии аргументов JSON. Если держите крупную квантованную модель в unified memory, оставляйте под рантайм агента и пик параллельных вызовов порядка 4–6 ГиБ свободного запаса — так стабильнее время до первого токена и реже упираетесь в давление памяти ОС. Если свободно стабильно меньше 3 ГиБ, не спорьте с железом: уменьшите контракт параллельных инструментов вдвое или вынесите тяжёлые плагины в отдельный процесс с собственным лимитом RSS — и зафиксируйте это в той же строке матрицы, что уйдёт к заказчику.

Метрики наблюдаемости

Сведите на один дашборд: TTFT, p95 полного круга tool-call (включая сериализацию и сеть до локального бэкенда), долю отказов по лимиту слотов, долю обрывов по max_tokens и накопленные токены генерации на ход. Экспорт в OTLP и семантические конвенции GenAI разберите по отдельной статье; стоимость разных маршрутов модели — по матрице роутинга. Минимальный набор алертов: рост p95 круга инструмента при неизменном RPS и всплеск обрывов стрима при неизменном промпте — оба сигнала чаще связаны с контенцией памяти или сетью, чем с «плохой моделью».

Таблица сравнения и пороги

Меняете квант, контекст или число слотов — обновляйте строку и повторяйте короткий soak перед подписанием.

Критерий Agno OpenAI Agents SDK Заметка для приёмки
Параллельные инструменты Семафор и явные лимиты в коде агента Очерёдность через runner и события Сверх лимита — отказ с метрикой, не очередь «молча»
Стриминг Агрегация чанков на стороне приложения Официальные события, проще привязать трейс Логировать max и сумму токенов на ход
Оркестрация Мульти-агентные паттерны ближе к типам Python Handoff и сессии читаются как блок-схема Имена границ копируйте в удалённый контур
Стоимость удалёнки Тот же контракт слотов, другой хост Часто +облачный инференс → больше сетевых хопов В одной ячейке: p95 круга и ₽/ч или капекс

Числовые пороги (ориентир для локального M4)

  • Параллельные инструменты: штат 2–4, стресс до 8; ухудшение p95 TTFT к базовому прогону не более 10 %.
  • Бюджет токенов: сканировать потолок генерации на ход (например от 4096 вниз); доля обрывов по лимиту < 2 % при репрезентативном наборе диалогов.
  • Сеть tool-call: в одной подсети p95 круга < 300 мс, через VPN между офисами < 800 мс — иначе выносите инструмент ближе к узлу или режьте полезную нагрузку JSON.

Чек-лист приёмки стоимости удалённого узла

  1. Заморозка: отпечаток весов, версия Python/SDK и контракт слотов в одной строке отчёта.
  2. Тракт: SSH или mTLS, число хопов, MTU VPN, idle-timeout прокси — в журнале измерений.
  3. Нагрузка: 600 с смеси коротких вопросов и длинных стримов; сохранить p95, отказы по слоту и давление памяти.
  4. Финансы: почасовая аренда и амортизированная покупка в одной таблице с инженерными порогами; схемы инструментов согласовать с шлюзом и JSON Schema, если контур гибридный.

Публичные страницы без входа: тарифы, покупка и аренда, справка, технический блог и главная.

Итог: выбранный рантайм, headroom и метрики держите в одной строке с p95 и деньгами; для продакшена на выделенном узле зафиксируйте конфигурацию на публичной странице покупки и аренды и повторите пороги до подписания.