Show GN: [직접 공부하면서 만들었습니다.] 사주 판정은 코드로, 풀이는 LLM으로 하는 사주 서비스, 방울당
요약
사주 판정의 정확도를 높이기 위해 결정론적 코드와 LLM을 결합한 서비스 '방울당' 개발 사례를 소개합니다. 만세력 계산과 판정은 코드로 처리하여 환각을 방지하고, LLM은 개인화된 서술에만 집중하도록 설계했습니다.
핵심 포인트
- 만세력 및 오행 판정은 코드로 구현하여 데이터 정확성 확보
- LLM의 역할을 개인화된 서술로 제한하여 환각 현상 최소화
- 결정론적 레이어를 강화함으로써 LLM 비용 및 재시도율 절감
- 파싱, 스키마 검증, 팩트체크를 포함한 가드레일 구축
안녕하세요, 사주 리포트 서비스 "방울당"을 만들고 있습니다.
로그인 따로 필요없이 비회원도 바로 볼 수 있습니다.
왜 만들었나?
사주는 LLM에게 통째로 맡기면 최악의 도메인입니다. 그럴듯한 서술은 잘 만드는데, 만세력 계산, 오행, 용신 판정처럼 "정답이 있는 부분"에 환각이 섞이는 순간 신뢰가 무너진다고 생각합니다. 또한, 용신을 계산하는 방식은 억부용신법, 조후용신법, 통관용신법, 병약용신법 등 다양한 계산 방법이 있으며 이로 인해서 풀이가 달라지는데, AI에게 "나 용신 이거야~" 라고 넘기기에는 AI가 잘못된 서술을 하게될 우려가 있습니다.
기존 AI 사주 서비스들을 써보면 같은 생년월일인데 볼 때마다 용신 및 서술이 달라지는 경우가 흔했고, 이걸 구조적으로 막아보고 싶었습니다.
어떻게 만들었나 — "판정은 코드가, 서술만 LLM이"
- 만세력 엔진(결정론): 오행 가중치, 십성, 12운성, 신살, 대운/세운 계산은 전부 코드입니다. 태어난 지역에 따른 진태양시 보정도 코다단에서 전부 처리합니다.
- 판정 레이어(결정론): 연애·직업·재물·건강 판정과 월별 흐름까지 코드가 결정합니다. LLM은 이 결과를 뒤집을 수 없습니다.
- LLM은 개인화 서술만: "이 기운이 이 사람에게 어떻게 작동하는가"만 씁니다. 개념 정의("십성이란 ~")는 하드코딩 사전이 렌더링해서, 이 영역은 토큰 0·환각 0입니다.
- 가드레일: 파싱 → 스키마 검증 → 금지어/톤 체크 → 엔진 결과와 대조하는 팩트체크 → 실패 시 재시도 → 리포트를 5개 그룹으로 쪼개 병렬 생성해 지연을 줄였습니다.
만들면서 배운 것
- 프롬프트에 "하지 마라" 목록을 늘리는 것보다, 애초에 LLM이 결정할 수 없도록 입력과 역할을 좁히는 쪽이 훨씬 효과적이었습니다.
- 결정론 레이어가 두꺼워질수록 LLM 비용과 재시도율이 같이 떨어졌습니다. 환각 대책이 곧 비용 최적화였습니다.
- 사주라는 것은 예언서가 아닙니다. 빅데이터일뿐이며, 그저 내가 태어난 시각에 따른 기운일 뿐이며, 이를 알고 대처하는 것이 곧 제 인생에 도움이되는 방향이라고 판단하였습니다.
기능 제안이든 지적이든 어떤 피드백이라도 감사히 받겠습니다!
마지막으로 고양이는 너무 귀엽습니다. 😺😺
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기