출시 준비 중이용 방법
AI 데이트KOEN
Built with Claude · 설계 진행 중

AI 데이트가 Claude를 쓰는 방식

이 페이지는 우리가 만들고 있는 시스템을 설명해요. 세부 사항은 바뀔 수 있어요.

Claude API 활용 방식(설계 기준)입니다. 앱은 개발 중이며 외부 장소 데이터 연동은 계획 단계입니다.

아키텍처

시스템 개요

1 · 코스 요청

채팅 요청지역, 시간대, 예산, 선호, 분위기
플래너 서비스모델 라우터, 캐시된 프롬프트 접두부, 도구 허용 목록
Claude · Messages API도구 사용. 해석과 교체는 작은 모델, 전체 코스는 큰 모델
장소 도구search_places, get_place_details, get_alternatives, estimate_travel_time
라이선스 장소 데이터외부 장소 데이터 API (계획 단계)

2 · 응답

코스 JSON장소, 시간, 비용, 이유, 대안
검증JSON 스키마, 도구 결과에서 온 장소 ID만 허용, 예산·영업시간 확인
앱타임라인 표시, 장소 교체, 후보 상세 보기
코스 품질 평가프롬프트나 모델을 바꿀 때마다 오프라인 테스트 세트 실행
그라운딩 규칙: 화면에 나오는 모든 장소는 같은 세션의 도구 결과에서 온 place_id가 있어야 해요. Claude는 순위를 매기고, 순서를 정하고, 이유를 설명할 뿐 도구가 돌려주지 않은 장소는 추가할 수 없어요.
Claude API자체 코드계획 단계

코스 요청 한 번

코스를 요청하면 일어나는 일

  1. 요청 이해하기

    플래너는 버전이 관리되는 시스템 프롬프트(작업, 한국 데이트 맥락, 제약, 출력 규칙)와 도구 정의를 담아 Messages API로 Claude에 채팅을 보내요. 먼저 작은 Claude 모델이 자유로운 문장을 지역, 시간대, 예산, 음식 취향, 분위기 같은 구조화된 조건으로 바꿀 수 있어요.

  2. 도구로 검색하기

    Claude는 search_places(카테고리, 지역, 영업 시각, 가격대), get_place_details, estimate_travel_time 같은 도구를 호출해요. 서버는 각 호출을 허용 목록과 대조하고, 장소 데이터 소스를 조회한 뒤 tool_result를 돌려줘요. 반복 횟수에는 상한이 있어요.

  3. 코스 만들기

    Claude는 장소를 고르고 순서를 정해 코스 스키마에 맞는 JSON을 돌려줘요. 장소마다 시간, 카테고리, place_id, 예상 비용, 이동 시간, 한 줄 이유와 대안이 들어가요.

  4. 검증하기

    서버는 JSON을 스키마로 검증하고, 모든 place_id가 이번 세션의 도구 결과에서 왔는지 확인하고, 예산과 영업시간을 점검해요. 실패하면 화면에 보여주지 않고 다시 시도하거나 표시해 둬요.

  5. 바꾸고 다듬기

    사용자가 장소를 바꾸면 Claude는 캐시된 맥락과 함께 현재 코스를 받아 시간, 거리, 예산을 다시 확인한 새 코스를 돌려줘요. 후보 상세 정보(메뉴, 가격, 리뷰)는 모델이 쓴 글이 아니라 장소 데이터로 보여줘요.

Claude API 설계

구성 요소

Messages API

이해, 계획, 설명은 모두 버전이 관리되는 시스템 프롬프트와 JSON 출력 규칙을 갖춘 Claude Messages API로 처리해요.

도구 사용

JSON Schema로 정의한 타입 있는 도구로 Claude가 계획 중에 장소 데이터를 조회해요. 도구는 읽기 전용이며, 서버에서 라이선스 장소 데이터 API(계획 단계)를 대상으로 실행돼요.

구조화된 JSON

모든 코스는 고정된 스키마를 따르고, 앱에 표시되기 전에 서버에서 검증돼요.

프롬프트 캐싱

시스템 프롬프트, 도구 정의, 재사용하는 참고 텍스트를 캐시 가능한 접두부에 두어, 이어지는 교체 요청의 지연 시간과 비용을 줄여요.

모델 라우팅

작고 빠른 Claude 모델(예: Haiku)이 해석과 한 곳 교체를 맡고, 큰 모델(예: Sonnet)이 전체 코스를 짜고 어려운 경우를 다시 처리해요.

코스 품질 평가

지역, 예산, 시간, 분위기가 다양한 샘플 요청으로 스키마 유효성, 예산 적합도, 영업시간, 이동 거리, 선호 일치, 그라운딩, 코스당 비용과 지연 시간을 평가해요.

search_places.json · 예시
{
  "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"]
  }
}
course.json · 가상 샘플
// 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 이용 정책 안에서 사용하며, 연령 제한 장소는 성인에게만 추천해요.

Claude Code로 만들어요. 제품 런타임 외에도 팀은 Claude Code로 코드를 작성·리팩터링하고 테스트를 쓰고 변경 사항을 리뷰하며, Claude로 프롬프트, 평가 케이스, 문서 초안을 써요. 모든 변경은 배포 전에 사람이 검토해요.

베타가 열리면 써 보고 싶으신가요?

이메일을 보내 주시면 테스트할 수 있을 때 답장드릴게요. 동의 없이 메일링 리스트에 추가하지 않아요.

이메일 보내기hello@purifysec.com