"내일 구미 날씨"가 75자 한 문장(기온+하늘상태)으로만 나오던 문제를 추적한 결과,
프롬프트가 아니라 도구 쪽에 원인이 세 개 있었음.
1) weather_search가 더 나은 도구를 밀어내고 있었음
설명에 "ALWAYS use this for weather/forecast/temperature queries"라는 절대
지시가 있어 모델이 매번 이걸 골랐는데, 이 도구는 기온 범위와 하늘 상태만
반환함(강수확률·습도·풍속 없음). 강수확률을 주는 weather_openmeteo가 있는데도
도달하지 못했음. 두 설명을 각자의 실제 능력에 맞게 정정하고 openmeteo를
PREFERRED로 표시.
2) 시스템 프롬프트가 없는 데이터를 요구하고 있었음
OUTPUT FORMAT이 "강수확률·평년대비를 서술하라"고 했으나 모델이 호출한 도구는
그 값을 주지 않음 — 지시를 따르려면 지어내는 수밖에 없는 구조였음. "받지
못했으면 지어내지도 말고 조용히 빼지도 말고 weather_openmeteo를 호출하라"로
변경.
3) ⚠ 구미가 엉뚱한 지역으로 해석되고 있었음 (가장 심각)
KR_CITY_COORDS에 구미가 없어 Open-Meteo 지오코더로 넘어갔는데, 한국 내 "구미"
결과 10건 중 실제 구미시(36.12, 128.34)가 하나도 없음. 게다가 모든 항목의
population 필드가 비어 있어 "인구 최대 선택" 로직이 results[0]으로 붕괴,
강원도의 작은 마을(38.16)이 선택됐음. 위도 2도 차이 = 다른 기후대인데 에러는
전혀 나지 않았음 — 사용자는 그동안 남의 동네 날씨를 받고 있었을 수 있음.
구미 포함 중견도시 25곳의 좌표를 테이블에 직접 추가.
data.go.kr 키는 vault(kma.api_key)에 암호화 저장 — 평문 커밋 없음. 배포 후 확인:
기상청 초단기실황이 구미 기온 32.2°C/습도 60%/풍향 북북서로 정상 응답, 예보
답변도 75자 → 167자로 강수확률·UV지수 포함.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>