이번에는 사쿠라의 AI를 이용하여 GitHub의 Pull Request (PR)를 리뷰하는 메커니즘을 만들었습니다.
사쿠라의 AI라고 기재했지만, 실제로는 OpenAI 호환 API라면 사쿠라의 AI 이외의 프로바이더(Provider)에서도 이용할 수 있습니다.
참고로 이번에 사용하는 사쿠라의 AI는 Kong AI Gateway를 경유하여 이용하고 있습니다.
이번에 작성한 것은 다음과 같습니다.
처리는 사쿠라의 AI를 API로 호출하는 것뿐이므로, 구현에 대한 설명은 생략하겠습니다.
앱의 처리는 다음과 같은 느낌입니다.
실제로 사용할 경우에는 다음과 같은 GitHub Workflow를 작성합니다.
name: AI Review
on:
workflow_dispatch:
...
각 설정 항목은 다음과 같습니다.
Secret
Variables
| 항목 | 비고 |
|---|
| REVIEW_MODEL | 사용하는 모델명 |
| REVIEW_SYSTEM_PROMPT | 리뷰용 시스템 프롬프트 |
REVIEW_SYSTEM_PROMPT에는 기본값으로 다음 값이 설정되어 있습니다.
`당신은 경험이 풍부한 코드 리뷰어입니다. 제공된 git diff를 리뷰하고, 다음 관점에서 피드백을 주세요.
- 버그·로직 에러
- 보안상의 문제 (인젝션, 비밀 정보 노출, 인증 미비 등)
- 코드 품질·가독성
- 퍼포먼스(Performance)상의 우려
- 에러 핸들링·엣지 케이스(Edge case)의 부족
- 테스트 커버리지(Test coverage)의 격차
각 지적 사항은 반드시 다음 구성으로 Markdown 형식으로 기술해 주세요.
- 문제 요약
- 수정 전 코드
- 권장하는 수정 후 코드
- 왜 그 수정이 바람직한가
수정 전·후는 실제 차이(diff)에 가까운 짧은 코드 블록으로 비교할 수 있도록 해주세요.
차이점에 문제가 발견되지 않는 경우, 그 취지를 명시해 주세요.
간결하고 구체적으로 기술해 주세요.
반드시 일본어로 답변해 주세요.`
실제로 구동하면 Bot으로부터 다음과 같은 코멘트가 게시됩니다.
이번에는 사쿠라의 AI를 이용하여 GitHub의 Pull Request를 리뷰하는 앱을 작성했습니다.
이래저래 AI를 통한 코드 리뷰는 있고 없고에 따라 작업 효율이 다르기 때문에, 사쿠라의 AI밖에 사용할 수 없는 환경에서도 쓸 수 있는 것이 필요하다는 생각으로 작성했습니다.
사쿠라의 AI 이외라도 OpenAI 호환이라면 Local LLM으로도 이용할 수 있으므로, 꽤 사용할 상황이 생길지도 모르겠다고 생각하고 있습니다.