diff --git a/journey/plans/251023_happybell80_의도_런타임_하이브리드_임베딩_베이지안_동적학습.md b/journey/plans/251023_happybell80_의도_런타임_하이브리드_임베딩_베이지안_동적학습.md index 9ad05ab..c9aab69 100644 --- a/journey/plans/251023_happybell80_의도_런타임_하이브리드_임베딩_베이지안_동적학습.md +++ b/journey/plans/251023_happybell80_의도_런타임_하이브리드_임베딩_베이지안_동적학습.md @@ -34,9 +34,48 @@ - 로그 스키마(요지): intent_decision_log(user_id, message, candidates, chosen, confs, path, success, clarify, latency, ts), prototype_version(intent, centroid_hash, updated_at). ## 5) LLM 재분석 가드레일 + +### 5.1 기본 구조 - 입력: Top‑K 후보명/설명 + 최근 컨텍스트 최소화 주입. - 출력: JSON 한 줄. OOS/불확실은 clarify true, 슬롯 미충족 시 되묻기 우선. +### 5.2 Chain-of-Thought (CoT) 적용 방안 (2025-11-18 추가) + +**목적**: 복잡한 질문이나 확신도 낮은 경우 LLM이 단계별 추론을 통해 더 정확한 의도 분류를 수행하도록 개선. + +**구현 방안**: +1. **IntentParserLLM 프롬프트 수정**: + - 현재: "JSON만 출력하세요" + - 변경: "단계별로 추론한 후 JSON 출력하세요" + - 추론 단계: + - 1단계: 메시지에서 핵심 키워드/엔티티 추출 + - 2단계: 의도 후보 검토 및 컨텍스트 분석 (직전 대화, 슬롯 정보 등) + - 3단계: 최종 의도 결정 및 신뢰도 평가 + +2. **조건부 CoT 활성화**: + - 환경변수: `INTENT_USE_COT=true` (기본값: false) + - 활성화 조건: + - FastPath/Semantic에서 확신도 낮은 경우 (conf < 0.7) + - 복잡한 질문 (키워드 3개 이상, 대명사 포함 등) + - 컨텍스트 의존적 질문 ("이 기업", "그 회사" 등) + - 비활성화 조건: + - FastPath/Semantic에서 확신도 높은 경우 (conf ≥ 0.9) → CoT 생략하여 비용/지연 최소화 + +3. **추론 과정 로깅**: + - LLM 출력에서 추론 단계는 로깅/디버깅용으로 저장 + - 최종 JSON만 파싱하여 기존 인터페이스 유지 + - Human-in-the-loop 리뷰 큐에서 추론 과정 검증 가능 + - 로그 스키마: `intent_cot_log(user_id, message, reasoning_steps, final_intent, timestamp)` + +**예상 효과**: +- 복잡한 질문 정확도 향상 (특히 "이 기업 대표 누구야?" 같은 컨텍스트 의존적 질문) +- 의도 분류 오류 감소 (단계별 검증으로 잘못된 실행 방지) +- 비용/지연 최소화 (조건부 활성화로 불필요한 CoT 호출 방지) + +**구현 파일**: +- `rb8001/app/llm/intent_parser.py` — CoT 프롬프트 추가 및 조건부 활성화 로직 +- `rb8001/app/core/config.py` — `INTENT_USE_COT` 환경변수 추가 + ## 6) 실험·배포 전략 - A/B → 밴딧: 10%→30%→50% 점진 롤아웃, 지표(Unknown/Clarify/오실행/지연/비용) 모니터링. - 임계치/경로/모델 후보는 밴딧 “팔(Arm)”로 관리, Thompson Sampling으로 자동 최적.