자연어에서 검증된 코드로: Dafny 기반 형식 검증을 통한 AI 보조 문제-코드 생성으로의 도약
요약
본 연구는 대형 언어 모델(LLMs)이 생성한 코드가 가지는 정확성 문제를 형식 검증(formal verification)을 통해 해결하고자 합니다. 이를 위해 'NaturalLanguage2VerifiedCode (NL2VC)-60' 데이터셋을 구축하고, 계층적 프롬프팅 전략(tiered prompting strategy)을 사용하여 7개 오픈-웨이트 LLM의 성능을 평가했습니다. 그 결과, 단순한 자연어 입력만으로는 성공률이 낮았으나, 구조적인 서명 제공이나 검증기 피드백을 활용하는 자기 치유(self-healing) 프롬프팅 전략을 사용할 경우 모델의 성능이 극적으로 향상됨을 입증했습니다.
핵심 포인트
- LLMs의 코드 생성 정확성 문제를 형식 검증으로 보장할 수 있음.
- NL2VC-60 데이터셋은 자연어 문제에서 검증 가능한 코드로 변환하는 데 사용됨.
- 단순 프롬프팅보다 구조적 서명(signature)이나 반복적인 자기 치유(self-healing) 피드백이 모델 성능 향상에 결정적임.
- Gemma 4-31B와 같은 오픈-웨이트 LLM도 형식 검증을 통해 고신뢰 소프트웨어 개발에 활용 가능함.
대형 언어 모델 (LLMs) 은 자동화된 소프트웨어 공학 분야에서 가능성을 보여주고 있으나, 그 정확성 보장은 종종 오류가 있거나 환각 (hallucinated) 된 코드에 의해 훼손됩니다. 모델의 성실성을 강제하기 위해 형식 검증 (formal verification) 은 LLM 이 수학적 검증기 (mathematical verifier) 에 의해 이후에 올바르게 증명될 수 있는 형식 명세를 함께 구현 논리를 합성하도록 요구합니다. 그러나 비공식적인 자연어에서 정밀한 형식 명세로의 전환은 여전히 고된 작업입니다. 본 연구는 NaturalLanguage2VerifiedCode (NL2VC)-60 데이터셋을 제공함으로써 이 문제를 해결합니다: 60 개의 복잡한 알고리즘 문제 모음입니다. 우리는 계층적 프롬프팅 전략 (tiered prompting strategy) 을 사용하여 7 개의 오픈-웨이트 LLM 에서 무작위로 선택한 11 개의 문제 집합을 평가했습니다: 컨텍스트 없는 프롬프트, 구조적 앵커를 제공하는 서명 프롬프트 (signature prompts), 그리고 Dafny 검증기로부터의 반복적 피드백을 활용하는 자기 치유 프롬프트 (self-healing prompts) 입니다. 모델이 사소한 명세로 검증기를 만족시키는 공허한 검증 (vacuous verification) 문제를 해결하기 위해 기능적 검증을 보장하기 위해 uDebug 플랫폼을 통합했습니다. 우리의 결과는 컨텍스트 없는 프롬프팅은 거의 전적인 실패를 초래하지만, 구조적 서명과 반복적 자기 치유는 극적인 성능 반전을 가능하게 함을 보여줍니다. 구체적으로, Gemma 4-31B 는 90.91% 의 검증 성공률을 달성했으며, GPT-OSS 120B 는 서명 유도 피드백으로 인해 0% 에서 81.82% 의 성공률로 상승했습니다. 이러한 발견은 형식 검증이 이제 오픈-웨이트 LLM 에 대해 실현 가능함을 시사하며, 이들은 복잡한 주석을 합성하고 고신뢰 소프트웨어 개발을 촉진하는 효과적인 사제 (apprentices) 역할을 수행합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기