GPT-4 API를 활용한 코드 리뷰 자동화 실험

배경

3월에 GPT-4 API가 공개되면서 팀 내부에서 활용 방안을 논의했다. 가장 먼저 떠오른 건 코드 리뷰였다. 팀원들이 늘어나면서 PR 리뷰가 병목이 되는 경우가 많았기 때문이다.

구현

GitHub Webhook을 받아서 PR diff를 GPT-4에게 전달하는 간단한 Node.js 서버를 만들었다.

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

app.post('/webhook', async (req, res) => {
  const { pull_request } = req.body;
  const diff = await fetchPRDiff(pull_request.url);
  
  const response = await openai.chat.completions.create({
    model: 'gpt-4',
    messages: [
      { role: 'system', content: '당신은 시니어 개발자입니다. 코드 리뷰를 작성하세요.' },
      { role: 'user', content: `다음 코드를 리뷰해주세요:\n${diff}` }
    ],
    temperature: 0.3
  });
  
  await postReviewComment(pull_request, response.choices[0].message.content);
});

결과

의외로 실용적인 지적을 많이 했다. null 체크 누락, 에러 핸들링 부재, 변수명 개선 제안 등. 다만 GPT-3.5 turbo와 달리 비용이 꽤 나와서 모든 PR에 적용하긴 부담스러웠다.

현재는 특정 라벨이 붙은 PR에만 동작하도록 설정했다. 완벽하진 않지만 1차 검토 도구로는 충분히 쓸만했다.

한계

  • 컨텍스트 길이 제한으로 큰 PR은 처리 불가
  • 프로젝트 전체 구조 파악은 어려움
  • API 비용 (대략 PR당 $0.5~1)

그래도 단순 실수를 잡아내는 데는 효과적이었다. 앞으로 프롬프트를 더 개선해볼 예정이다.