피드로 돌아가기
Deterministic First, LLM Second: An Advisory CI Pre-Screen
Dev.toDev.to
DevOps

Deterministic Core 기반 Never-block 구조로 LLM 의존성 완전 제거

Deterministic First, LLM Second: An Advisory CI Pre-Screen

Jeremy Longshore2026년 5월 18일9intermediate

Context

기존 Gemini 기반 PR 리뷰 시스템의 Quota Error, Timeout, JSON 파싱 오류로 인한 CI 파이프라인의 잦은 중단 발생. LLM이 의사결정 권한(Veto Power)을 가져 시스템 교체 시 수주가 소요되는 높은 결합도와 유지보수 비용이 한계점으로 작용.

Technical Solution

  • Deterministic Classifier를 핵심 프로덕트로 정의하여 12개 규칙 기반의 Pure Function 구조 설계
  • LLM(Groq)을 Advisory Layer로 분리하여 결과물에 영향력을 배제한 Never-block 계약 적용
  • Python stdlib(urllib) 기반의 최소 의존성 구현으로 SDK 및 Transitive Vulnerability 리스크 제거
  • continue-on-error: true 설정을 통해 LLM 장애 시에도 Deterministic Verdict를 보장하는 Graceful Degradation 구현
  • System Prompt를 String Literal로 하드코딩하여 사용자 입력에 의한 Prompt Injection 경로 차단
  • pull_request_target 및 SHA-pinned checkout을 적용한 Fork-safe 보안 모델 유지

- 핵심 비즈니스 로직은 Deterministic한 Pure Function으로 구현했는가? - 외부 API(LLM 등)의 실패가 전체 파이프라인의 블로킹 요소가 되지 않도록 설계했는가? - LLM의 역할을 '결정(Decision)'이 아닌 '보완(Polish/Advisory)'으로 제한했는가? - 외부 라이브러리 의존성을 최소화하여 보안 공격 표면을 줄였는가?

원문 읽기