Искусственный интеллект (ИИ) становится незаменимым помощником в самых разных сферах: от научных исследований до автоматизации задач в сфере управления персоналом или финансов. В частности, многие профессионалы используют возможности полуавтономных программных систем, называемых ИИ-агентами, которые могут обращаться к ИИ для решения задач и выполнения рутинных операций.
ИИ-агенты особенно эффективны, когда используют большие языковые модели (LLM), поскольку эти системы мощные, эффективные и адаптивные. Один из способов программирования такой технологии — описать в коде, что вы хотите, чтобы ваша система делала (рабочий процесс), включая использование LLM в определённых точках.
Например, если вы представляете собой компанию-разработчика программного обеспечения, которая пытается обновить свою старую кодовую базу, чтобы использовать более современный язык программирования для оптимизации и повышения безопасности, вы можете создать систему, которая использует LLM для перевода кодовой базы по одному файлу за раз, тестируя каждый файл по ходу работы.
Однако что происходит, когда LLM допускают ошибки? Вам нужно, чтобы агент вернулся назад и сделал ещё одну попытку, учтя уроки, извлечённые из предыдущих ошибок. Кодирование этого может потребовать столько же усилий, сколько и реализация исходного агента. Если ваша система для перевода кодовой базы содержит тысячи строк кода, вам придётся внести тысячи изменений или дополнений в код, чтобы поддержать логику возврата назад при ошибках LLM.
Решение от MIT и Asari AI
Чтобы сэкономить время и усилия программистов, исследователи из Лаборатории компьютерных наук и искусственного интеллекта Массачусетского технологического института (MIT CSAIL) и Asari AI разработали фреймворк под названием EnCompass.
С помощью EnCompass вам больше не нужно вносить эти изменения самостоятельно. Вместо этого, когда EnCompass запускает вашу программу, он автоматически возвращается назад, если LLM допускают ошибки. EnCompass также может создавать копии среды выполнения программы для параллельных попыток поиска наилучшего решения.
В общем случае EnCompass ищет различные возможные пути, которые может выбрать ваш агент, в результате различных возможных выходов всех вызовов LLM, ища путь, на котором LLM находит наилучшее решение.
Всё, что вам нужно сделать, — это аннотировать места, где вы хотите, чтобы программа возвращалась назад или клонировала среду выполнения программы, а также записать любую информацию, которая может быть полезна для стратегии поиска по различным возможным путям выполнения вашего агента (стратегия поиска). Вы можете отдельно указать стратегию поиска — вы можете использовать одну из тех, что EnCompass предоставляет «из коробки», или, при желании, реализовать собственную пользовательскую стратегию поиска.
«С помощью EnCompass мы отделили стратегию поиска от основного рабочего процесса ИИ-агента», — говорит ведущий автор Чжэнин Ли, докторант MIT в области электротехники и компьютерных наук (EECS), исследователь CSAIL и консультант по исследованиям в Asari AI. «Наш фреймворк позволяет программистам легко экспериментировать с различными стратегиями поиска, чтобы найти ту, которая заставит ИИ-агента работать наилучшим образом».
EnCompass использовался для агентов, реализованных в виде программ на Python, которые вызывают LLM, где он продемонстрировал заметную экономию кода. EnCompass сократил усилия по кодированию для реализации поиска до 80 процентов по сравнению с агентами, такими как агент для перевода репозиториев кода и для обнаружения правил преобразования цифровых сеток.
В будущем EnCompass может позволить агентам решать крупномасштабные задачи, включая управление огромными библиотеками кода, проектирование и проведение научных экспериментов, а также создание чертежей для ракет и другого оборудования.
Разветвление
При программировании вашего агента вы отмечаете определённые операции — такие как вызовы LLM, — где результаты могут различаться. Эти аннотации называются «точками ветвления». Если представить, что ваша программа-агент генерирует единую сюжетную линию, то добавление точек ветвления превращает историю в игру «Выбери своё приключение», где точки ветвления — это места, где сюжет разветвляется на несколько будущих сюжетных линий.
Вы можете указать стратегию, которую EnCompass использует для навигации по этой сюжетной игре в поисках наилучшего возможного финала. Это может включать запуск параллельных потоков выполнения или возврат назад к предыдущей точке ветвления, когда вы попадаете в тупик.
Пользователи также могут использовать несколько общих стратегий поиска, предоставляемых EnCompass «из коробки», или определить свою собственную пользовательскую стратегию. Например, вы можете выбрать поиск по дереву Монте-Карло, который строит дерево поиска, балансируя исследование и эксплуатацию, или лучевой поиск, который сохраняет несколько лучших выходных данных с каждого шага.
EnCompass упрощает эксперименты с различными подходами, чтобы найти наилучшую стратегию для максимизации вероятности успешного выполнения вашей задачи.
Эффективность кодирования EnCompass
Насколько эффективен EnCompass с точки зрения кодирования для добавления поиска в программы-агенты? Согласно выводам исследователей, фреймворк значительно сокращает объём кода, который программистам необходимо добавить в свои программы-агенты для добавления поиска, помогая им экспериментировать с различными стратегиями, чтобы найти ту, которая работает наилучшим образом.
Например, исследователи применили EnCompass к агенту, который переводит репозиторий кода с языка программирования Java на Python. Они обнаружили, что реализация поиска с помощью EnCompass — в основном путём добавления аннотаций точек ветвления и аннотаций, которые записывают, насколько хорошо каждый шаг выполнен, — потребовала на 348 строк кода меньше (около 82 процентов), чем реализация вручную.
«По мере того как LLM становятся неотъемлемой частью повседневного программного обеспечения, становится всё более важным понимать, как эффективно создавать программное обеспечение, которое использует их сильные стороны и работает с учётом их ограничений», — говорит соавтор Армандо Солар-Лезама, профессор MIT в области EECS и главный исследователь CSAIL. «EnCompass — важный шаг в этом направлении».
Исследователи добавляют, что EnCompass ориентирован на агентов, где программа определяет шаги высокоуровневого рабочего процесса; текущая версия их фреймворка менее применима к агентам, которые полностью контролируются LLM. «В этих агентах вместо того, чтобы иметь программу, которая определяет шаги, а затем использовать LLM для выполнения этих шагов, сама LLM решает всё», — говорит Ли. «Здесь нет базового программного рабочего процесса, поэтому вы можете выполнять поиск во время вывода на основе того, что LLM изобретает на лету. В этом случае потребность в таком инструменте, как EnCompass, который модифицирует способ выполнения программы с помощью поиска и возврата назад, снижается».
Ли и его коллеги планируют расширить EnCompass до более общих поисковых фреймворков для ИИ-агентов. Они также планируют протестировать свою систему на более сложных задачах, чтобы усовершенствовать её для использования в реальных условиях, в том числе в компаниях. Кроме того, они оценивают, насколько хорошо EnCompass помогает агентам работать с людьми над такими задачами, как мозговой штурм по разработке оборудования или перевод гораздо больших кодовых библиотек.
На данный момент EnCompass — это мощный строительный блок, который позволяет людям более легко экспериментировать с ИИ-агентами, повышая их производительность.
«EnCompass появляется в нужный момент, поскольку агенты, управляемые ИИ, и методы поиска на основе поиска начинают менять рабочие процессы в разработке программного обеспечения», — говорит профессор Университета Карнеги-Меллона Имин Ян, который не участвовал в исследовании. «Четко разделяя логику программирования агента от его стратегии поиска во время вывода, фреймворк предлагает принципиальный способ изучить, как структурированный поиск может улучшить генерацию кода, перевод и анализ. Эта абстракция обеспечивает прочную основу для более систематических и надёжных подходов к разработке программного обеспечения, основанных на поиске».
Ли и Солар-Лезама написали статью с двумя исследователями из Asari AI: профессором Калифорнийского технологического института Исонгом Юэ, советником в компании; и старшим автором Стефаном Чжэном, основателем и генеральным директором. Их работа была поддержана Asari AI.
Команда представила свою работу на конференции по системам обработки нейронной информации (NeurIPS) в декабре.
1. Какие проблемы решает фреймворк EnCompass при работе с ИИ-агентами и большими языковыми моделями (LLM)?
Фреймворк EnCompass решает проблему необходимости вручную вносить изменения в код при ошибках LLM. Он автоматически возвращается назад при ошибках LLM и создаёт копии среды выполнения программы для параллельных попыток поиска наилучшего решения.
2. Какие возможности предоставляет EnCompass для программистов при работе с ИИ-агентами?
EnCompass позволяет программистам легко экспериментировать с различными стратегиями поиска, чтобы найти ту, которая заставит ИИ-агента работать наилучшим образом. Пользователи могут использовать несколько общих стратегий поиска, предоставляемых EnCompass «из коробки», или определить свою собственную пользовательскую стратегию.
3. Какие примеры использования EnCompass приведены в статье?
В статье приведены примеры использования EnCompass для агентов, реализованных в виде программ на Python, которые вызывают LLM. Например, EnCompass использовался для агента, который переводит репозиторий кода с языка программирования Java на Python.
4. Какие перспективы открывает использование EnCompass в будущем?
В будущем EnCompass может позволить агентам решать крупномасштабные задачи, включая управление огромными библиотеками кода, проектирование и проведение научных экспериментов, а также создание чертежей для ракет и другого оборудования.
5. Какие ограничения существуют у EnCompass на данный момент?
На данный момент EnCompass менее применим к агентам, которые полностью контролируются LLM. В этих агентах вместо того, чтобы иметь программу, которая определяет шаги, а затем использовать LLM для выполнения этих шагов, сама LLM решает всё. Здесь нет базового программного рабочего процесса, поэтому EnCompass не так необходим.