Featured Project · PRJ_02

AI 품질 평가 플랫폼

팀 프로젝트 기반 코드를 바탕으로 LLM 산출물을 반복 평가할 수 있는 품질평가 모듈과 테스트 체계를 확장했습니다.

// 개인 확장 프로젝트 · 품질평가 모듈 · 테스트 체계

4
Judge 평가 지표
12
교차검증 모듈
84
pytest PASS

# 문제 정의 Problem

AI 산출물 품질은 매 배포마다 흔들립니다. 같은 서비스라도 실행할 때마다, 평가하는 사람마다 "품질이 괜찮다"의 기준이 달라지면 배포 판단 자체를 신뢰하기 어렵습니다. 평가 기준(루브릭)과 Judge 모델 프롬프트, 결과를 집계하는 스코어링 보드를 표준화해, 누가 언제 실행해도 같은 잣대로 품질을 계량하는 것이 목표였습니다.

# 담당 역할 My Role

개인 확장 프로젝트로, 팀 프로젝트 기반 코드에서 품질평가 모듈과 테스트 체계를 단독 확장했습니다.

루브릭 설계
정확성·근거성·유용성·안전성 4개 Judge 평가 지표 정의
Judge Agent 구현
app/judge_agent.py — LLM 기반 채점 로직, app/rule_based_agent.py — 규칙 기반 1차 검증
JSON Schema 설계
app/schemas.py — Judge 출력(점수+근거)의 구조화 스키마 정의
스코어링 대시보드
dashboard/streamlit_app.py — 지표 집계·시각화 화면 구현
테스트 설계
tests/ 18개 파일 — 정상 케이스, 레드팀(적대적 입력), 회귀 시나리오 설계

# 솔루션 설계 Solution

Judge 평가
정확성·근거성·유용성·안전성 4개 지표별 채점 기준 정의
Judge 프롬프트
JSON 출력 스키마 기반의 구조화 채점(점수+근거)
스코어링 보드
지표별 점수 집계·추세 시각화, 회귀 감지

# 기술 스택 Tech

LLM-as-a-JudgeRubricJSON Schema Scoring BoardPython FastAPIpytestk6

# 테스트 Test

pytest 기반 자동화 테스트 18개 파일(정상 케이스·레드팀 적대적 입력·회귀 시나리오 포함)을 설계·구현하고, k6로 API 성능을 별도 검증했습니다. LLM 호출 영역은 Mock으로 대체하여 평가 로직·예외 처리·회귀 시나리오를 독립적으로 검증했습니다(실제 API 호출·과금 없음, 더미 키로 84건 전부 통과).

test_judge_agenttest_rule_based_agenttest_quality_pipeline test_redteamtest_regressiontest_negative_cases test_retrieval_metrics…외 11개

# 결과 Result

84
pytest 테스트 통과
0%
k6 성능테스트 오류율
13–21ms
k6 p95 응답시간

출처: tests/(18개 파일, 84개 테스트 함수), docs/performance_report.md(k6 10VUs·30초·총 600 요청, 2026-07-07 실측). 배포 판정용 최종 품질/결함 리포트(docs/final_quality_report.md, docs/defect_report.md)는 실행 후 자동 채워지는 골격 문서로, 별도의 정식 배포 판정 실행 기록은 아직 없습니다.

  • 평가 파이프라인 표준화로 재현 가능한 품질 측정 체계 확립
  • 구조화(JSON) 출력으로 자동 집계·회귀 감지 가능
  • QA를 프로젝트 산출물이 아닌 재사용 자산으로 제품화

# 증거 Evidence

아래는 실제 화면 캡처가 아니라, app/judge_agent.py·config·docs/performance_report.md 등 코드·실측 데이터로 직접 그린 다이어그램·차트(SVG)입니다.

AI 품질 평가 플랫폼 아키텍처 다이어그램 — Rule-based Agent 1차 검증, Judge Agent의 정확성·근거성·유용성·안전성 4개 지표 채점, JSON Schema 구조화, Scoring Dashboard 집계 흐름
평가 플랫폼 아키텍처 — 규칙 기반 1차 검증부터 LLM Judge 2차 채점, 스코어링 대시보드까지의 흐름 (직접 작성)
k6 성능 테스트 결과 — 10 VUs 30초 동안 600건 요청, 오류율 0%, 평균 응답시간 10~40ms, p95 13~21ms로 배포 판정 기준 1000ms 대비 여유 있게 통과
k6 성능 테스트 결과 — 600건 요청·오류율 0%, 판정 기준(1000ms) 대비 응답시간 여유 확인 · 실데이터 기반
GitHub에서 이 프로젝트 코드 보기 → QA 포트폴리오로 돌아가기