프롬프트 엔지니어링으로 코드 리뷰 자동화하기

배경

팀에서 PR 리뷰가 병목이 되는 상황이 반복됐다. GPT-4 API를 활용해 1차 리뷰를 자동화하는 스크립트를 작성했다.

초기 시도와 문제점

처음엔 단순하게 "이 코드를 리뷰해줘"라는 프롬프트를 사용했다. 결과는 기대 이하였다.

  • 지나치게 일반적인 조언 ("변수명을 명확하게")
  • 프로젝트 컨텍스트 무시
  • 중요도 구분 없이 나열

개선한 프롬프트 구조

You are a senior TypeScript developer reviewing a PR.

Project context:
- Next.js 14 App Router
- Prisma ORM
- React Server Components preferred

Focus on:
1. Security vulnerabilities
2. Performance issues
3. Type safety

Code:
{diff}

Provide:
- Critical issues (block merge)
- Suggestions (nice to have)

역할, 컨텍스트, 우선순위를 명시하자 리뷰 품질이 크게 개선됐다.

Few-shot 예시 추가

좋은 리뷰/나쁜 리뷰 예시를 프롬프트에 포함시켰다. 이전에 팀원들이 작성한 실제 리뷰 코멘트를 활용했다.

const systemPrompt = `
${basePrompt}

Example of good review:
"🔴 Critical: User input is directly concatenated in SQL query (line 45). Use parameterized queries to prevent SQL injection."

Example of bad review:
"Consider improving code quality."
`;

구체적인 예시를 주니 출력 포맷과 디테일이 일관되게 나왔다.

Temperature 조정

Temperature 0.3으로 설정해 일관성을 높였다. 창의성보다는 정확성이 중요한 태스크였다.

결과

  • 명백한 보안 이슈나 타입 에러는 즉시 감지
  • 시니어 리뷰어는 아키텍처와 비즈니스 로직에 집중 가능
  • 프롬프트 개선만으로도 실용성이 크게 달라짐

프롬프트 엔지니어링은 결국 요구사항 명세와 비슷했다. 명확한 입출력 정의가 핵심이다.

프롬프트 엔지니어링으로 코드 리뷰 자동화하기