- Modified plans/000000_unresolved_items_matrix.md - Added research/250920_happybell80_베이즈_관련_핵심_논문_10선.md
87 lines
2.8 KiB
Markdown
87 lines
2.8 KiB
Markdown
# 캐시에 "처리 중..." 저장으로 인한 대화 맥락 파괴
|
|
|
|
## 날짜: 2025-08-31
|
|
## 작성자: happybell80 & Claude
|
|
## 관련 서비스: rb8001
|
|
## 상태: ✅ 해결 (2025-09-19)
|
|
## 긴급도: 높음 (사용자 경험 심각 저하)
|
|
|
|
---
|
|
|
|
## 1. 문제 발견
|
|
사용자와의 대화에서 완전한 맥락 상실 발생:
|
|
```
|
|
사용자: 오늘 그만 하자고
|
|
로빙: 오늘은 여기서 마무리하는 것이 좋겠습니다 ✓
|
|
사용자: 뭘?
|
|
로빙: 무엇을 도와드릴까요? ✗
|
|
사용자: 마무리 하자고
|
|
로빙: 아드님은 초등학교 2학년입니다 ✗✗✗
|
|
```
|
|
|
|
## 2. 근본 원인
|
|
**캐시에 "처리 중..." 플레이스홀더가 저장됨**
|
|
|
|
로그 분석:
|
|
```
|
|
[직전 대화 - 반드시 이 맥락에서 답변하세요]
|
|
사용자: 마무리 하자고.
|
|
로빙: 처리 중... <- 문제의 원인!
|
|
|
|
사용자: 뭘 추천해. 추천하긴.
|
|
로빙: 김종태님, 제가 어떤 것을 추천해 드리면 될까요?
|
|
```
|
|
|
|
## 3. 문제 흐름
|
|
1. 사용자 메시지 수신
|
|
2. **즉시 캐시에 "처리 중..." 저장** (router.py)
|
|
3. LLM 응답 생성 시작
|
|
4. 다음 메시지 도착
|
|
5. 캐시에서 "처리 중..." 포함된 대화 로드
|
|
6. Gemini가 불완전한 컨텍스트로 엉뚱한 응답 생성
|
|
|
|
## 4. 영향
|
|
- 대화 연속성 완전 파괴
|
|
- 사용자 짜증 유발 ("너.. 답변 제대로 안할래?")
|
|
- 서비스 신뢰도 하락
|
|
|
|
## 5. 해결 방안
|
|
|
|
### 옵션 1: 캐시 저장 시점 변경
|
|
- "처리 중..." 저장하지 않음
|
|
- 응답 완료 후에만 캐시 업데이트
|
|
|
|
### 옵션 2: 플레이스홀더 필터링
|
|
- 캐시 로드 시 "처리 중..." 항목 제외
|
|
- 완성된 대화만 컨텍스트에 포함
|
|
|
|
### 옵션 3: 캐시 구조 개선
|
|
```python
|
|
cache_entry = {
|
|
"message": user_message,
|
|
"response": bot_response,
|
|
"status": "complete" # complete/processing 구분
|
|
}
|
|
```
|
|
|
|
## 6. 추가 발견
|
|
- Frontend 사용 시 발생 (slack_user_id: None)
|
|
- 289개 대화 로드 = 과도한 컨텍스트
|
|
- Gemini가 직전 대화 지시사항 무시
|
|
|
|
## 7. Action Items
|
|
- [x] router.py 캐시 저장 로직 수정 — 플레이스홀더 저장 비활성화
|
|
- [x] "처리 중..." 플레이스홀더 제거 (컨텍스트 구성 시 제외)
|
|
- [ ] 캐시 status 필드 추가 검토 (후속 개선 과제)
|
|
- [x] 테스트 및 배포
|
|
|
|
---
|
|
|
|
## 8. 해결 내역 (코드 기준)
|
|
- 변경 포인트: `rb8001/app/router/router.py`
|
|
- 처리 중 캐시 삽입 코드 비활성화 (주석 처리)로 플레이스홀더가 대화 컨텍스트에 포함되지 않도록 수정
|
|
- 최근 대화 로딩 시 플레이스홀더가 컨텍스트에 들어가지 않도록 보호
|
|
- 검증: 최근 대화 기반 컨텍스트에 실제 응답만 포함되어 의도 파악 정확도 회복
|
|
|
|
추가 메모: 캐시 엔트리의 상태 필드(`processing/complete`) 도입은 선택적 후속 개선으로 남겨둠.
|