Модель решает, код исполняет: детерминированный рантайм для агентных сценариев

Агентная платформа

Бэкенд
A/B-тестирование
GO
Оптимизация
ML

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

Разработчики и архитекторы агентных систем, которые уже вышли с агентом в продакшен и столкнулись с тем, что модель не делает написанное в промте прямым текстом. Будет полезно тем, кто отвечает за стоимость и предсказуемость агента, а не только за то, чтобы он отвечал.

Тезисы

Модель выполняет промт не целиком: часть инструкций просто игнорирует. «В prod без явной просьбы не ходи» - идёт в prod. «Лишние инструменты не дёргай» - дёргает. «Сделай проверку ровно один раз» - делает трижды.

Чтобы это ловить, обкладывал каждый шаг подпорками: проверки кодом, регекспы по ответу, арбитр, лимит бюджета. Подпорка закрывала одно место, и модель начинала подтупливать в соседнем. Обвес рос, отказы не кончались.

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

Тогда собрал все подпорки в одно место и сделал скил декларативным ямлом: шаги, ветвления, циклы, радиус инструментов. Ямл парсится, валидируется и исполняется движком, модель зовут только там, где нужно суждение. Запрет перестал быть запретом и стал невозможностью: у шага, которому нечего вызывать, набор инструментов пуст физически.

Готовое не брал не по возможностям, а по форме: n8n и Airflow это отдельный сервис с расписанием, Temporal про исполнение, которое переживает падение. Мне нужна была библиотека внутри процесса агента, где ход живёт секунды и начинается со слов пользователя.

Чтобы выяснить, стало ли лучше, мерил в три захода. Везде текст скила против декларативного ямла, текст первым.

Локально, одна модель, скил поиска ошибок в коде, по 10 прогонов на каждый способ: токенов 3490 против 1988 (p=0.006), из них промт 1275 против 404; найденных ошибок 3.9 против 4.0 из четырёх. Выигрыш по времени при десяти прогонах не подтвердился (p=0.21).

Дев, прогон пачки реальных запросов с прода, 9117 ходов, 22 скила: генераций на ход 7 против 4; 13 скилов дешевле, 4 ДОРОЖЕ, 5 без разницы.

Прод, живой трафик, 689 ходов: медиана хода 28 секунд против 17, p90 128 против 35, ходов дольше минуты 25.6% против 0.9% (p=0.0006).

В докладе: почему локально время не подтвердилось, а на проде выиграло; четыре скила, которым перевод сделал хуже, и что из этого следует; где детерминизм дешевле модели, а где так делать нельзя; и разрез с n8n, Temporal и LangGraph, включая случаи «берите не меня». Код открыт под MIT: github.com/inhuman/skill-engine

17 лет в IT, из них семь — системным администратором, остальное
в разработке на Go: прошёл путь от инженера до техлида направления
с командой. Сейчас в T1 Облако занимается LLM R&D — делает корпоративного
AI-агента в закрытом контуре: многоагентная схема, инструменты через MCP,
self-hosted инференс, всё в проде.

Видео

Другие доклады секции

Агентная платформа