본 페이지는 타로리더가 어떻게 카드를 뽑고 해석을 생성하는지의 전 과정을 공개합니다. "AI 타로"가 어떻게 작동하는지 투명하게 알리는 것이 신뢰의 출발점이라고 믿습니다.
1. 카드 풀 — 78장 라이더-웨이트 풀덱
본 서비스는 78장의 라이더-웨이트-스미스 덱(1909) 원본을 사용합니다.
- 메이저 아르카나 22장 (The Fool ~ The World)
- 마이너 아르카나 56장 — 4슈트 × 14장 (Wands·Cups·Swords·Pentacles, 각 Ace~10 + Page·Knight·Queen·King)
각 카드의 한국어 의미(정방향·역방향)는 app/seeds/seed_cards.py에 정의되어 있으며,
표준 라이더-웨이트 해석 체계에 기반합니다. 자세한 카드별 의미는 전체 카드 가이드를 참고하세요.
2. 카드 뽑기 — 무작위성 보장
이용자가 부채꼴로 펼쳐진 78장 중 3장을 클릭하면, 그 카드 ID 3개가 서버로 전송됩니다. 서버는 다음을 수행합니다.
- 카드 ID 중복 검증, 활성 유형 검증, 질문 본문 길이 검증
- 각 카드에 대해 독립적으로
secrets.randbelow(2)를 호출하여 정/역방향 결정 (Python 표준secrets모듈은 암호학적으로 안전한 난수 생성기를 사용합니다) - 카드별 정/역방향 의미 텍스트 로드
"좋은 카드"가 더 자주 나오게 하거나, 그림자 카드를 빼는 등의 편향은 일체 없습니다.
3. 시스템 프롬프트 — LLM에게 전달되는 지시
각 질문 유형(연애·재물·진로 등 14종)마다 별도의 시스템 프롬프트가 적용됩니다. 모든 유형의 베이스 원칙은 다음과 같습니다.
당신은 정통 라이더-웨이트 타로 리더입니다. 다음 원칙을 엄격히 따라 해석하세요.
- 정방향과 역방향, 빛과 그림자를 모두 정직하게 풀어내세요.
- 그림자성 강한 카드(Tower, Death, Devil, Moon 등)는 부드럽게 포장하지 말고 분명하게 전달하세요.
- 단정적 예언("반드시 ~한다", "확실히 ~될 것이다")이나 두려움을 부추기는 표현은 피하세요.
- 동시에 무비판적 낙관("다 잘 풀릴 거예요")도 배제하세요.
- 의료·법률·재정 조언으로 해석되지 않게 주의하세요.
- 응답은 [전체 메시지] / [과거] / [현재] / [미래] 4단락 형식으로 한국어로 작성하세요.
유형별 시스템 프롬프트의 전문은 관리자 화면에서 확인할 수 있으며, 필요 시 운영자가 조정할 수 있습니다.
4. 사용자 컨텍스트 — LLM에게 전달되는 데이터
시스템 프롬프트와 함께 다음의 user 메시지가 전송됩니다.
[질문 유형] 연애운 (love) [질문] (사용자 입력) [뽑힌 카드] 1. 과거 - The Tower [역방향] (테마: 충격, 붕괴, 각성) — 피할 수 없는 변화를 늦추려는 시도, 작은 균열의 누적 2. 현재 - The Sun [정방향] (테마: 기쁨, 활력, 성공) — 밝은 에너지와 명확함, 즐거운 성취 3. 미래 - Death [역방향] (테마: 종결, 변화, 전환) — 변화 거부, 끝내야 할 것을 붙들고 있음 위 카드 배열을 바탕으로 과거-현재-미래 흐름을 한국어로 해석해 주세요. 역방향 카드는 그림자 의미를 정직하게 다루고, Tower/Death/Devil/Moon 같은 그림자성 강한 카드는 부드럽게 포장하지 말고 분명하게 짚어 주세요.
5. LLM 호출 — 자체 호스팅 인프라
- OpenAI 호환 API 엔드포인트(
/v1/chat/completions) 사용 - 외부 회사 AI(ChatGPT, Claude, Gemini)는 사용하지 않습니다. 사용자 질문이 외부 회사 서버로 전송되지 않습니다.
- Temperature 0.8 (창의성과 일관성의 균형)
- 타임아웃: 연결 5초, 응답 60초
- 동시 호출 제한: Semaphore(8)
6. 결과 처리 및 표시
- LLM 응답 텍스트를 정규식으로 5섹션으로 분리: 전체 메시지 / 과거 / 현재 / 미래 / 핵심 조언
- 각 섹션에 색상 그라데이션 헤더와 시간 뱃지(PAST/NOW/NEXT) 적용
- 역방향 카드는 화면에서 180° 회전 + 빨간 "역방향" 배지로 표시
- 요약 보기: 별도의 요약 시스템 프롬프트로 5줄 요약 생성 (1회만, 캐싱)
- 리딩 결과·응답 시간·LLM 모델·상태(성공/실패)를 통계 로그에 기록
7. 균형 잡힌 해석을 위한 추가 장치
- 오늘의 운세 (자동 3장): today 유형은 시스템이 카드 3장을 무작위로 뽑아 오전 · 오후 · 저녁에 대응시키고, 한 줄 메시지 / 오전 / 오후 / 저녁 / 핵심 조언 형식으로 응답
- 역방향 대응 안내: 역방향 카드가 걸린 시간대는 경고·정체 신호와 함께 그 시간대의 대응 행동을 제시
- 카드 의미 강화: Death = "회피할 수 없는 끝과 시작", Tower = "거짓된 토대의 붕괴, 진실이 격렬하게 드러나는 시기", Devil = "자기 파괴적 집착, 두려움이 만든 사슬" 등 카드 의미 자체에 입체성을 부여하여 단순 긍정/부정 이분법을 회피
8. 참고 문헌과 출처
본 서비스의 카드 의미와 해석 체계는 다음 자료에 기반합니다.
- Arthur Edward Waite, The Pictorial Key to the Tarot (1910)
- Pamela Colman Smith의 1909년 원본 일러스트
- Rachel Pollack, Seventy-Eight Degrees of Wisdom (1980)
- Mary K. Greer, Tarot for Your Self (1984)
- 국내 타로 표준 해석 자료 (한국타로협회 등)
자세한 출처와 저작권 정보는 카드 출처와 참고문헌 페이지를 참고하세요.
9. 한계와 정직한 고백
- LLM은 그럴듯하게 들리지만 사실과 다른 내용을 생성할 수 있습니다 (환각).
- 같은 질문에 매번 다른 답이 나옵니다. 이는 카드 무작위성의 자연스러운 결과입니다.
- 본 서비스의 해석이 "정답"이 아닙니다. 다른 타로 리더는 같은 카드를 다르게 풀 수 있습니다.
- 운영자는 모든 리딩 결과를 검수하지 않습니다. 부적절한 결과를 발견하시면 알려주세요.