Бен Диксон

Внедрение агентов искусственного интеллекта для решения задач масштаба репозитория, таких как обнаружение ошибок, проверка патчей и анализ кода, требует преодоления значительных технических препятствий. Одним из главных узких мест является необходимость создания динамических песочниц для выполнения кода в каждом репозитории, что является дорогостоящим и ресурсоемким процессом.
Использование рассуждений на основе больших языковых моделей (LLM) вместо выполнения кода становится все более популярным способом обойти эти накладные расходы, однако это часто приводит к необоснованным предположениям и иллюзиям.
Для улучшения рассуждений без необходимости выполнения каких-либо действий исследователи из Meta вводят «полуформальные рассуждения» — структурированную технику подсказок. Этот метод требует от ИИ-агента заполнить логический сертификат, явно сформулировав предпосылки, проследив конкретные пути выполнения и сделав формальные выводы, прежде чем дать ответ.
Структурированный формат заставляет агента систематически собирать доказательства и отслеживать вызовы функций, прежде чем делать выводы. Это повышает точность LLM в задачах программирования и значительно снижает количество ошибок при локализации ошибок и ответах на вопросы в кодовой базе.
Для разработчиков, использующих LLM в задачах проверки кода, полуформальное рассуждение обеспечивает высоконадежный, не требующий выполнения семантический анализ кода, одновременно значительно снижая инфраструктурные затраты систем кодирования на основе ИИ.
Рассуждения агентного кода
Рассуждения агента о коде — это способность ИИ-агента перемещаться по файлам, отслеживать зависимости и итеративно собирать контекст для проведения глубокого семантического анализа кодовой базы без запуска самого кода. В корпоративных приложениях ИИ эта возможность имеет решающее значение для масштабирования автоматического обнаружения ошибок, всестороннего анализа кода и проверки исправлений в сложных репозиториях, где соответствующий контекст охватывает множество файлов.
В настоящее время в отрасли решают проблему верификации кода без выполнения двумя основными способами. Первый включает в себя неструктурированные LLM-оценщики, которые пытаются проверить код либо напрямую, либо путем обучения специализированных LLM-моделей в качестве моделей вознаграждения для аппроксимации результатов тестирования. Главный недостаток заключается в их опоре на неструктурированное рассуждение, что позволяет моделям делать уверенные заявления о поведении кода без явного обоснования. Без структурированных ограничений трудно гарантировать, что агенты будут рассуждать тщательно, а не гадать на основе поверхностных закономерностей, таких как имена функций.
Второй подход включает формальную верификацию, которая переводит код или рассуждения в формальные математические языки, такие как Lean, Coq или Datalog, для обеспечения автоматической проверки доказательств. Хотя формальные методы являются строгими, они требуют определения семантики языка программирования. Это совершенно непрактично для произвольных корпоративных кодовых баз, охватывающих множество фреймворков и языков.
Существующие подходы, как правило, сильно фрагментированы и ориентированы на конкретные задачи, часто требуя совершенно отдельных архитектур или специализированного обучения для каждой новой проблемной области. Им не хватает гибкости, необходимой для широких, многоцелевых корпоративных приложений.
Как работает полуформальное рассуждение
Чтобы преодолеть разрыв между неструктурированными предположениями и чрезмерно жесткими математическими доказательствами, исследователи Meta предлагают методологию структурированного подсказывания, которую они называют «полуформальным рассуждением». Этот подход предоставляет агентам LLM шаблоны структурированного рассуждения, специфичные для конкретной задачи.

Эти шаблоны функционируют как обязательные логические сертификаты. Для выполнения задачи агент должен явно сформулировать предпосылки, отследить пути выполнения конкретных тестов и сделать формальный вывод, основанный исключительно на проверяемых доказательствах.
Шаблон заставляет агента собирать доказательства из кода, прежде чем выносить суждение. Агент должен фактически отслеживать вызовы функций и потоки данных шаг за шагом, а не гадать об их поведении, основываясь на поверхностных соглашениях об именовании. Такой систематический сбор доказательств помогает агенту обрабатывать крайние случаи, такие как путаница в именах функций, и избегать необоснованных утверждений.
Полуформальное рассуждение в действии
Исследователи оценили полуформальное мышление в трех задачах разработки программного обеспечения: проверка эквивалентности патчей для определения того, дают ли два патча идентичные результаты тестирования без их запуска, локализация ошибок для точного определения строк кода, вызывающих ошибку, и ответы на вопросы о коде для проверки тонкого семантического понимания сложных кодовых баз. В экспериментах использовались модели Claude Opus-4.5 и Sonnet-4.5, выступающие в качестве автономных агентов-верификаторов.
Команда сравнила свой структурированный полуформальный подход с несколькими базовыми моделями, включая стандартное рассуждение, где агентной модели предоставляется минимальная подсказка, и ей разрешается свободно объяснять свои мысли на неструктурированном естественном языке. Они также сравнили его с традиционными алгоритмами определения сходства текста, такими как difflib.

