ChatPaper.aiChatPaper

CodeChain: Hacia la Generación Modular de Código a Través de una Cadena de Auto-revisiones con Sub-módulos Representativos

CodeChain: Towards Modular Code Generation Through Chain of Self-revisions with Representative Sub-modules

October 13, 2023
Autores: Hung Le, Hailin Chen, Amrita Saha, Akash Gokul, Doyen Sahoo, Shafiq Joty
cs.AI

Resumen

Los Modelos de Lenguaje de Gran Escala (LLMs, por sus siglas en inglés) ya han demostrado ser bastante competentes para resolver tareas de programación más simples, como las presentes en los benchmarks HumanEval o MBPP. Sin embargo, resolver problemas de programación más complejos y competitivos sigue siendo un desafío significativo para estos modelos, posiblemente debido a su tendencia a generar soluciones como bloques de código monolíticos en lugar de descomponerlos en sub-tareas y submódulos lógicos. Por otro lado, los programadores experimentados instintivamente escriben código modularizado con abstracciones para resolver tareas complejas, reutilizando con frecuencia módulos desarrollados previamente. Para abordar esta brecha, proponemos CodeChain, un marco novedoso para la inferencia que fomenta la generación de código modularizado a través de una cadena de auto-revisiones, cada una guiada por algunos submódulos representativos generados en iteraciones anteriores. Concretamente, CodeChain primero instruye al LLM para generar códigos modularizados mediante el enfoque de cadena de pensamiento (chain-of-thought prompting). Luego, aplica una cadena de auto-revisiones iterando dos pasos: 1) extraer y agrupar los submódulos generados, seleccionando los representantes de cada grupo como implementaciones más genéricas y reutilizables, y 2) enriquecer la cadena de pensamiento original con estas implementaciones de módulos seleccionadas e instruir al LLM para regenerar nuevas soluciones modularizadas. Descubrimos que, al fomentar naturalmente la reutilización de submódulos previamente desarrollados y verificados, CodeChain puede mejorar significativamente tanto la modularidad como la corrección de las soluciones generadas, logrando mejoras relativas en pass@1 del 35% en APPS y del 76% en CodeContests. Se demuestra que es efectivo tanto en LLMs de OpenAI como en LLMs de código abierto como WizardCoder. También realizamos estudios de ablación exhaustivos con diferentes métodos de prompting, número de grupos, tamaños de modelos, calidades de programas, etc., para proporcionar insights útiles que respaldan el éxito de 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.
PDF131December 15, 2024