fix: 재해 현황·관측 수치가 할루시네이션 가드를 그냥 통과하던 문제
"지금 태풍 돌핀 어디 있지?"에 도구를 하나도 부르지 않고 좌표·기압·풍속을 단언했다(로그 12065행, TOOL 호출 0건). 같은 수치가 일주일 전 답변(9119행, 8월 2일)과 글자까지 동일해서, 검색이 아니라 대화 기억에서 나온 값임이 드러났다. 실제로는 돌핀이 이미 오키나와를 통과한 뒤였다. 가드 세 개가 전부 통과시켰다: isLiveDataRequest false isFactualInfoRequest false looksLikeUnverifiedSpec false - 입력측: 라이브 데이터 패턴이 날씨/기온/환율/주가뿐이라 태풍이 없었다. 태풍·호우·폭우·폭설·한파·폭염·지진·해일·산불·홍수·가뭄·열대저압부 추가. - 출력측: 스펙 단위 목록이 GB/TFLOPS/원/% 계열뿐이라 hPa·m/s·위경도가 어디에도 없었다. 검증할 대상 자체를 못 본 것. 관측 단위(hPa/m/s/kt/km/h/mm/cm/℃)와 좌표(북위·동경 N.N°)를 추가했다. 관측 단위를 넣으면 정상 날씨 답변까지 되던질 위험이 있는데, 재검색 조건에 !hasGroundingToolCall이 있고 weather_가 grounding으로 인정되므로 도구로 받아온 31.5°C·2mm는 영향받지 않는다. 그 반대 방향을 테스트로 못박았다 — 이쪽이 깨지면 날씨 기능이 무한 재검색에 빠진다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -37,6 +37,21 @@ describe('looksLikeUnverifiedSpecClaim — 출력에서 검증 안 된 수치
|
||||
assert.equal(looksLikeUnverifiedSpecClaim('약 15 TFLOPS 수준입니다.'), true);
|
||||
});
|
||||
|
||||
// [2026-08-09] 실제 로그(12065행)의 태풍 답변. 기압/풍속/위경도는 어느 단위 목록에도 없어서
|
||||
// 출력측 가드가 검증할 대상 자체를 못 봤다. GB/TFLOPS만큼이나 스펙적인 수치이고, 그것들과
|
||||
// 달리 시시각각 변하므로 기억해서 쓴 값은 언제나 틀리다.
|
||||
test('[2026-08-09] 기압·풍속·위경도 같은 관측 수치도 걸린다', () => {
|
||||
assert.equal(
|
||||
looksLikeUnverifiedSpecClaim(
|
||||
'현재 태풍 돌핀의 위치는 북위 18.5°, 동경 150.0° 부근이며 중심기압 905hPa, 최대풍속 58m/s입니다.',
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(looksLikeUnverifiedSpecClaim('중심기압 905hPa를 유지하고 있습니다.'), true);
|
||||
assert.equal(looksLikeUnverifiedSpecClaim('최대풍속 58m/s입니다.'), true);
|
||||
assert.equal(looksLikeUnverifiedSpecClaim('북위 18.5° 부근에 있습니다.'), true);
|
||||
});
|
||||
|
||||
test('[2026-07-29] 단위 없는 "N토큰"도 걸린다 — /초 접미사 없는 실제 사례', () => {
|
||||
assert.equal(
|
||||
looksLikeUnverifiedSpecClaim(
|
||||
@@ -161,6 +176,16 @@ describe('isNewsRequest / isLiveDataRequest', () => {
|
||||
assert.equal(isLiveDataRequest('환율 알려줘'), true);
|
||||
assert.equal(isLiveDataRequest('파이썬 리스트 정렬법'), false);
|
||||
});
|
||||
|
||||
// [2026-08-09] 실제 로그(12065행): "지금 태풍 돌핀 어디 있지?"가 이 게이트를 통과해
|
||||
// 검색 없이 답변됐고, 모델이 일주일 전(9119행, 8월 2일) 대화와 똑같은 좌표·기압·풍속을
|
||||
// 그대로 다시 뱉었다. 재해 현황은 날씨만큼이나 시시각각 변한다.
|
||||
test('태풍 등 재해 현황도 라이브 데이터다', () => {
|
||||
assert.equal(isLiveDataRequest('지금 태풍 돌핀 어디 있지?'), true);
|
||||
assert.equal(isLiveDataRequest('태풍 돌핀 세력이 어느 정도야?'), true);
|
||||
assert.equal(isLiveDataRequest('방금 지진 났어?'), true);
|
||||
assert.equal(isLiveDataRequest('내일 호우 예보 있나'), true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isUsableGroundingResult — 빈 검색결과 판별', () => {
|
||||
|
||||
Reference in New Issue
Block a user