The Cheap Way to Add AI Review to CI: Small Local Models Plus Prompt Caching

개요

AI 코드 리뷰 시스템의 비용 효율성을 극대화하기 위해, 저렴한 로컬 모델을 활용한 1차 분류와 프롬프트 캐싱을 적용한 대규모 언어 모델(LLM)을 결합하는 방식이 제안된다.

주요 내용

* 두 단계의 AI 코드 리뷰 시스템:
* 1단계 (트리아지 패스): 저렴한 로컬 모델을 사용하여 코드 변경 사항(diff)이 인증, 접근 제어, 금융, 암호화, SQL/쉘 문자열 빌드, 역직렬화, 파일 경로, 네트워크 호출 등과 같이 잠재적으로 위험한 부분을 건드리는지 분류한다. 형식 변경, 주석, 문서, 테스트, 이름 변경, 설정 변경 등은 'low'로 분류되어 비싼 모델 호출을 건너뛴다.
* 2단계 (심층 리뷰): 1단계에서 'high'로 분류된 경우, 위험한 파일만 대규모 언어 모델(LLM)로 전달하여 실제 리뷰를 수행한다.
* 프롬프트 캐싱의 활용: 2단계에서 시스템 프롬프트(리뷰 루브릭, 심각도 정의, 규칙 등)와 저장소 컨텍스트(변경 코드를 참조하는 주변 파일, 인터페이스 등)는 대부분의 PR에서 동일하므로 캐싱한다. 이를 통해 변경되는 부분(diff)에 대해서만 비용을 지불하여 LLM 호출 비용을 절감한다.
* 실제 구현 (GitHub Actions 예시): checkout 스텝으로 코드를 가져온 후, 첫 번째 run 스텝에서 triage.py를 실행하여 1단계 분류를 수행하고 결과를 GITHUB_OUTPUT으로 내보낸다. 두 번째 run 스텝은 1단계 결과가 'high'일 경우에만 실행되어, deep_review.py를 통해 2단계 심층 리뷰를 수행한다.
* 차원 간 버그 탐지: 단순 diff 리뷰만으로는 함수 반환 타입이나 파라미터 의미 변경과 같이 다른 파일에 영향을 미치는 버그를 놓칠 수 있다. 변경된 함수를 호출하는 파일들을 2단계 컨텍스트에 포함시켜 이러한 종류의 버그를 탐지할 수 있다. 이 호출 파일들은 변경 빈도가 낮아 캐싱에 유리하다.
* 비용 절감의 핵심: 비용 절감은 더 저렴한 모델을 사용하는 것보다, 효율적인 라우팅을 통해 불필요한 고가 모델 호출을 최소화하는 데서 온다. 저렴한 모델은 필터 역할을 하고, 고가 모델은 위험도가 높은 부분에만 집중적으로 사용된다.

시사점

본 방식은 AI 코드 리뷰 시스템을 CI/CD 파이프라인에 통합할 때 발생하는 비용 문제를 해결하고, 잠재적으로 중요한 버그를 놓치지 않으면서도 실질적인 리뷰 효율성을 높일 수 있는 현실적인 구현 전략을 제시한다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions