# 짧은 후속 질문 LLM 우선 해결 Phase 1-4 구현

**날짜**: 2025-12-23
**작성자**: happybell80
**관련 계획**: `journey/plans/archive/251223_짧은_후속_질문_LLM_우선_해결_계획.md`

---

## 문제

실패한 질문 18개 (총 23개 중 78%): 짧은 후속, 맥락 의존, 모호한 질문 등이 UNKNOWN으로 분류됨.

---

## 구현 내용

### Phase 1: LLM 질문 확장
- `llm_service.py:43-110`: `expand_question()` 메서드 추가
- `message_service.py:194-217`: 짧은 질문(len <= 10) 감지 후 LLM 확장 통합
- 맥락(recent_conversations, session_slots) 포함하여 완전한 질문으로 확장

### Phase 2: LLM 의도 분류 강화
- `intent_parser.py:26-113`: 맥락 정보를 프롬프트에 포함
- `intent_graph.py:79-126`: 확신도 < 0.7일 때 맥락 포함 재분류
- `message_service.py:145-151`: 세션 슬롯 정보를 context에 추가

### Phase 3: LangGraph 워크플로우
- `intent_langgraph_workflow.py`: LangGraph 기반 워크플로우 구현
- `intent_graph.py:37-77`: LangGraph 워크플로우 통합 (기본 활성화)
- 질문 확장 → 의도 분류 → 엔티티 추출 → 스킬 선택 워크플로우

### Phase 4: 세션 맥락 통합
- `message_service.py:182-192`: 모든 단계에서 세션 슬롯 일관되게 전달
- `intent_langgraph_workflow.py:24-46`: LangGraph 워크플로우에서 세션 맥락 사용

---

## 결과

| Phase | 해결률 | 비고 |
|-------|--------|------|
| Phase 1 | 8/17 (47.1%) | 질문 확장만 |
| Phase 2 | +5/9 (55.6%) | 재분류 추가 |
| Phase 3 | 검증 완료 | LangGraph 워크플로우 |
| Phase 4 | 검증 완료 | 세션 맥락 통합 |

**전체 해결률**: 13/18 (72.2%)

**해결된 질문 예시**:
- "어디서?" → "회의는 어디서 하나요?" → calendar_event
- "그거 어떻게 됐어?" → "이메일 발송은 어떻게 됐어요?" → email_send
- "취소해줘" → "이메일 발송을 취소해주세요." → email_send

---

## 교훈

1. **LLM 우선 접근 효과**: 규칙 기반 대신 LLM이 맥락을 이해하여 질문 확장 및 의도 분류 성공
2. **맥락 정보 중요**: recent_conversations와 session_slots를 포함하면 정확도 향상
3. **LangGraph 적극 활용**: 원칙에 따라 LangGraph 워크플로우 기본 활성화
4. **단계별 개선**: Phase 1, 2만으로는 부족, Phase 3, 4 추가로 완성

---

## 참고

- `311_FastAPI_구조_원칙.md` (섹션 5: LangGraph 워크플로우, 섹션 13: LLM 우선 접근 원칙)
- `rb8001/tests/test_failed_questions_results.md` (초기 테스트 결과)

