Skip to main content
QUICK REVIEW

[논문 리뷰] Interactive Code Generation via Test-Driven User-Intent Formalization

Shuvendu K. Lahiri, Fakhoury, Sarah|arXiv (Cornell University)|2022. 08. 11.
Software Engineering Research인용 수 24
한 줄 요약

본 논문은 TiCoder로 구현된 대화형 테스트 주도 코드 생성(ITDCG)을 제안하며, 생성된 테스트를 통해 의도를 형식화하고 코드 제안을 가지치기/순위화하기 위해 경량 사용자 피드백을 활용하고, MBPP 및 HumanEval에서 pass@k 지표를 향상시킵니다.

ABSTRACT

Large language models (LLMs) have shown great potential in automating significant aspects of coding by producing natural code from informal natural language (NL) intent. However, when interacting with LLMs, users have no guarantees that the code suggestions produced correctly satisfy the intent they provided. In fact, it is hard to define a notion of correctness since natural language can be ambiguous and lacks a formal semantics. In this paper, we propose the workflow of {\it interactive test-driven code generation}, which leverages lightweight user feedback to (a) formalize the user intent using generated tests that can be useful for debugging, and (b) produce an improved set of code suggestions by pruning and ranking candidate code suggestions. We describe a language-agnostic abstract algorithm and a concrete implementation TiCoder. We perform an automated evaluation of TiCoder on the \emph{MBPP} and \emph{HumanEval} code generation benchmarks. Our results are promising with using the OpenAI Codex LLM: our best algorithm improves the \passk{1} code generation accuracy (in absolute percentages) between $22.49\%$ to $37.71\%$ for MBPP and between $24.79\%$ to $53.98\%$ for HumanEval using between 1 to 5 simulated user queries.

연구 동기 및 목표

  • 생성된 테스트를 가볍고 실행 가능한 명세로 삼아 코드 생성을 위한 사용자 의도를 형식화한다
  • 사용자가 고려한 테스트의 런타임 피드백을 사용하여 LLM이 생성한 코드 제안을 가지치고 순위를 매긴다
  • 언어에 구애받지 않는 추상 ITDCG 알고리즘과 구체적 구현(TiCoder)을 제공한다
  • 기반 LLM으로 Codex를 사용하여 Python 데이터셋 MBPP와 HumanEval에서 ITDCG를 평가한다
  • 상호작용, 프롬프트, 변이, 순위 매김의 기여를 순수하게 LLM 기반의 기준선과 비교하여 시연한다

제안 방법

  • 테스트를 가지치기, 변이, 순위 매김하기 위한 구성요소들로 매개화된 추상 InteractiveTestDrivenCodeGen 알고리즘을 설명한다
  • 문제 설명으로부터 코드와 테스트를 생성하기 위해 CodePrompt와 TestPrompt로 TiCoder를 구현한다
  • 테스트 세트를 확장하기 위해 구문적 변이(SyntacticMutateTests)와 동적 변이(DynMutateTests)를 사용한다
  • 가지치기 효과를 극대화하는 쿼리를 선택하도록 테스트를 순위 매김(RankTests)하고, 그에 따라 코드 후보를 가지치거나 유지한다
  • 예시가 얼마나 많은 테스트를 충족하는지에 따라 코드 제안을 순위 매김(RankCodes)한다
  • pass@k@m 및 accept@{m} 지표로 평가하되, m은 사용자 쿼리의 수를 나타낸다
  • 오프라인 평가를 위한 사용자 응답을 시뮬레이션하기 위해 오라클(참조 구현)을 사용한다

실험 결과

연구 질문

  • RQ1상호작용 워크플로가 기초선 대비 코드 제안의 정확도(pass@k@m)를 어떻게 향상시키는가?
  • RQ2시뮬레이션된 사용자 쿼리 수가 늘어남에 따라 생성된 코드와 테스트의 정확도가 어떻게 향상되는가?
  • RQ3프롬프트, 변이, 순위 매김과 같은 설계 선택이 ITDCG의 전반적 효율성에 어떤 영향을 미치는가?

주요 결과

  • TiCoder는 하나의 사용자 쿼리로 MBPP에서 pass@1@1 70.73%, HumanEval에서 55.28%를 달성하여 Codex 기준선 및 다수의 기준선보다 우수하다.
  • 다섯 개의 사용자 쿼리로 보고된 구성에서 TiCoder는 MBPP 70.73%, HumanEval 55.28%의 pass@1@1을 달성하며 이상적인 순위에 근접한 성능을 얻을 수 있다.
  • TiCoder는 상호작용 없이 Baseline과 Codex를 k=2,5,10에서 MBPP와 HumanEval 모두에 대해 지속적으로 능가한다.
  • 오라클 기반 평가를 사용하면, 더 많은 사용자 쿼리로 TiCoder가 IdealRanking에 근접하게 되어 테스트 주도적 해명으로부터 큰 이점을 시사한다.
  • 기본 TiCoder 구성(TestGenPrompt = pass, StaticMutateTests = single-assert, DynMutateTests = assert-rewrite-all, TestRanking = discriminative, CodeRanking = passing-tests)은 강한 pass@1@1 성능을 위해 선택되었다.
  • 평균 1.7개의 사용자 쿼리로 MBPP의 87.12%, HumanEval의 95.73% 예제에 대해 사용자 의도와 일치하는 단위 테스트를 생성하는 데 충분하다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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