2026.02.17 - [개발] - 사주 앱 개발 4편 - 룰 엔진 + AI 해석 하이브리드 설계
사주 룰 + AI 해석 하이브리드 설계과정에 대한 좀 상세한 분석이다
"계산은 코드로, 해석은 AI로."
말하면 간단하다. 실제로 설계하다 보면 경계가 모호한 지점이 계속 나온다. 용신 판단은 코드인가 AI인가. 합충의 강도는 누가 결정하는가. 대운의 영향력 가중치는 어디서 처리하는가.
이 경계를 어떻게 그었는지 기록한다. 정답이 있는 게 아니라, 이 프로젝트에서 내린 결론과 그 근거다.
경계를 나누는 기준 하나
모호한 케이스를 만날 때마다 이 질문으로 돌아왔다.
"같은 입력에 항상 같은 출력이 나와야 하는가?"
그렇다면 코드다. 아니라면 AI다.
사주 계산의 본질은 재현성이다. 1985년 3월 15일 오전 10시에 태어난 사람의 일주는 항상 동일해야 한다. 오행 비율도, 십신 배치도, 합충 여부도 마찬가지다. 이것들이 매번 다르게 나오면 서비스가 아니다.
반면 "이 사람의 직업 적성은 무엇인가"는 재현성보다 맥락이 중요하다. 같은 데이터를 보고 "창의적인 분야가 맞다"고 할 수도 있고, "기술직이 안정적이다"고 할 수도 있다. 둘 다 틀리지 않을 수 있다. 이건 AI 영역이다.
경계가 명확한 것들
코드 영역:
- 사주 네 기둥 계산 (만세력 데이터 기반)
- 절기 시각 판정 (분 단위)
- 진태양시 보정 (경도 기반)
- 천간/지지 오행 분류
- 십신 배치 (일간 기준 규칙 테이블)
- 오행 비율 계산
- 합충형파해 검출 (위치 기반, 규칙 명확)
- 12운성 배치
- 공망 계산
이것들은 명리학 이론에서 규칙이 고정되어 있다. 해석의 여지가 없다. 甲과 己가 만나면 합이 되고, 子와 午가 만나면 충이다. 조건문으로 처리하면 끝이다.
AI 영역:
- 오행 비율의 의미 설명
- 십신 조합이 성격에 미치는 영향
- 직업 적성 해석
- 대인관계 패턴 설명
- 대운 시기별 경향 설명
- 종합 해석 문장 생성
이것들은 정해진 답이 없다. 같은 편재 과다 구조라도 월지가 무엇이냐에 따라 발현 방식이 다르고, 어떤 관점으로 보느냐에 따라 강조점이 달라진다. 언어로 풀어내는 것 자체가 해석 행위다.
경계가 모호한 케이스들
용신 판단
용신(用神)은 사주에서 필요한 오행이 무엇인지를 판단하는 것이다. 이게 코드인가 AI인가.
처음엔 AI에 맡기려 했다. "용신이 무엇인지 판단하고 그 이유를 설명해줘"라고. 문제는 용신 판단 방법이 여러 가지라는 것이다. 억부법(抑扶法)은 오행의 강약을 보고, 조후법(調候法)은 계절의 한난조습을 본다. 통관법, 전왕법도 있다. AI는 이 방법들을 혼용하거나 임의로 선택한다.
결론: 용신 판단은 코드로 처리했다. 억부법 기준으로 규칙을 명시하고, 오행 점수가 특정 임계값 이하면 용신으로 판단하는 로직을 구현했다. 조후법은 궁통보감 데이터를 참조 테이블로 만들어 코드에 넣었다.
AI에게는 "이미 판단된 용신이 이것이다. 왜 이 오행이 이 사람에게 필요한지 설명해달라"고 요청한다. 판단은 코드, 설명은 AI.
합충의 강도
子午충이 발생했다. 합충이 일어났다는 건 코드로 잡는다. 그런데 이 충이 강한지 약한지는?
명리학에서 합충의 강도는 위치, 투간 여부, 주변 오행의 지원에 따라 달라진다. 이것까지 코드로 계산하면 가능은 하지만 규칙이 복잡해지고, 학파마다 기준이 다르다.
결론: 강도 판단은 AI에게 위임했다. 코드는 충의 발생 여부와 위치만 데이터로 넘긴다. AI가 전체 사주 구조를 보고 이 충이 어느 정도 영향력을 가지는지 해석한다.
"conflicts": [
{
"type": "충",
"pair": ["子", "午"],
"positions": ["year_branch", "day_branch"],
"note": "년지와 일지의 충"
}
]
위치 정보를 넘기면 AI가 "년주와 일주의 충은 초년과 현재 삶의 방향성 충돌로 읽힌다"는 식으로 맥락 있는 해석을 한다.
대운 가중치
현재 대운이 용신 오행인지 기신(忌神) 오행인지는 코드로 판단 가능하다. 그런데 "이 시기가 얼마나 좋은 시기인가"를 수치로 표현하는 건 어렵다.
결론: 수치화는 하지 않았다. 좋음/보통/나쁨으로 레이블링하면 사용자가 오해할 수 있다. 대운 오행과 용신/기신 관계만 데이터로 넘기고, "어떤 의미인지"는 AI가 문장으로 풀게 했다.
설계 결과: 데이터 계층 구조
경계를 정리하고 나서 나온 데이터 흐름이다.
[사용자 입력]
생년월일시, 성별, 양/음력
↓
[Layer 1 — 계산 엔진]
사주 기둥, 천간지지, 오행 분류, 십신 배치,
오행 비율, 합충형파해, 12운성, 용신 판단
↓
[Layer 2 — 구조화 JSON]
AI에게 넘길 분석 데이터 패키지
↓
[Layer 3 — AI 해석 엔진]
궁통보감 참조 + 구조 데이터 기반 해석 생성
↓
[Layer 4 — 사용자 화면]
명식표(즉시) + AI 해석(스트리밍)
Layer 1과 Layer 3 사이에 검증 가능한 데이터가 있다는 게 핵심이다. AI 해석이 이상하다 싶으면 Layer 2 데이터를 보면 된다. 어디서 틀렸는지 추적이 가능하다.
경계 설계에서 배운 것
모호한 케이스를 만날 때마다 "재현성이 필요한가"라는 기준 하나로 결론이 났다. 답이 하나여야 하면 코드, 맥락이 중요하면 AI.
그리고 경계를 잘 그을수록 AI의 해석 품질이 올라간다. AI에게 "다 알아서 해줘"가 아니라 "이것만 해줘"라고 할 때, 잘하는 것에만 집중하게 된다.
용신 판단을 AI에 맡겼을 때와 코드로 처리하고 결과만 넘겼을 때 해석 품질 차이가 눈에 띄게 달랐다. AI가 계산 부담에서 해방되면 해석에 더 집중한다.
다음 편에서는 실제 프롬프트 설계를 다룬다. 구조화된 JSON 데이터를 어떻게 프롬프트에 실을 것인지, 궁통보감 데이터를 어떻게 주입했는지, 시스템 프롬프트에서 무엇을 명시하고 무엇을 생략했는지.
'개발 > AI' 카테고리의 다른 글
| 사주 룰 + AI 해석 하이브리드: 비용과 품질의 균형점 찾기 (0) | 2026.03.04 |
|---|---|
| 사주 룰 + AI 해석 하이브리드: 룰 결과를 AI에게 넘기는 프롬프트 설계 (0) | 2026.03.04 |
| 사주 룰 + AI 해석 하이브리드: AI 단독 해석이 실패하는 지점 (0) | 2026.03.04 |
| 사주 룰 + AI 해석 하이브리드: 왜 룰 엔진만으로는 안 되는가 (0) | 2026.03.04 |
| "당신은 전문 사주 역술인입니다" — 이 프롬프트가 왜 작동 안 하는가 (1) | 2026.03.02 |
