ChatPaper.aiChatPaper

Contexte statique des modèles de langage de grande taille avec des trous typés

Statically Contextualizing Large Language Models with Typed Holes

September 2, 2024
papers.authors: Andrew Blinn, Xiang Li, June Hyung Kim, Cyrus Omar
cs.AI

papers.abstract

Les grands modèles de langage (LLM) ont remodelé le paysage de la synthèse de programmes. Cependant, les systèmes contemporains de complétion de code basés sur les LLM produisent souvent du code erroné car ils manquent de contexte approprié, particulièrement lorsqu'ils travaillent avec des définitions absentes des données d'entraînement ou éloignées du curseur. Cet article démontre qu'une intégration étroite avec la structure de typage et de liaison d'un langage, telle qu'exposée par son serveur de langage, peut résoudre ce problème de contextualisation de manière efficace en tokens. En bref, nous soutenons que les IA ont aussi besoin d'IDE ! Nous intégrons notamment la génération de code par LLM dans l'environnement d'esquisse de programmes en direct Hazel. Le serveur de langage Hazel identifie le type et le contexte de typage du trou à combler, même en présence d'erreurs, garantissant qu'une ébauche de programme significative est toujours disponible. Cela permet d'inciter le modèle avec des informations contextuelles à l'échelle de la base de code qui ne sont pas lexicalement locales au curseur, ni nécessairement dans le même fichier, mais qui sont probablement sémantiquement locales à l'objectif du développeur. Les complétions synthétisées par le LLM sont ensuite affinées itérativement via un dialogue supplémentaire avec le serveur de langage. Pour évaluer ces techniques, nous présentons MVUBench, un jeu de données d'applications web modèle-vue-mise à jour (MVU). Ces applications servent de problèmes difficiles en raison de leur dépendance à des structures de données spécifiques à l'application. Nous constatons que la contextualisation avec les définitions de types est particulièrement impactante. Après avoir présenté nos idées dans le contexte de Hazel, nous dupliquons nos techniques et portons MVUBench vers TypeScript afin de valider l'applicabilité de ces méthodes à des langages plus riches en ressources. Enfin, nous décrivons ChatLSP, une extension conservative du protocole de serveur de langage (LSP) que les serveurs de langage peuvent implémenter pour exposer des capacités que les systèmes de complétion de code par IA de diverses conceptions peuvent utiliser pour incorporer un contexte statique lors de la génération d'invites pour un LLM.
English
Large language models (LLMs) have reshaped the landscape of program synthesis. However, contemporary LLM-based code completion systems often hallucinate broken code because they lack appropriate context, particularly when working with definitions not in the training data nor near the cursor. This paper demonstrates that tight integration with the type and binding structure of a language, as exposed by its language server, can address this contextualization problem in a token-efficient manner. In short, we contend that AIs need IDEs, too! In particular, we integrate LLM code generation into the Hazel live program sketching environment. The Hazel Language Server identifies the type and typing context of the hole being filled, even in the presence of errors, ensuring that a meaningful program sketch is always available. This allows prompting with codebase-wide contextual information not lexically local to the cursor, nor necessarily in the same file, but that is likely to be semantically local to the developer's goal. Completions synthesized by the LLM are then iteratively refined via further dialog with the language server. To evaluate these techniques, we introduce MVUBench, a dataset of model-view-update (MVU) web applications. These applications serve as challenge problems due to their reliance on application-specific data structures. We find that contextualization with type definitions is particularly impactful. After introducing our ideas in the context of Hazel we duplicate our techniques and port MVUBench to TypeScript in order to validate the applicability of these methods to higher-resource languages. Finally, we outline ChatLSP, a conservative extension to the Language Server Protocol (LSP) that language servers can implement to expose capabilities that AI code completion systems of various designs can use to incorporate static context when generating prompts for an LLM.
PDF42November 14, 2024