From 542732257cdbc0d94cad8f995b89106cbf736b5e Mon Sep 17 00:00:00 2001 From: ttipo Date: Thu, 5 Nov 2026 23:37:29 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20AI=20=ED=8F=89=EA=B0=80=EC=85=8B=20?= =?UTF-8?q?=EA=B2=80=ED=86=A0=20=EA=B2=B0=EA=B3=BC=EB=A5=BC=20=EC=A0=81?= =?UTF-8?q?=EA=B3=A0=20=ED=99=95=EC=A0=95=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 반려동물·경계 사례를 검토하며 정한 정책을 평가셋 README 와 설계 §9 에 남긴다. 요청의 핵심을 맞출 후보가 없으면 다른 곳으로 채우지 않고 만들지 않으며, 일부만 못 맞추면 맞출 수 있는 만큼 만들고 알린다. '돈 안 쓰는 코스'는 식당·카페를 뺀다. Co-Authored-By: Claude Opus 5.5 --- docs/ai-eval/README.md | 16 ++++++++++++---- docs/design/ai-course.md | 7 ++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/docs/ai-eval/README.md b/docs/ai-eval/README.md index 7d7ff3d..7cc6a6e 100644 --- a/docs/ai-eval/README.md +++ b/docs/ai-eval/README.md @@ -1,9 +1,9 @@ -# AI 코스 생성 평가셋 v2 (대구, 초안) +# AI 코스 생성 평가셋 v2 (대구) WanderGo AI 코스 생성이 **조건을 지키는지**, **없는 정보를 지어내지 않는지** 확인하는 평가용 예시입니다. 모델·프롬프트를 바꿀 때마다 같은 예시로 돌려 점수를 비교합니다. 흐름과 규칙은 [AI 코스 생성 설계](../design/ai-course.md) §2–§3·§9 를 따릅니다. -- `course-eval-v2.jsonl` — 대구판 62개. 2026-11-05 초안이며 검토 후 확정합니다. +- `course-eval-v2.jsonl` — 대구판 62개. 2026-11-05 사용자 검토를 거쳐 확정했습니다(아래 '검토에서 정한 것'). - `course-eval-v1.jsonl` — 2026-10-29 초안(서울·부산·제주 등). 장소 DB 가 대구만 있어 지금은 쓰지 않고, 지역을 넓힐 때 다시 씁니다. ## 구성 (62개) @@ -92,8 +92,16 @@ WanderGo AI 코스 생성이 **조건을 지키는지**, **없는 정보를 지 정답 코스는 적지 않았습니다. 평가는 장소 DB 스냅샷 위에서 돌리므로, 정답은 "조건을 지켰는가"로 판단합니다. -## 검토할 때 봐 주세요 +## 검토에서 정한 것 (2026-11-05) + +- **요청의 핵심을 맞출 후보가 없으면 만들지 않는다.** "실내에서만"(P07), "실내 전시만"(X01)인데 그런 곳이 없으면 + 야외 장소로 채우지 않고 이유를 알린다(`no_course`). 요청과 다른 코스를 대신 내놓지 않는다. +- **일부만 못 맞추면 맞출 수 있는 만큼 만들고 알린다.** "산책하고 카페도"(P02), "근대골목 걷다가 카페"(P10)는 + 산책 코스를 만들고 동반 카페가 없다고 알린다(`partial_with_notice`). +- **'돈 안 쓰는 코스'(X09)는 식당·카페를 뺀다.** 입장료가 무료로 확인되지 않은 곳을 무료라고 하지 않는다. + +## 다음 버전에서 볼 것 - 대구에 사는 사람이 실제로 할 법한 요청인지, 빠진 상황이 있는지 - `checks` 기준값(이동 시간, 장소 수, 끼니)이 너무 빡빡하거나 느슨하지 않은지 -- `expected_behavior` 가 의도한 서비스 정책과 맞는지 (특히 반려동물 P01–P10 과 경계 X01–X10) +- 큐레이션으로 반려 동반 실내 장소나 전통시장이 후보가 되면 반려동물 사례와 F05·G02 의 기대 결과를 다시 본다 diff --git a/docs/design/ai-course.md b/docs/design/ai-course.md index e8dd5ba..9bc6faa 100644 --- a/docs/design/ai-course.md +++ b/docs/design/ai-course.md @@ -361,14 +361,15 @@ E01 | ○○ 빛 축제 | 축제 | 실외 | 남 300m | 18:00–22:00 | 반려: ## 9. 평가 (`docs/ai-eval/`) -- **평가셋을 대구로 옮겼다(v2 초안, 2026-11-05).** v1 62개 중 60개가 서울·부산·제주 등 다른 지역이라 장소 DB(대구)로는 돌릴 수 없었다. +- **평가셋을 대구로 옮겼다(v2, 2026-11-05 사용자 검토로 확정).** v1 62개 중 60개가 서울·부산·제주 등 다른 지역이라 장소 DB(대구)로는 돌릴 수 없었다. v1 은 지역을 넓힐 때 다시 쓴다. v2 는 [`course-eval-v2.jsonl`](../ai-eval/course-eval-v2.jsonl) 62개다. - 지역을 대구 동네(도심 · 수성못 · 앞산)와 대표 장소(팔공산 · 동촌유원지 · 이월드 · 서문시장 등)로 바꾸고, 날짜를 2026-11-05 기준으로 다시 잡았다. - 사례마다 사용자가 확인한 조건(`conditions`)과 문장에서 뽑아야 할 항목(`inferred`)을 적어 조건 해석도 함께 채점한다. - `expected_behavior` 는 흐름에 맞춰 나눈다. `ask_clarification` · `decline_out_of_scope`(8개)는 조건 해석 단계의 `issues` 로, `refuse_part` · `partial_with_notice` · `no_course` 는 생성 단계의 `notices` 로 시험한다. - 만들면서 확인한 데이터 한계(반려 동반 실내 0곳 · 시장은 큐레이션 필요 · 11월 대구 축제 없음)는 평가셋 README 에 적었다. - - 사용자가 사는 지역이므로 실제로 할 법한 요청인지 사용자 검토를 받는다. + - 검토에서 정한 것: 요청의 핵심을 못 맞추면 만들지 않고(`no_course` + 이유), 일부만 못 맞추면 맞출 수 있는 만큼 만들고 알린다(§3.5). + '돈 안 쓰는 코스'는 식당·카페를 뺀다. - **후보 스냅샷을 고정한다.** 장소 DB 는 동기화로 계속 바뀐다. 첫 실행 때 사례별 후보 목록을 파일로 저장하고, 이후 모델 비교는 같은 후보로 한다. `requires` 에 적은 장소가 후보에 없으면(큐레이션 전) 그 사례는 '데이터 준비 안 됨'으로 따로 센다. - **채점**: 자동 채점(코드. §3.6 검증과 같은 함수) → AI 채점자(이유가 데이터와 맞는지 · 자연스러운지, 1–5점) → 사람 검토(무작위 10개). @@ -430,7 +431,7 @@ v0.1 의 추천안을 사용자가 모두 그대로 골랐다. ## 14. 구현 순서 -1. 평가셋 v2(대구) — 지역·날짜 바꾸기, 사용자 검토 (키 불필요). 2026-11-05 초안을 만들었다 +1. 평가셋 v2(대구) — 지역·날짜 바꾸기, 사용자 검토 (키 불필요). 2026-11-05 확정 2. 순수 로직 — 후보 거르기 · 이동 시간 · 시간표 · 검증 · 고치기 + 단위 테스트, 계절별 시간표를 날짜로 고르기(§3.3) (키 불필요) 3. 날씨(기상청 단기예보 · 격자 변환 · 캐시) + 공휴일 표 (공공데이터 키 — 실제 호출 확인은 사용자가 `!` 로) 4. 테이블 · 에러 코드 · API 골격(가짜 AI 클라이언트) + e2e (키 불필요, CI 에서도 돈다)