대부분의 AI 학습 경로 생성기는 예측 가능한 방식으로 실패합니다. 즉, 존재하지 않는 링크를 환각(hallucinate)하거나, 실제 주간 시간 제약을 무시하거나, 3주차에 갑자기 신용카드를 요구하는 '무료' 강좌로 연결되는 경우가 있습니다.
저는 이러한 문제를 파이프라인 레벨에서 해결하기 위해 Episteme AI (실시간 데모)를 구축했습니다. 여기서는 유료화 감지 및 제약 조건 강제가 내부적으로 어떻게 작동하는지 설명합니다.
1. HTTP 200 OK만으로는 충분하지 않은 이유
많은 강좌 페이지가 콘텐츠를 유료 장벽(paywall), 구독, 또는 7일 체험 기간 뒤에 잠그고 있음에도 불구하고 HTTP 200 상태 코드를 반환합니다.
상태 코드에 의존하기보다는, 회전하는 브라우저 헤더(rotating browser headers)를 사용하여 대상 페이지를 가져온 다음 Cheerio로 DOM을 직접 검사합니다:
// From scripts/check-url.mjs & src/lib/paywallInspector.mjs
const $ = cheerio.load(html);
...
다음으로, 스크립트, 레이아웃 내비게이션, 푸터 등을 제거하고 유료화 정규식 패턴을 무료 감사 지표와 비교하여 점수를 매깁니다:
const PAYWALL_PATTERNS = [
/\b(start\s+(your\s+)?(\d+-day\s+)?free\s+trial)\b/i,
...
만약 유료화 마커가 감지되거나 신뢰도가 임계값 이하로 떨어지면, 해당 링크는 플래그가 지정되고 검증된 주제 일치 대체 링크로 교체됩니다.
2. CLI 또는 API를 통한 모든 URL 테스트
이를 개발자가 직접 실행할 수 있는 독립형 유틸리티로 패키징했습니다:
# 클론한 레포지토리에서:
npm run check-url -- https://docs.python.org/3/tutorial/
...
3. 제약된 Gemini 검증을 통한 엄격한 시간 예산 관리
직장인(주당 5시간 = 총 130시간 예산)을 위한 26주 커리큘럼을 생성할 때, 표준 LLM은 종종 벗어납니다(drift).
Episteme AI는 Gemini 2.0 Flash를 승인된 URL의 명시적 허용 목록(allowlist)으로 제한한 다음, 후속 생성 검증(src/lib/pathGenerator.ts의 validatePath)을 실행합니다:
- 정확한 주차 수가 지평선(horizon)과 일치해야 함
- 각 주의 시간 ≤ 주간 예산 상한선
- 시간 합계가 총 예산과 정확히 일치해야 함
- 승인되지 않은 URL은 허용되지 않음 (Zero unapproved URLs allowed)
만약 검증에 실패하거나 API 키가 설정되어 있지 않으면, 결정론적인 52주 도메인 커리큘럼으로 폴백(fallback)합니다.
소스 코드 및 기여
전체 엔진은 MIT 라이선스를 따르며 오픈 소스로 공개되었습니다:
⭐ GitHub: https://github.com/SreeNaresh1/episteme-ai
🚀 실시간 데모 (Live Demo): https://episteme-ai-one.vercel.app
Rust 커리큘럼과 검색 어댑터(search adapters)에 대한 시작 이슈(starter issues)가 열려 있습니다. 피드백 및 PR(Pull Request)을 환영합니다!