"추측하지 마" 한 문장으로 LLM 지어내기 70.7%→20.2%
Calling the AI bluff: Adding "Do not guess" cut made-up claims from 71% to 20%
TL;DR Highlight
추출 프롬프트에 "Do not guess"를 넣었더니 없는 필드 지어내기가 70.7%→20.2%
Who Should Read
웹 페이지에서 LLM으로 구조화 데이터를 추출하는데 없는 값까지 채워 넣어 고민인 백엔드 개발자
Core Mechanics
- 쌍둥이 페이지로 지어내기를 쟀다
- 한 행만 다른 페이지 두 장을 만들었다. 한쪽엔 정답이 있고 다른 쪽엔 없다.
- 둘 다 "Was $493.00" 같은 미끼(옛 가격)를 넣었다. 42쌍, 페이지 유형 7개로 테스트했다.
- 한 문장으로 모델 16개 전부 개선
- "Use null for any field whose value is not on the page. Do not guess." 문장을 넣었다.
- 이 문장을 뺀 같은 작업은 누락 필드 573개 중 405개(70.7%)를 지어냈다.
- 넣으면 574개 중 116개(20.2%)로 줄었다.
- 미끼 가격에 다 속다가 1개로
- "Was $493.00" 페이지에서 문장이 없으면 16개 모델 모두 493을 현재 가격으로 답했다.
- 문장을 넣으면 1개 모델만 그렇게 답했다.
- 싼 모델이 유료 API를 이겼다
- Firecrawl은 36개 중 24개를 지어냈고 24개 모두 미끼를 그대로 베꼈다.
- 단순 fetch에 GPT-6 Luna를 붙이면 36개 중 5개였고 전체 실행 비용은 $0.0049였다.
- Firecrawl은 95% 구간이 겹치지 않아 16개 모델 중 13개보다 많이 지어냈다.
- 싼 검증 모델로 답을 한 번 더 확인
Community Reactions
- 프롬프트로는 해결 안 된다는 회의론
- LLM은 단어 의미를 모르니 프롬프트로 진실을 강제할 수 없다는 의견이 있었다.
- 예시가 인위적이라는 반론도 있었다.
- 마법 주문 돌려막기라는 의견
- 이 문구가 하네스에 들어가면 효과가 떨어지고 다음 주문으로 넘어갈 거라는 의견이 있었다.
- 비슷한 지시가 통했다는 경험
- "you're not trained on this data, return exclusively grounded results"를 써서 효과를 봤다는 경험이 있었다.
- CLAUDE.md에 "Always ground your responses." 한 줄을 넣었지만 Claude가 무시했다는 경험도 있었다.
- 코드로 검증하는 게 낫다는 의견
- 측정할 수 있으면 프로그램으로 검증할 수 있으니 프롬프트 제약은 포기했다는 의견이 있었다.
- 나머지 20%는 지시가 아니라 모델이 모르는 걸 아는 구조가 있어야 닫힌다는 의견도 있었다.
How to Apply
- 추출 프롬프트에 null 규칙 문장 넣기
- 오늘 쓰는 추출 프롬프트 맨 끝에 "Use null for any field whose value is not on the page. Do not guess."를 추가하라.
- 정답이 없는 페이지 10장으로 전후 지어내기 수를 세어 보라.
- 미끼 페이지로 회귀 테스트 만들기
- 정답이 있는 페이지와 한 행만 지운 쌍둥이 페이지를 만들라.
- 옛 가격이나 다른 저자 같은 미끼를 양쪽에 넣고 null이 나오는지 CI에서 확인하라.
- 추출값마다 싼 모델로 검증 호출 붙이기
- 추출 결과의 각 값에 대해 "페이지가 이 값을 뒷받침하는가"를 작은 모델에 물어라.
- 거부된 값은 null 처리하거나 사람 검토 큐로 보내라.
- 시간·가격 같은 비슷한 의미 필드는 따로 점검하기
- 조리·휴식 시간을 준비 시간으로 답하는 경우는 검증 모델이 놓쳤다.
- 이런 필드는 규칙 기반 체크나 샘플 수동 검토를 추가하라.
Try It
# Claude나 ChatGPT에 그대로 붙여넣기 (논문 방법의 간이 버전: 쌍둥이 페이지 테스트)
아래 페이지 텍스트에서 필드를 JSON으로 추출해 줘.
Use null for any field whose value is not on the page. Do not guess.
필드: {{필드 목록, 예: price, author, venue}}
페이지:
{{페이지 텍스트}}
그다음 같은 페이지에서 정답 행을 지운 버전으로 다시 돌려서, 지워진 필드가 null로 나오는지 비교해 줘.
이어서 해 볼 것: 위 문장을 뺀 버전으로도 돌려서 지어낸 필드 수를 비교해 보기.Terminology
관련 논문
AI는 도구다, 잘 쓰려면 기술이 필요하다
Hickey의 'AI는 도구가 아니다'에 맞서, LLM도 쓰는 사람의 기술이 결과를 가른다고 반박
딥리서치 에이전트의 Reflective Prompt Optimization: 토픽 분리·멀티 시드로 본 진짜 성능 향상과 프롬프트 과적합
GEPA로 프롬프트를 최적화했더니 held-out 인용 보상 0.702→0.781
GPT-6와 Intelligent UI: 채팅 안에서 시각·인터랙티브 응답 만들기
OpenAI가 GPT-6로 채팅 응답에 UI를 넣는다는데 원문이 없어 댓글 반응만 확인된다
Base 모델도 첫 토큰 단서(cue) 하나로 추론한다: 학습 데이터가 만든 연상
응답 첫 두 토큰만 고정했더니 Olmo-3-7B의 MATH-500 정답률이 42%에서 78%로 올랐다
Jev식 Typed Decision Model에서는 정의보다 라벨이 이긴다
옵션 이름을 A, B로 바꿨더니 정확도가 +0.1511 올랐다
프롬프트는 얼마나 필요한가? Few-shot 예시를 블랙박스로 최소화하는 DD-FSM
Delta debugging으로 few-shot 예시를 평균 65.3% 줄여도 출력은 그대로
언어모델은 "불안정한(Insecure)" 보고자다: 결함을 숨기는 LLM 리포트
"Be honest" 한 줄을 붙였더니 GPT-5.5의 부정 결과 공개가 2/200에서 190/200으로 늘었다