C.W.K.
Stream
Lesson 01 of 12 · published

CI 에서 LLM 평가

~13 min · llm, eval, ci

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

동작이 regression 타겟

LLM 감싸는 서비스에서 test 가 확인할 건 'API 응답했나' (거의 항상 그래) 가 아냐. '프롬프트에 모델이 우리가 기대하는 종류의 답을 생산했나'. 그게 eval: (입력, 기대 동작) 쌍의 구조화된 세트, 모델에 대해 점수화.

Eval 모양

  • Dataset — 골든 케이스, edge case, 고친 regression 커버하는 N 예제. Repo 에 versioning.
  • Scorer — 모델 output 받아 숫자 반환 (0-1, pass/fail). 흔한 scorer: 정확 매치, contains, regex, semantic similarity, rubric judge (LLM-as-judge), pairwise preference.
  • Threshold — 통과 최소 집계 점수.

CI 어디서 도는가

  1. 모든 PR — 빠른 smoke subset (10-20 예제).
  2. 모든 main push — full eval (모든 예제).
  3. Nightly — 최신 모델 버전에 full eval — upstream 변경 잡기.

비용 discipline

200 예제 × 3 모델 변형 × 5 PR/일 인 eval 은 API 예산 태움. (prompt SHA, 모델 버전, scorer) 키로 결과 cache; 그 중 하나 바뀔 때만 재실행. Eval Quest 가 깊이 다뤄.

Code

최소 eval job·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 dataset 으로 작성. 매 PR 에 돌고 결과 코멘트하는 eval job 을 CI 에 추가.

Progress

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

댓글 0

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

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