day7_practice/run_eval.pyeval_set.jsoneval_result.jsonllm_judge.pyintegration_check.py

자동 채점기: 문항 하나가 PASS / FAIL 이 되기까지

run_eval.py 는 평가 문항 14개를 하나씩 입력 가드 → Supervisor 그래프 → 콜백 기록의 실제 경로로 통과시킨 뒤, type 에 맞는 규칙으로 판정해 eval_result.json 에 저장합니다. 유형 8가지마다 문항 하나씩 골라 판정 경로를 따라가고, 마지막에 집계와 DoD 판정, 아직 연결되지 않은 LLM 심사와 통합 점검까지 봅니다. 결과 값은 저장된 eval_result.json 의 실제 값입니다.

한눈에 보는 구조: 가드 → 실행 → 기록 → 판정

차단된 문항은 그래프를 실행하지 않고 고정 거절 문구를 답변으로 삼습니다. 통과한 문항은 그래프를 실행하고, 콜백 ToolRecorder 가 모은 도구·Agent·결과 기록을 답변과 함께 판정에 넘깁니다.

eval_set.json 14문항 · type 8가지 input_guard(q) 정규식 규칙 → LLM 판별 통과 app.ainvoke(...) Supervisor 그래프 실행 callbacks ToolRecorder tools · agents · sources 를 모음 차단 결과 State 기록한 목록 integration_check.py 가드 · 추적기 · 질문 3개 같은 부품을 따로 조립 refusal_message 고정 거절 문구가 답변 extract(result, rec) answer · tools · sources · agents check_case: type 별 판정 (위에서부터) ① 미지원 type ② no_answer ③ 형식 오류 ④ guardrail ⑤ 도구 유형 3종 ⑥ multi_agent ⑦ fact · paraphrase llm_judge.py evaluate_with_reference 1~5점 + 근거 run_eval 에 연결 안 됨 ✕ eval_result.json question · type · passed detail · status · answer 저장된 결과: 14 / 14 통과
가드를 통과한 문항의 길 가드가 막은 문항의 길 콜백으로 모은 기록 점선 상자: 이 채점기와 따로 도는 파일

이 단계에서 일어나는 일

유형별 PASS 조건과 저장된 결과

typeexpected_source 의 뜻PASS 조건 (코드 기준)저장된 결과

DoD 묶음: guardrail 이 아닌 12문항이 기능, guardrail 2문항이 안전입니다. 두 묶음 모두 전수 통과해야 "통과"이고, 저장된 결과는 기능 12/12, 안전 2/2 입니다. 관측과 설명은 숫자로 채점하지 않고 통합 점검에서 확인합니다.

함정·주의: 14/14 는 "이 14문항이 이 규칙을 통과했다"는 뜻

관련 파일