fix(study): Phase 4-A envelope 프롬프트 — answer_choice 사용자 정답 강제

검증 결과 모델이 envelope 안에서 자료 근거로 정답 번호를 재판단해서 거의 매번
guard_fail (answer_choice != correct_choice). 환각 가드는 정확히 작동했지만
caching 효율 0%.

PR-3 의 free-form 풀이는 "사용자 정답 우선, 충돌 명시" 라 정상 ready 박혔지만
envelope.txt 가 "자료 근거 우선" 으로 충돌. 환각 가드의 본질 — 모델이 envelope
형식을 어겨 임의로 다른 번호를 박는 케이스 차단 — 을 유지하되, answer_choice
값은 사용자 정답 (correct_choice) 을 그대로 박도록 명시.

자료 근거와 사용자 정답이 다를 경우 explanation_md 안에 짧게 명시만 하고
answer_choice 는 보존. 정답 자체를 바꾸는 게 환각 가드의 차단 대상이라고 강조.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-05-01 11:47:44 +09:00
parent e8da53490c
commit 43097e6fd9
+5 -2
View File
@@ -35,8 +35,11 @@
- high: 자료에 직접 근거가 있고 정답이 명확
- medium: 자료가 부분 근거이고 일반 지식 보강 필요
- low: 자료 근거 부족하여 추론에 의존
7. answer_choice 는 풀이의 결론에 해당하는 정답 번호 (1~4 정수). 사용자 입력 정답과 자료 근거가 충돌하면 자료 근거를 따르고 explanation_md 에 충돌을 명시.
8. explanation_md 는 한국어 200~400자. 마크다운(굵게·리스트) 사용 가능.
7. **answer_choice 는 반드시 위 "사용자 입력 정답" 의 번호 ({correct_choice}) 를 그대로 박는다.**
- 사용자 정답이 정해진 객관식 문제이며, 너의 역할은 그 정답을 풀이하는 것이지 정답 자체를 바꾸는 것이 아니다.
- 자료 근거가 사용자 정답과 다르게 보여도 explanation_md 안에 "자료 근거에 따르면 다른 해석도 가능하다" 라고 짧게 명시할 뿐, answer_choice 는 사용자 정답 그대로 유지한다.
- 정답을 추측하거나 다른 번호로 바꾸는 것은 환각 가드에 차단된다.
8. explanation_md 는 사용자 정답이 왜 맞는지 풀이. 한국어 200~400자. 마크다운(굵게·리스트) 사용 가능.
【출력 형식 — 반드시 아래 JSON 만 출력. 메타 설명·인사·코드 펜스 없이 raw JSON 한 객체.】
{{"answer_choice": <1|2|3|4>, "explanation_md": "<풀이 본문 마크다운>", "confidence": "<high|medium|low>"}}