AI 데이트가 Claude를 쓰는 방식
이 페이지는 우리가 만들고 있는 시스템을 설명해요. 세부 사항은 바뀔 수 있어요.
Claude API 활용 방식(설계 기준)입니다. 앱은 개발 중이며 외부 장소 데이터 연동은 계획 단계입니다.
아키텍처
시스템 개요
1 · 코스 요청
2 · 응답
place_id가 있어야 해요. Claude는 순위를 매기고, 순서를 정하고, 이유를 설명할 뿐 도구가 돌려주지 않은 장소는 추가할 수 없어요.코스 요청 한 번
코스를 요청하면 일어나는 일
요청 이해하기
플래너는 버전이 관리되는 시스템 프롬프트(작업, 한국 데이트 맥락, 제약, 출력 규칙)와 도구 정의를 담아 Messages API로 Claude에 채팅을 보내요. 먼저 작은 Claude 모델이 자유로운 문장을 지역, 시간대, 예산, 음식 취향, 분위기 같은 구조화된 조건으로 바꿀 수 있어요.
도구로 검색하기
Claude는
search_places(카테고리, 지역, 영업 시각, 가격대),get_place_details,estimate_travel_time같은 도구를 호출해요. 서버는 각 호출을 허용 목록과 대조하고, 장소 데이터 소스를 조회한 뒤tool_result를 돌려줘요. 반복 횟수에는 상한이 있어요.코스 만들기
Claude는 장소를 고르고 순서를 정해 코스 스키마에 맞는 JSON을 돌려줘요. 장소마다 시간, 카테고리,
place_id, 예상 비용, 이동 시간, 한 줄 이유와 대안이 들어가요.검증하기
서버는 JSON을 스키마로 검증하고, 모든
place_id가 이번 세션의 도구 결과에서 왔는지 확인하고, 예산과 영업시간을 점검해요. 실패하면 화면에 보여주지 않고 다시 시도하거나 표시해 둬요.바꾸고 다듬기
사용자가 장소를 바꾸면 Claude는 캐시된 맥락과 함께 현재 코스를 받아 시간, 거리, 예산을 다시 확인한 새 코스를 돌려줘요. 후보 상세 정보(메뉴, 가격, 리뷰)는 모델이 쓴 글이 아니라 장소 데이터로 보여줘요.
Claude API 설계
구성 요소
Messages API
이해, 계획, 설명은 모두 버전이 관리되는 시스템 프롬프트와 JSON 출력 규칙을 갖춘 Claude Messages API로 처리해요.
도구 사용
JSON Schema로 정의한 타입 있는 도구로 Claude가 계획 중에 장소 데이터를 조회해요. 도구는 읽기 전용이며, 서버에서 라이선스 장소 데이터 API(계획 단계)를 대상으로 실행돼요.
구조화된 JSON
모든 코스는 고정된 스키마를 따르고, 앱에 표시되기 전에 서버에서 검증돼요.
프롬프트 캐싱
시스템 프롬프트, 도구 정의, 재사용하는 참고 텍스트를 캐시 가능한 접두부에 두어, 이어지는 교체 요청의 지연 시간과 비용을 줄여요.
모델 라우팅
작고 빠른 Claude 모델(예: Haiku)이 해석과 한 곳 교체를 맡고, 큰 모델(예: Sonnet)이 전체 코스를 짜고 어려운 경우를 다시 처리해요.
코스 품질 평가
지역, 예산, 시간, 분위기가 다양한 샘플 요청으로 스키마 유효성, 예산 적합도, 영업시간, 이동 거리, 선호 일치, 그라운딩, 코스당 비용과 지연 시간을 평가해요.
{
"name": "search_places",
"description": "Read-only search over licensed place data.",
"input_schema": {
"type": "object",
"properties": {
"area": { "type": "string" },
"category": { "enum": ["restaurant","cafe","activity","walk"] },
"open_at": { "type": "string", "format": "date-time" },
"max_price_per_person": { "type": "integer" }
},
"required": ["area", "category"]
}
}
// sample only; IDs and values are fictional { "area": "Seongsu-dong", "window": "14:00-21:00", "budget_krw": 100000, "stops": [ { "time": "14:00", "category": "activity", "place_id": "sample-001", "est_cost_krw": 40000 }, { "time": "18:00", "category": "restaurant", "place_id": "sample-003", "est_cost_krw": 42000, "alternatives": ["sample-007", "sample-009"] } ], "total_est_krw": 96000 }
품질, 안전, 데이터
설계 원칙
장소와 리뷰를 지어내지 않아요
앱에 보이는 이름, 가격, 메뉴, 리뷰는 출처가 표시된 장소 데이터에서 가져오도록 설계했으며, 모델이 생성하지 않아요.
라이선스 데이터만
외부 장소 데이터 API를 약관에 따라 사용하고 필요한 출처 표기를 할 계획이에요. 허용하지 않는 사이트를 스크래핑할 계획은 없어요.
데이터 최소화
코스를 짜는 데 필요한 건 지역과 시간이지 신원이 아니에요. 정확한 위치는 선택 사항이며, 채팅 기록은 기능에 필요한 기간만 보관해요. 개인정보 처리방침을 확인해 주세요.
콘텐츠 안전
사용자 글은 요청으로, 장소 데이터는 신뢰할 수 없는 입력으로 다뤄요. Anthropic 이용 정책 안에서 사용하며, 연령 제한 장소는 성인에게만 추천해요.
베타가 열리면 써 보고 싶으신가요?
이메일을 보내 주시면 테스트할 수 있을 때 답장드릴게요. 동의 없이 메일링 리스트에 추가하지 않아요.