В задачах на эквивалентность патчей полуформальное рассуждение повысило точность на сложных, тщательно отобранных примерах с 78% при использовании стандартного рассуждения до 88%. При оценке реальных патчей, сгенерированных агентами, с доступными спецификациями тестов, модель Opus-4.5, использующая полуформальное рассуждение, достигла точности проверки в 93%, превзойдя как базовый показатель для неструктурированных однократных задач (86%), так и базовый показатель difflib (73%). В других задачах наблюдались аналогичные улучшения по всем параметрам.
В статье на реальных примерах подчеркивается ценность полуформального мышления. В одном из случаев агент оценивает два патча из репозитория Python Django, которые пытаются исправить ошибку в форматировании двухзначных чисел для лет до 1000 г. н.э. Один из патчей использует пользовательскую функцию format() из библиотеки, которая переопределяет стандартную функцию, используемую в Python.
Стандартные модели рассуждений анализируют эти патчи, предполагают, что функция format() относится к стандартной встроенной функции Python, вычисляют, что оба подхода дадут одинаковый строковый результат, и ошибочно объявляют патчи эквивалентными.

Используя полуформальные рассуждения, агент отслеживает путь выполнения и проверяет определения методов. Следуя структурированному шаблону, агент обнаруживает, что в одном из файлов библиотеки имя функции format() фактически перекрыто пользовательской функцией уровня модуля. Агент формально доказывает, что, учитывая атрибуты входных данных, передаваемых в код, этот патч приведет к сбою системы, в то время как другой обеспечит успешный результат.
На основе своих экспериментов исследователи предполагают, что «агенты LLM могут выполнять осмысленный семантический анализ кода без выполнения каких-либо действий, потенциально снижая затраты на проверку в конвейерах обучения RL за счет избежания дорогостоящего выполнения в изолированной среде».
Оговорки и компромиссы
Хотя полуформальное рассуждение обеспечивает существенное повышение надежности, разработчикам корпоративных приложений следует учитывать ряд практических моментов, прежде чем его внедрять. Существует очевидный компромисс между вычислительными затратами и задержкой. Полуформальное рассуждение требует больше вызовов API и токенов. При оценке эквивалентности патчей полуформальное рассуждение потребовало примерно в 2,8 раза больше шагов выполнения, чем стандартное неструктурированное рассуждение.
Этот метод также не всегда улучшает производительность, особенно если модель уже обладает высокой квалификацией в конкретной задаче. Когда исследователи оценивали модель Sonnet-4.5 на тестовом наборе данных для решения задач с кодом, стандартное неструктурированное рассуждение уже показало высокую точность около 85%. Применение полуформального шаблона в этом сценарии не дало дополнительных преимуществ.
Кроме того, структурированное рассуждение может приводить к крайне неверным ответам с высокой степенью уверенности. Поскольку агент вынужден строить сложные, формальные цепочки доказательств, он может стать чрезмерно уверенным, если его исследование глубокое, но неполное. В одном из примеров на Python агент тщательно проследил пять различных функций, чтобы выявить допустимый крайний случай, но совершенно упустил из виду, что в последующем фрагменте кода этот сценарий уже безопасно обрабатывается. Поскольку он построил надежную цепочку доказательств, он выдал неверный вывод с чрезвычайно высокой степенью уверенности.
Система перестаёт полагаться на конкретные доказательства, когда выходит за рамки кодовой базы. При анализе сторонних библиотек, исходный код которых недоступен, агент всё равно будет прибегать к угадыванию поведения на основе имён функций.
А в некоторых случаях, несмотря на строгие инструкции, модели порой не могут полностью отследить конкретные пути выполнения.
В конечном счете, хотя полуформальное рассуждение значительно уменьшает неструктурированные догадки и галлюцинации, оно не устраняет их полностью.
Что должны усвоить разработчики
Этот метод можно использовать «из коробки», не требуя обучения модели или специальной упаковки. Он не требует выполнения кода, а значит, вам не нужно добавлять дополнительные инструменты в вашу среду LLM. Вы платите больше вычислительных ресурсов во время вывода, чтобы получить более высокую точность при задачах проверки кода.
Исследователи предполагают, что структурированное агентное рассуждение может предложить «гибкую альтернативу классическим инструментам статического анализа: вместо кодирования логики анализа в специализированных алгоритмах мы можем использовать для агентов LLM шаблоны рассуждений, специфичные для конкретной задачи, которые обобщаются на разные языки и фреймворки».
Исследователи предоставили шаблоны подсказок, что позволяет легко интегрировать их в ваши приложения. Хотя много говорят о том, что разработка подсказок устарела, этот метод показывает, насколько высокую производительность можно получить от хорошо структурированных подсказок.
Подпишитесь, чтобы получать самые свежие новости!
Подробные аналитические данные для руководителей предприятий в области искусственного интеллекта, данных и безопасности.
Отправляя свой адрес электронной почты, вы соглашаетесь с нашими Условиями использования и Политикой конфиденциальности.
Получайте обновления ! Вы подписаны! Наши последние новости скоро поступят на вашу электронную почту.
Источник: venturebeat.com





















