| 항목 | 값 |
|---|---|
| 모델 수 | 11개 (서울 4 · 도쿄 5 · 리전비교 1 · Google 1) |
| 모델당 케이스 | 50개 = 평문 챗 25 + 무말투 구조화 25 |
| 총 LLM 호출 | 550건 (에러 0건) |
| 추가 OCR 실측 | claude-3-haiku × 15장(실물 13 + 합성 2) |
| 사전 OCR 실측 | Nova Lite/Pro × 15장, Gemini 기준선(문서 T4) |
| 측정일 | 2026-07-28 |
services/chat/app/pipeline/generator/gemini.py의 _SYSTEM) + 동일 content 포맷 [질문]\n…\n\n[근거]\n…max_tokens=200, temperature=0.3 (실제 config.py 값과 동일)TemplateGenerator._recommend() 출력형식 그대로check_output_grounded() 를 import 해서 그대로 사용 (출력의 모든 숫자·재료 item_id가 근거 안에 존재해야 통과) + 레시피 이름 보존율max_tokens=800, temperature=0.0C01, C03, C05, C17, C21, C22, C23)는 11모델 전원 실패 — 질문에 나온 재료·예산("대파","8천원")을 답변이 되풀이하면 가드레일이 '근거 밖'으로 판정하기 때문. 모델 변별력이 없는 구조적 케이스라 리더보드는 나머지 18개(변별 케이스) 기준으로도 함께 제시했다.챗 실패 109건(11모델 합산)을 분해하면 대부분이 모델 결함이 아니다.
| 구분 | 건수 | 비율 | 성격 |
|---|---|---|---|
| 질문-되풀이 오탐 | 82건 | 75% | 환각 아님 — 가드레일 결함 |
| 실제 결함(환각·이름누락) | 27건 | 25% | 진짜 모델 문제 |
원인: check_output_grounded(answer, reference)가 template 출력만 근거로 삼고 유저 질문은 보지 않는다.
C01 "두부랑 대파로 뭐 해먹지" → 답변 "두부와 대파로…" → 근거에 '대파'가 없어 환각으로 오판. 그러나 대파는 유저가 말한 재료다.C17 "8천원 예산으로…" → 답변 "8천원…" → 근거엔 8000뿐이라 숫자 8이 위반으로 잡힘.프로덕션 영향: 오판 시 refine 결과를 버리고 template으로 fallback → 유료 LLM 호출을 하고도 결과를 폐기(비용 낭비 + 자연스러운 문장 손실). 해당 패턴("재료 말하며 추천 요청", "예산 말하며 추천 요청")은 실사용 빈도가 높다.
수정안 — 근거에 질문을 합산(유저가 이미 말한 것의 되풀이는 환각이 아니다):
# services/chat/app/pipeline/generator/gemini.py 호출부
check_output_grounded(polished, base.text + "\n" + question.raw_text, self._ingredient_index)
추가로 한글 수사 정규화("8천원"→8000)를 넣으면 숫자 오탐도 해소된다.
⚠️ 이 수정은 모델 순위·이전 결론을 바꾸지 않는다 — 전 모델(현행 Gemini 포함) 점수가 함께 오르기 때문. 리더보드의 "변별 18케이스"는 이미 이 오탐을 제외한 값이다.