CodeChain: К модульной генерации кода через цепочку самокоррекций с использованием репрезентативных подмодулей
CodeChain: Towards Modular Code Generation Through Chain of Self-revisions with Representative Sub-modules
October 13, 2023
Авторы: Hung Le, Hailin Chen, Amrita Saha, Akash Gokul, Doyen Sahoo, Shafiq Joty
cs.AI
Аннотация
Крупные языковые модели (LLM) уже достигли значительных успехов в решении более простых задач программирования, таких как те, что представлены в бенчмарках HumanEval или MBPP. Однако решение более сложных и конкурентных задач программирования по-прежнему остается серьезным вызовом для этих моделей — возможно, из-за их склонности генерировать решения в виде монолитных блоков кода вместо того, чтобы разбивать их на логические подзадачи и подмодули. С другой стороны, опытные программисты инстинктивно пишут модульный код с использованием абстракций для решения сложных задач, часто повторно используя ранее разработанные модули. Чтобы устранить этот разрыв, мы предлагаем CodeChain — новый фреймворк для вывода, который стимулирует генерацию модульного кода через цепочку самопересмотров, каждый из которых направляется репрезентативными подмодулями, сгенерированными на предыдущих итерациях. Конкретно, CodeChain сначала инструктирует LLM генерировать модульный код с помощью подсказок по цепочке рассуждений (chain-of-thought prompting). Затем он применяет цепочку самопересмотров, итерируя два шага: 1) извлечение и кластеризация сгенерированных подмодулей с выбором представителей кластеров в качестве более универсальных и повторно используемых реализаций и 2) дополнение исходной подсказки по цепочке рассуждений этими выбранными реализациями модулей и инструкция LLM повторно генерировать новые модульные решения. Мы обнаружили, что, естественным образом поощряя LLM повторно использовать ранее разработанные и проверенные подмодули, CodeChain может значительно повысить как модульность, так и корректность генерируемых решений, достигая относительного улучшения pass@1 на 35% для APPS и на 76% для CodeContests. Показано, что он эффективен как для LLM от OpenAI, так и для открытых LLM, таких как WizardCoder. Мы также проводим всесторонние исследования абляции с различными методами подсказок, количеством кластеров, размерами моделей, качеством программ и т.д., чтобы предоставить полезные инсайты, лежащие в основе успеха CodeChain.
English
Large Language Models (LLMs) have already become quite proficient at solving
simpler programming tasks like those in HumanEval or MBPP benchmarks. However,
solving more complex and competitive programming tasks is still quite
challenging for these models - possibly due to their tendency to generate
solutions as monolithic code blocks instead of decomposing them into logical
sub-tasks and sub-modules. On the other hand, experienced programmers
instinctively write modularized code with abstraction for solving complex
tasks, often reusing previously developed modules. To address this gap, we
propose CodeChain, a novel framework for inference that elicits modularized
code generation through a chain of self-revisions, each being guided by some
representative sub-modules generated in previous iterations. Concretely,
CodeChain first instructs the LLM to generate modularized codes through
chain-of-thought prompting. Then it applies a chain of self-revisions by
iterating the two steps: 1) extracting and clustering the generated sub-modules
and selecting the cluster representatives as the more generic and re-usable
implementations, and 2) augmenting the original chain-of-thought prompt with
these selected module-implementations and instructing the LLM to re-generate
new modularized solutions. We find that by naturally encouraging the LLM to
reuse the previously developed and verified sub-modules, CodeChain can
significantly boost both modularity as well as correctness of the generated
solutions, achieving relative pass@1 improvements of 35% on APPS and 76% on
CodeContests. It is shown to be effective on both OpenAI LLMs as well as
open-sourced LLMs like WizardCoder. We also conduct comprehensive ablation
studies with different methods of prompting, number of clusters, model sizes,
program qualities, etc., to provide useful insights that underpin CodeChain's
success.