JAZ: Минималистичный фреймворк JAZ доказывает, что сложные агенты ИИ не требуют сложных систем
Новое исследование, опубликованное на arXiv, демонстрирует, что современные языковые модели способны решать задачи длительного горизонта и самосовершенствоваться, используя исключительно базовый цикл взаимодействия. Представленный фреймворк JAZ использует концепцию «вызова» (invoke) как первичный язык программирования, позволяя модели генерировать код, включающий рекурсивные обращения к самим себе, без необходимости в внешних системах памяти или файловой структуре.
# Когда агент-петля заменяет сложные системы: обзор фреймворка JAZ
Развитие агентов на базе больших языковых моделей (LLM) за последние годы привело к появлению архитектуры, известной как «агентский цикл» (agent loop). В этой модели модель помещается в среду, где у нее есть доступ к набору инструментов, и она управляет рабочим процессом, чередуя вызовы этих инструментов и наблюдение за их результатами. Однако часто оказывается, что для реализации более сложных рабочих процессов требуются дополнительные инженерные решения, такие как специализированные системы памяти для хранения данных за пределами контекстного окна или механизмы непрерывного самосовершенствования.
Новая работа, опубликованная на arXiv под заголовком «Harness as a Language: A Minimalist Agent Framework With Maximal Expressivity», ставит под сомнение необходимость этих сложных слоев. Авторы представили фреймворк JAZ, цель которого — исследовать пределы минималистичной реализации, состоящей почти исключительно из самого агентского цикла, при сохранении максимальной выразительности.
ИнVOKE как фундаментальный язык
В основе фреймворка JAZ лежит одна простая, но мощная концепция: примитив «invoke». В отличие от традиционных подходов, где модель выбирает из заранее определенного списка инструментов, здесь «invoke» выступает в роли универсальной функции. Каждое время его вызова LLM предоставляет собственную реализацию функции.
Ключевые свойства этого подхода, описанные в исследовании, включают:
1. Арбитражность кода: Модель может генерировать любой исполняемый код. Важно то, что этот код может включать в себя рекурсивные вызовы самого «invoke», создавая глубокие вложенные логики выполнения. 2. Видимость контекста: Все, что доступно модели, включая все входные данные для «invoke» и историю взаимодействий с кодовым окружением, представлены как переменные непосредственно в среде выполнения. Это устраняет разрыв между тем, что модель «видит», и тем, что может использовать в своем коде.
Авторы мотивируют этот дизайн принципами снизу вверх, рассматривая «invoke» как язык.primitive, представляющий функцию, чья реализация предоставляется LLM во время выполнения. Это позволяет избежать жесткой привязки к фиксированному набору инструментов, часто используемому в текущих системах.
Проверка на сложных рабочих процессах
Чтобы подтвердить эффективность такого минималистичного подхода, исследователи оценили примитив «invoke» на сценариях, которые традиционно требуют сложных внешних harness (обвязок). Важное условие теста заключалось в том, что использовались только промпты (подсказки), никаких вручную спроектированных инструментов, никаких внешних систем памяти или файловой системы.
Результаты показали, что даже без специализированных систем JAZ способен эффективно справляться с задачами, требующими recall (припоминания) информации за пределами текущего контекстного окна, а также задач непрерывного самосовершенствования.
В частности, при тестировании на сценарии StuLife, где требуется работа с долгосрочной памятью, JAZ превзошел известный фреймворк Letta (MemGPT) на 8% в эффективности при выполнении половины затрат ресурсов, обычно необходимых Letta. В задачах непрерывного самосовершенствования на платформе AppWorld JAZ показал улучшение на 4% по сравнению с ACE, работая при этом с меньшими расходами.
Значение для будущего разработки
Эти результаты важны, так как они указывают на то, что сложность архитектуры агента не обязательно должна расти линейно со сложностью решаемых задач. Если минималистичный цикл, основанный на генерации кода и рекурсии, может превосходить системы с детально спроектированными модулями памяти и улучшения, это меняет подход к разработке будущих приложений на базе ИИ.
Вместо того чтобы создавать громоздкие экосистемы вокруг каждой модели, разработчики могут полагаться на гибкость самой модели, используя «invoke» как универсальный механизм взаимодействия. Это не только упрощает архитектуру, но и, как показывают эксперименты, может быть более экономически эффективным при достижении тех же или более высоких результатов.
Подход JAZ напоминает, что мощь современных языковых моделей часто недооценивается при попытках ограничить их жесткими структурированными обрамлениями. Иногда достаточно дать модели свободу генерировать свои собственные правила игры, и она сама найдет наиболее эффективный путь к решению задачи.