Skip to main content
QUICK REVIEW

[논문 리뷰] Can ChatGPT replace StackOverflow? A Study on Robustness and Reliability of Large Language Model Code Generation

Zhong Li, Zilong Wang|arXiv (Cornell University)|2023. 08. 20.
Software Engineering Research인용 수 6
한 줄 요약

이 논문은 대규모 언어 모델(Large Language Models, LLMs)이 생성한 코드의 신뢰성과 내구성을 평가하기 위한 벤치마크인 RobustAPI를 소개한다. 특히 자바의 API 오용 문제를 중심으로 다룬다. 기능적 정확성은 확보되었음에도 불구하고, GPT-4는 62%의 API 오용률을 보이며, 검증 없이 LLM 기반 코드를 실제 소프트웨어에 적용할 경우 심각한 위험을 노출시킨다.

ABSTRACT

Recently, the large language models (LLMs) have shown extraordinary ability in understanding natural language and generating programming code. It has been a common practice of software engineers to consult LLMs when encountering coding questions. Although efforts have been made to avoid syntax errors and align the code with the intended semantics, the reliability and robustness of the code generationfrom LLMs have not yet been thoroughly studied. The executable code is not equivalent to the reliable and robust code, especially in the context of real-world software development. The misuse of APIs in the generated code could lead to severe problem, such as resource leaks, program crashes. To make things worse, the users of LLM code generation services are actually the developers that are most vulnerable to these code that seems right -- They are always novice developers that are not familiar with the APIs that LLMs generate code for them. Therefore, they could hardly tell the misuse in the code generated by LLMs, which further facilitates the incorrect code applied in real-world software. Existing code evaluation benchmark and datasets focus on crafting small tasks such as programming questions in coding interviews, which however deviates from the problem that developers would ask LLM for real-world coding help. To fill the missing piece, in this work, we propose a dataset RobustAPI for evaluating the reliability and robustness of code generated by LLMs. We collect 1208 coding questions from StackOverflow on 24 representative Java APIs. We summarize thecommon misuse patterns of these APIs and evaluate them oncurrent popular LLMs. The evaluation results show that evenfor GPT-4, 62% of the generated code contains API misuses,which would cause unexpected consequences if the code isintroduced into real-world software.

연구 동기 및 목표

  • 기능적 정확성 외의 신뢰성과 내구성 평가를 위한 평가 프레임워크 부족 문제를 해결하기 위해.
  • 실제 소프트웨어 개발 환경에서 발생하는 공통적인 API 오용 패턴을 식별하고 정량화하기 위해.
  • 가장 널리 사용되는 자바 API에 초점을 맞추어 스택 오버플로우에서의 실제 개발자 질의를 반영한 벤치마크를 개발하기 위해.
  • 제안된 프롬프팅 전략(예: 컨텍스트 기반 학습 및 API 규칙 삽입)이 오용률 감소에 얼마나 효과적인지 평가하기 위해.
  • 미래의 신뢰할 수 있는 코드 생성 연구를 가능하게 하기 위해 데이터셋과 평가 프레임워크를 오픈소스화하기 위해.

제안 방법

  • 저자들은 18개의 대표적인 자바 API와 관련된 스택 오버플로우의 실제 코드 질문 1,208건을 수집하였다.
  • 정의된 정상적인 API 사용 패턴을 추상구문트리(abstract syntax trees, ASTs)를 활용해 구조화된 호출 시퀀스로 정형화하여 적절한 사용 순서를 정의하였다.
  • 기대되는 사용 패턴과 비교하여 생성된 코드의 AST 구조를 분석하기 위해 전용 평가기(evaluator)를 구축하였다.
  • 벤치마크는 GPT-3.5, GPT-4, Llama-2, Vicuna-1.5의 네 가지 LLM에 대해 제로샷 및 원샷 프롬프팅 설정에서 평가하였다.
  • 기능적 정확성과 API 오용 탐지 모두를 평가 지표로 사용하였으며, 오용은 구조화된 호출 시퀀스 위반으로 정의되었다.
  • 오용률 감소에 대한 영향을 평가하기 위해 온도 설정과 프롬프팅 기법(예: API 규칙 추가)을 시험하였다.

실험 결과

연구 질문

  • RQ1코드가 문법적으로 정확하고 사용자 의도와 정확히 일치하더라도, LLM이 생성한 코드에서 API 오용은 얼마나 퍼져 있는가?
  • RQ2관련 예시를 포함한 컨텍스트 기반 학습이 LLM이 생성한 코드에서의 API 오용률을 유의미하게 감소시킬 수 있는가?
  • RQ3프롬프트에 명시적인 API 사용 규칙을 삽입하는 것이 소수 샘플 프롬프팅에 비해 생성된 코드의 신뢰성을 향상시키는가?
  • RQ4어느 자바 API가 LLM에 의해 가장 자주 오용되는가? 그리고 주요 오용 패턴은 무엇인가?
  • RQ5온도 설정과 모델 아키텍처는 API 오용 발생 가능성을 어느 정도 영향을 미치는가?

주요 결과

  • 가장 고급 모델로 평가된 GPT-4조차도 생성된 코드에서 62%의 API 오용률을 보이며, 광범위한 신뢰성 문제를 드러낸다.
  • 원샷 관련 예시를 제공한 경우에도 GPT-3.5는 여전히 38.56%의 오용률을 유지하며, 소수 샘플 프롬프팅이 제한된 개선 효과를 보임을 시사한다.
  • 프롬프트에 API 사용 규칙를 삽입한 결과, 오용률 감소 효과가 유의미하지 않았으며, GPT-3.5는 이 설정에서 65.01%의 오용률을 기록하였다.
  • 컴파일 실패율은 GPT-4에서 가장 낮았고(<10%), GPT-3.5는 온도 설정이 높아질수록 더 높은 실패율을 보였다.
  • 안드로이드 API인 Activity.setContentView는 모든 모델에서 가장 낮은 오용률을 보이며, 일부 API는 LLM에게 더 예측 가능함을 시사한다.
  • 가장 흔한 오용 패턴은 예외 처리 누락, 자원의 잘못된 닫힘, 메서드 호출 순서 오류였다.

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

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

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

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