Skip to main content
QUICK REVIEW

[논문 리뷰] Repository-Level Prompt Generation for Large Language Models of Code

Disha Shrivastava, Hugo Larochelle|arXiv (Cornell University)|2022. 06. 26.
Software Engineering Research인용 수 13
한 줄 요약

이 논문은 학습 가능한 프롬프트 제안을 통해 여러 파일에서 관련된 컨텍스트를 선택하여 코드 LLM에 대한 리포지터리 인식 프롬프트를 생성하는 블랙박스 프레임워크인 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신경망 기반 프롬프트 제안 분류기(PPC)는 다양한 코드베이스에 일반화되어 일관된 성능 향상을 달성할 수 있는가?
  • RQ5특히 전체 리포지터리 컨텍스트를 활용하는 것이 불가능할 경우, 프레임워크는 증가하는 컨텍스트 길이에 어떻게 스케일링되는가?

주요 결과

  • 프롬프트 제안에서 유도된 오라클 모델이 Codex 대비 코드 완성 정확도에서 36%의 상대적 향상을 달성하여, 제안된 컨텍스트 선택의 품질을 입증했다.
  • 학습된 프롬프트 제안 분류기(PPC)는 단일 라인 코드 완성 작업에서 Codex 및 다른 기준 모델 대비 뚜렷한 성능 향상을 달성했다.
  • 블랙박스 액세스 조건에서도 효과적으로 작동하여, Codex와 같은 기업용 LLM에 대해서도 모델 가중치나 파인튜닝 없이 적용 가능함을 보였다.
  • 제한된 컨텍스트 길이 조건에서도, RLPG는 의미적으로 관련 있는 리포지터리 전반의 컨텍스트에 집중함으로써, 임의의 스니펫보다 우수한 성능을 보였다.
  • 리포지터리 크기와 관계없이 성능가능성이 유지되었으며, 데이터셋의 70.22%의 리포지터리가 32k 토큰을 초과하여, 장기 컨텍스트 시나리오에서의 관련성을 입증했다.
  • 초기 결과는 다수의 프롬프트 제안을 조합하는 방식으로 프레임워크를 확장할 경우 추가적인 향상이 가능할 것으로 보이며, 향후 개선 잠재력이 매우 높음을 시사한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.