본문 바로가기
C.W.K.
Stream
Lesson 01 of 12 · published

CI에서 LLM 평가

~13 min · llm, eval, ci

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

동작이 회귀 타겟이다

LLM을 감싸는 서비스에서 테스트가 확인할 건 'API가 응답했나'(거의 항상 그렇다)가 아니야. '프롬프트에 대해 모델이 우리가 기대하는 종류의 답을 만들어냈나'를 봐야 해. 이게 바로 eval이야. (입력, 기대 동작) 쌍의 구조화된 세트로 모델을 점수화하지.

Eval 구성

  • Dataset — 골든 케이스, 엣지 케이스, 고친 회귀를 커버하는 N개 예제. 저장소에서 버전 관리해.
  • Scorer — 모델 출력값을 받아 숫자를 반환해 (0-1, pass/fail). 흔한 채점 방식은 정확 매치, contains, regex, semantic similarity, rubric judge (LLM-as-judge), pairwise preference야.
  • Threshold — 통과하기 위한 최소 집계 점수.

CI 어디서 돌리나

  1. 모든 PR — 빠른 스모크 일부 집합 (10-20 예제).
  2. main 브랜치에 푸시할 때마다 — full eval (모든 예제).
  3. Nightly — 최신 모델 버전에 full eval — upstream 변경을 잡아내려고.

비용 관리

200 예제 × 3 모델 변형 × 5 PR/일로 eval을 돌리면 API 예산을 태워. (prompt SHA, 모델 버전, 채점기)를 키로 결과를 캐시하고, 그중 하나라도 바뀔 때만 재실행해. Eval Quest에서 깊이 다뤄.

Code

최소 eval 작업·yaml
  eval:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write   # for sticky PR comment
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v3
      - run: uv sync --all-extras --dev
      - name: Run eval
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          # Smoke subset on PRs, full on main
          if [[ '${{ github.event_name }}' == 'pull_request' ]]; then
            uv run python -m evals.run --suite smoke --threshold 0.85 --output evals/results.md
          else
            uv run python -m evals.run --suite full --threshold 0.85 --output evals/results.md
          fi
      - uses: marocchino/sticky-pull-request-comment@v2
        if: github.event_name == 'pull_request'
        with:
          path: evals/results.md

External links

Exercise

프로젝트의 LLM 사용 경로 하나 골라. 5개 (입력, 기대 동작) 예제를 YAML이나 JSON 데이터셋으로 작성해. 매 PR마다 돌고 결과를 코멘트하는 eval 작업을 CI에 추가해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.