Files
aio-01d4-stu/Last3Mon/71/LAB-02-A-ANSWER-FROM-POLICIES.md
T

4.4 KiB

Lab 02 · 규정으로만 답하기, 모르면 넘기기, 답 검사

강사용 정답본 · 학생 저장소에 올리지 않습니다. 학생용 문제는 LAB-02-Q-ANSWER-FROM-POLICIES.md. 요청문은 예시이며 CLI 에이전트로 보내 재지는 않았습니다. 결과 숫자는 정답 워크플로우를 2026-10-18에 1회씩 실행한 값입니다 (gpt-4.1-mini, text-embedding-3-large). 수업 전날(2026-10-22) 같은 정답으로 다시 돌린 명령 · -v 출력 전부와 codex 프롬프트: answers/LAB-TEST-RESULT.md (점수는 10/18과 같음).

예제 1 + 2 · 요청문 예

my-work/policy-qa.json 을 만들어 줘. 계약은 AGENTS.md 3절 규정 Q&A. question 없으면 400.
1. 같은 메모리 저장소(my_policy_docs)에서 load, topK 3, 메타데이터 포함, Always Output Data.
2. Code "Build context": 청크를 [1] [2] [3] 번호 붙인 발췌로, hits(source, title, score), top_score.
   min_score = 본문 min_score 없으면 0.33, relevant = top_score >= min_score.
3. relevant 가 아니면 LLM을 부르지 않고 route "담당자 연결", answer "규정에서 답을 찾지 못했습니다. IT 문의 창구로 연결해 드릴게요.", cited [].
4. relevant 면 AI Agent(gpt-4.1-mini, Tool 없음): 발췌로만, 한국어 3문장 이내, 사실마다 [번호], 없으면 정확히 "규정에서 답을 찾지 못했습니다."
5. Code "Build answer": [번호] → [문서 제목], cited = 인용한 번호의 source, route "자동 답변".
기대 결과 cases/lab02.json.

정답: reference/lab02-example2-qa.json

수업 준비 때 결과
cases/lab02.json 6/6 (답 1.7~2.2초, 점심 메뉴 0.3초: LLM을 부르지 않음)
cases/lab02-challenge.json (예제 상태) 2/8 — 점수는 높은데 규정에 없는 4개가 모두 자동 답변, 검사 기록 없음

예제 상태에서 실제로 나온 답 (call, 1회):

질문 top_score route 답
VPN 접속 속도가 느리면 어떻게 해요? 0.463 자동 답변 "…대처 방법에 대한 내용은 찾지 못했습니다."
노트북 사양은 어떻게 되나요? 0.379 자동 답변 "규정에는 노트북 사양에 대한 내용이 포함되어 있지 않습니다." + 출처 3개
비밀번호를 잊어버리면 어디서 바꿔요? 0.551 자동 답변 "규정에서 답을 찾지 못했습니다."
보안 교육은 1년에 몇 번 받아야 하나요? 0.353 자동 답변 "규정에서 답을 찾지 못했습니다."
모니터를 하나 더 받을 수 있나요? 0.311 담당자 연결 (기준 아래)

→ 기준값(0.33)만으로는 "비슷한 낱말은 있는데 답은 없는" 질문을 거르지 못한다. 기준을 올리면 0.46대인 진짜 규정 질문(퇴사 노트북 0.464)도 걸린다.

과제 · 요청문 예

my-work/policy-qa.json 의 Build answer 에 검사를 더해 줘. 검사마다 {name, passed} 를 checks 에, 실패 이름을 failed 에.
- found_in_policies: "찾지 못했", "포함되어 있지 않", "명시되어 있지 않", "언급이 없", "나와 있지 않" 이 없어야
- cites_excerpt: 인용 번호가 하나 이상
- grounded: 답 글(번호 뺀)의 두 글자 묶음 중 30% 이상이 발췌에 있어야
- numbers_from_policies: 답에 나온 숫자가 모두 발췌에 있어야
failed 가 있으면 route "담당자 연결", answer "규정에서 확실한 답을 찾지 못해 IT 담당자에게 전달했습니다.", draft 에 원래 답.
cases/lab02-challenge.json, cases/lab02.json 둘 다 통과.

정답: answers/71-lab02-challenge-qa.json

수업 준비 때 결과
cases/lab02-challenge.json 8/8
cases/lab02.json 6/6

풀이 포인트:

  • 지시문에 정확한 문장("규정에서 답을 찾지 못했습니다.")을 주어도 LLM은 "포함되어 있지 않습니다"처럼 다르게 말했다 → 문장 하나만 찾는 검사는 새고, 모양 여러 개를 찾아야 했다.
  • 틀린 전제("30일마다 바꾸면 되죠?")는 발췌로만 답하게 하자 예제 상태에서도 90일로 바로잡았다. 검사는 그 답을 막지 않는다 (숫자 90이 발췌에 있음).
  • 검색 점수(앞)와 답 검사(뒤)는 다른 실패를 잡는다: 점수는 "엉뚱한 질문", 답 검사는 "비슷하지만 답이 없는 질문".