SalesForce AI представляет CodeChain инновационный фреймворк искусственного интеллекта для генерации модульного кода через цепочку самоисправлений с представительными подмодулями.

CodeChain инновационный фреймворк искусственного интеллекта от SalesForce AI для генерации модульного кода через цепочку самоисправлений с представительными подмодулями.

Одной из главных целей изучения искусственного интеллекта является разработка систем ИИ, которые могут предоставлять полезные компьютерные программы для решения сложных задач. В последние годы был сделан значительный прогресс в этом направлении, особенно благодаря замечательным успехам масштабных предварительно обученных моделей языка (LLM). Эти модели были созданы в первую очередь для понимания естественного языка, но теперь они расширили свои возможности и могут генерировать и понимать код и текст. Благодаря этому развитию был достигнут значительный прогресс в создании кода на основе описания проблем на естественном языке.

LLM уже показали свою способность справляться с простыми программными задачами, как показано их достижениями в испытаниях, таких как MBPP и HumanEval. Однако эти модели сталкиваются с серьезными трудностями при попытке решения более сложных и конкурентных программных задач. Их склонность предоставлять кодовые решения в виде монолитных блоков, а не декомпозировать их на логические подзадачи и повторно используемые подмодули, является одной из основных причин их трудностей. С другой стороны, сталкиваясь с сложными проблемами, опытные человеческие программисты инстинктивно пишут модульный и абстрактный код. Путем повторного использования ранее созданных модулей они эффективно расширяют свои текущие знания и навыки.

В недавнем исследовании команда исследователей из Salesforce Research представила CodeChain, инновационную систему для сокращения разрыва между LLM и человеческими разработчиками. С помощью последовательности саморевизий, основанных на представительных подмодулях, разработанных в предыдущих итерациях, эта система стремится улучшить процесс разработки модульного кода. CodeChain указывает LLM написать модульный код, используя подход цепочки мыслей. Целью является стимулирование модели подходить к решению проблемы в терминах логических подзадач и подмодулей.

Основой CodeChain является последовательность саморевизий. В ней две итерационные фазы, которые следующие:

  1. Извлечение и кластеризация подмодулей: На этом этапе анализируется код, созданный LLM, и находятся подмодули. После этого они группируются в кластеры, и из каждого кластера выбираются представительные подмодули. Эти представления считаются более широко применимыми и повторно используемыми.
  1. Дополнение и повторное генерирование предложения: Исходное предложение цепочки мыслей улучшается и восстанавливается путем интеграции выбранных реализаций модулей из предыдущего этапа. После этого LLM снова регистрируются генерировать новые модульные решения. В результате модель может эффективно расширять информацию и понимание, полученные из предыдущих итераций.

CodeChain оказывает огромное влияние на генерацию кода. Команда поделилась тем, что модулярность и точность сгенерированных решений существенно улучшаются за счет вынуждения LLM создавать и повторно использовать предварительно созданные проверенные подмодули. Величина относительных улучшений pass@1 составляет 35% на APPS и потрясающие 76% на CodeContests. Эти изменения продемонстрированы на различных LLM, включая открытые LLM, такие как WizardCoder и модели от OpenAI. Были проведены всесторонние исследования для получения более глубокого понимания элементов, которые способствовали успеху CodeChain. В рамках этих исследований были изучены такие аспекты, как техники постановки задач, количество используемых кластеров, размеры моделей LLM и качество созданных программ. Полученные понимания по этих исследованиях объясняют, почему CodeChain так успешно повышает качество и модулярность кода, созданного LLM.

В заключение, CodeChain является революционным развитием в области генерации кода с использованием больших языковых моделей. Он добивается этого путем стимулирования модульности и облегчения саморевизий с помощью повторного использования созданных ранее подмодулей, тем самым сокращая разрыв между LLM и опытными человеческими программистами.