프롬프트 엔지니어링으로 코드 리뷰 자동화하기
배경
팀에서 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으로 설정해 일관성을 높였다. 창의성보다는 정확성이 중요한 태스크였다.
결과
- 명백한 보안 이슈나 타입 에러는 즉시 감지
- 시니어 리뷰어는 아키텍처와 비즈니스 로직에 집중 가능
- 프롬프트 개선만으로도 실용성이 크게 달라짐
프롬프트 엔지니어링은 결국 요구사항 명세와 비슷했다. 명확한 입출력 정의가 핵심이다.