Оглавление: выбор рантайма · запас памяти (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.
Чек-лист приёмки стоимости удалённого узла
- Заморозка: отпечаток весов, версия Python/SDK и контракт слотов в одной строке отчёта.
- Тракт: SSH или mTLS, число хопов, MTU VPN, idle-timeout прокси — в журнале измерений.
- Нагрузка: 600 с смеси коротких вопросов и длинных стримов; сохранить p95, отказы по слоту и давление памяти.
- Финансы: почасовая аренда и амортизированная покупка в одной таблице с инженерными порогами; схемы инструментов согласовать с шлюзом и JSON Schema, если контур гибридный.
Публичные страницы без входа: тарифы, покупка и аренда, справка, технический блог и главная.
Итог: выбранный рантайм, headroom и метрики держите в одной строке с p95 и деньгами; для продакшена на выделенном узле зафиксируйте конфигурацию на публичной странице покупки и аренды и повторите пороги до подписания.