[pydantic-ai] 자동 리뷰 봇 개선: Gateway 활용과 diff 라인 번호 주석
PR 링크: pydantic/pydantic-ai#4305 상태: Merged | 변경: +123 / -29
들어가며
pydantic-ai는 Claude Code를 활용한 자동 PR 리뷰 봇을 운영하고 있습니다. 이 PR은 리뷰 봇의 비용 효율과 정확도를 동시에 개선하기 위해 API gateway 도입, diff 라인 번호 자동 주석, 그리고 프롬프트 구조 재편을 수행합니다.
핵심 코드 분석
1. API Gateway 및 키 분리
Before:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
After:
- uses: anthropics/claude-code-action@v1
env:
ANTHROPIC_BASE_URL: ${{ secrets.CLAUDE_CODE_BASE_URL }}
with:
anthropic_api_key: ${{ secrets.CLAUDE_CODE_API_KEY || secrets.ANTHROPIC_API_KEY }}
별도의 CLAUDE_CODE_API_KEY와 CLAUDE_CODE_BASE_URL을 통해 gateway를 경유하도록 변경했습니다. fallback으로 기존 ANTHROPIC_API_KEY를 유지합니다.
2. diff 라인 번호 자동 주석 (awk 스크립트)
가장 핵심적인 변경은 gather-review-context.sh에 추가된 awk 스크립트입니다:
for diff_file in "$CTX/diff/"*.diff; do
awk '
/^@@ / {
split($2, _o, ","); old_num = substr(_o[1], 2) + 0
split($3, _n, ","); new_num = substr(_n[1], 2) + 0
}
{
c = substr($0, 1, 1)
if (c == "+") { prefix = "NL:" lnums[n]; new_num++ }
else if (c == "-") { prefix = "OL:" lnums[n]; old_num++ }
else { prefix = "NL:" lnums[n]; new_num++; old_num++ }
}
' "$diff_file" > tmp && mv tmp "$diff_file"
각 diff 라인에 NL: (new line) 또는 OL: (old line) 접두사와 라인 번호를 추가합니다. 리뷰 봇이 인라인 코멘트를 달 때 정확한 라인을 타겟팅할 수 있습니다.
3. 프롬프트 구조 개선
리뷰 우선순위를 명확히 하고, 컨텍스트 수집과 코멘트 작성을 분리했습니다:
# What to look for (새로 구조화)
- public API > concepts and behavior > documentation > tests > code style
# Gathering context (병렬 읽기 장려)
- diff 파일을 필요에 따라 병렬로 읽기
- 큰 테스트 파일은 나중에 로드
# Posting comments (마지막에 한번에)
- 전체 맥락 파악 후 코멘트 작성
왜 이게 좋은가
라인 번호 주석은 AI 리뷰 봇이 인라인 코멘트를 달 때 가장 빈번하게 실패하는 원인(잘못된 라인 번호 계산)을 근본적으로 해결합니다. diff를 전처리하여 정확한 위치 정보를 제공함으로써, 봇이 라인 번호 계산에 컨텍스트를 낭비하지 않고 실제 코드 리뷰에 집중할 수 있습니다. Gateway 도입은 비용 추적과 rate limiting 등 운영 관리에도 유리합니다.
정리
| 항목 | 내용 |
|---|---|
| Gateway | 별도 API 키/URL로 비용 관리 분리 |
| 라인 번호 | NL:/OL: 접두사로 인라인 코멘트 정확도 향상 |
| 프롬프트 | 우선순위 명확화 + 병렬 읽기 장려 |
참고 자료
⚠️ 알림: 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.
관련 포스트
PR Analysis 의 다른글
- 이전글 [Open WebUI] Redis 설정 조회 캐싱으로 /api/models 응답 속도 개선
- 현재글 : [pydantic-ai] 자동 리뷰 봇 개선: Gateway 활용과 diff 라인 번호 주석
- 다음글 [Open WebUI] 모델 캐시 활용으로 TTFT(첫 토큰 도달 시간) 대폭 단축
댓글