RAG2026-5일26차시 · Verifier Node 설계7 / 19← 이전목차다음 →MetaContents

26차시. Verifier Node 설계

4. 실습 ① — LLM 심판 프롬프트

출처: 원본 PDF 26차시_VerifierNode설계.pdf 9쪽 · 쪽 그림 9쪽

심판 역할을 명확히 분리하는 것이 핵심입니다.

📝 src/prompts.py에 추가

Python
from langchain_core.prompts import ChatPromptTemplate

JUDGE_PROMPT = ChatPromptTemplate.from_template(
    "당신은 RAG 답변을 검증하는 엄격한 심판입니다.\n"
    "답변을 생성하지 말고, 오직 평가만 하십시오.\n\n"
    "[근거 자료]\n{context}\n\n"
    "[사용자 질문]\n{question}\n\n"
    "[검증할 답변]\n{answer}\n\n"
    "[평가 기준]\n"
    "grounded : 답변의 모든 주장이 근거 자료 안에 있으면 true.\n"
    "           근거에 없는 숫자·조건·설명이 하나라도 있으면 false.\n"
    "relevant : 답변이 질문에 실제로 대답하면 true.\n"
    "           질문의 핵심을 비껴갔으면 false.\n"
    "reason   : 판정 이유를 한 문장으로. false인 항목이 있으면\n"
    "           어느 부분이 문제인지 구체적으로 쓸 것.\n\n"
    "[출력 형식 - 다른 말은 절대 쓰지 마십시오]\n"
    '{{"grounded": true, "relevant": true, "reason": "..."}}'
)

⚠️ 프롬프트 작성 시 주의점
① "답변을 생성하지 말라"를 명시
안 그러면 평가 대신 더 나은 답변을 써줍니다
② 중괄호를 두 번 쓴다 {{ }}
ChatPromptTemplate에서 {}는 변수 자리입니다
JSON의 중괄호는 {{ }}로 이스케이프해야 합니다
③ 판정 기준을 구체적으로
"좋은 답변인가"처럼 모호하면 판정이 흔들립니다
④ reason에 구체성을 요구
25차시 피드백 프롬프트에 그대로 들어갑니다

← 이전 절26차시 · 3. 검증 방식 비교 — 비용과 정확도다음 절 →26차시 · 5. 실습 ② — Verifier Node 완성