Skip to main content
QUICK REVIEW

[論文レビュー] Repository-Level Prompt Generation for Large Language Models of Code

Disha Shrivastava, Hugo Larochelle|arXiv (Cornell University)|Jun 26, 2022
Software Engineering Research被引用数 13
ひとこと要約

本稿では、学習可能なプロンプト提案を用いて複数のファイルから関連するコンテキストを選択することで、リポジトリに特化したプロンプトを生成するブラックボックスフレームワーク、Repo-Level Prompt Generator (RLPG) を提案する。この手法は、モデルの微調整を必要とせず、構造的および意味的リポジトリコンテキストを活用することで、Codex よりも 36% の相対的改善を達成した。

ABSTRACT

With the success of large language models (LLMs) of code and their use as code assistants (e.g. Codex used in GitHub Copilot), techniques for introducing domain-specific knowledge in the prompt design process become important. In this work, we propose a framework called Repo-Level Prompt Generator that learns to generate example-specific prompts using prompt proposals. The prompt proposals take context from the entire repository, thereby incorporating both the structure of the repository and the context from other relevant files (e.g. imports, parent class files). Our technique doesn't require any access to the weights of the LLM, making it applicable in cases where we only have black-box access to the LLM. We conduct experiments on the task of single-line code-autocompletion using code repositories taken from Google Code archives. We demonstrate that an oracle constructed from our prompt proposals gives a remarkably high relative improvement of 36% over Codex, showing the quality of these proposals. Further, we show that when we train a model to predict a prompt proposal, we can achieve significant performance gains over Codex and other baselines. We release our code, data, and trained checkpoints at: \url{https://github.com/shrivastavadisha/repo_level_prompt_generation}.

研究の動機と目的

  • コード LLM のプロンプトにリポジトリ全体のコンテキストを統合するための体系的でない手法の欠如に対処すること。
  • モデル重みへのアクセスがなくても、ブラックボックスのデプロイメントを可能にする、例に特化した効果的なプロンプト生成を可能にすること。
  • リポジトリ構造とファイルコンテンツから導かれる解釈可能な構造的プロンプト提案を通じて、ドメイン知識をプロンプト設計に統合すること。
  • リポジトリ全体の関連ファイルからインポート、親クラス、関連ファイルのコンテキストを適切に選択することで、コード自動補完性能を向上させること。
  • 特許やニッチなソフトウェアリポジトリに適応させるために、スケーラブルで微調整を必要としない代替手法を提供すること。

提案手法

  • フレームワークは、インポートされたファイルからのメソッド名や本体、親ファイルからのクラス定義など、リポジトリから特定のコンテキストを抽出する、事前に定義された人間が読み取り可能なプロンプト提案のセットを使用する。
  • ニューラル・プロンプト提案分類器 (PPC) を訓練し、リポジトリとターゲット位置に基づいて、与えられたコード補完ターゲットに対して最も効果的なプロンプト提案を予測する。
  • 選択されたプロンプト提案は、デフォルトのコンテキスト(例:ターゲットの穴の前のコード)と組み合わせられ、LLM 用の最終的なプロンプトが形成される。
  • この手法はブラックボックスアクセスを前提としており、下位の LLM の微調整を必要としないため、Codex のような特許モデルに対しても適用可能である。
  • プロンプト提案は、インポート文からの識別子の抽出や、親クラスからのメソッドシグネチャの抽出といった、コード意味論に基づいて解釈可能である。
  • フレームワークは、Google Code アーカイブのリポジトリを用いて単一ラインのコード補完タスクで評価され、Codex やベースラインと比較して性能が測定された。

実験結果

リサーチクエスチョン

  • RQ1学習可能なプロンプト選択メカニズムにより、LLM の微調整を伴わずにリポジトリ全体のコンテキストを活用することで、コード補完性能を向上させることができるか?
  • RQ2Codex との標準的 few-shot プロンプティングと比較して、ブラックボックスでリポジトリに特化したプロンプト生成フレームワークはどの程度効果的か?
  • RQ3複数のファイルからの構造的および意味的コンテキストを捉えるプロンプト提案は、コード補完の正確性をどの程度向上させることができるか?
  • RQ4ニューラル・プロンプト提案分類器は、多様なコードベースに一般化可能であり、一貫した性能向上を達成できるか?
  • RQ5特にリポジトリ全体のコンテキストが実現不可能な場合を除き、文脈長が増加するに従って、このフレームワークはどの程度スケーラブルか?

主な発見

  • プロンプト提案から構築されたオラクルは、Codex よりも 36% の相対的改善を達成し、提案されたコンテキスト選択の質を示した。
  • 訓練されたプロンプト提案分類器 (PPC) は、単一ラインのコード補完タスクにおいて、Codex や他のベースラインを大きく上回る性能向上を達成した。
  • フレームワークはブラックボックスアクセスでも効果的に動作し、Codex のような特許モデルに対しても、モデル重みや微調整を必要とせずに適用可能である。
  • 文脈長が限られている状況でも、RLPG は任意のスニペットではなく、意味的に関連するリポジトリ全体のコンテキストに焦点を当てることで、標準的プロンプティングを上回った。
  • リポジトリサイズにかかわらず有効であることが示された。データセットの 70.22% のリポジトリが 32k トークンを超えており、長文脈シナリオにおけるその有用性が強調された。
  • 予備の結果では、複数のプロンプト提案を組み合わせることでさらなる改善が得られると示唆されており、今後の拡張に強い可能性を示している。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。