docs: add Chain-of-Thought (CoT) application plan for intent analysis

- Add CoT implementation strategy to LLM re-analysis section
- Conditional activation via INTENT_USE_COT env var
- Reasoning step logging for review queue validation
- Expected to improve accuracy for complex/context-dependent questions
This commit is contained in:
Claude-51124 2025-11-18 20:27:07 +09:00
parent 9ad5468f9f
commit 30ca36c067

View File

@ -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 기본 구조
- 입력: TopK 후보명/설명 + 최근 컨텍스트 최소화 주입.
- 출력: 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으로 자동 최적.