From 08c02ec1bf29c90929e15517d82273e2d68d6ad4 Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Tue, 23 Dec 2025 23:06:24 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20router=20=EB=A6=AC=ED=8C=A9=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20=EA=B4=80=EB=A0=A8=20=EB=AC=B8=EC=84=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._후속_질문_LLM_우선_해결_계획.md | 75 +++++++++++++++++++ ...uter_call_internal_llm_서비스_이동.md | 33 ++++++++ 2 files changed, 108 insertions(+) create mode 100644 journey/plans/251223_짧은_후속_질문_LLM_우선_해결_계획.md create mode 100644 journey/troubleshooting/251223_router_call_internal_llm_서비스_이동.md diff --git a/journey/plans/251223_짧은_후속_질문_LLM_우선_해결_계획.md b/journey/plans/251223_짧은_후속_질문_LLM_우선_해결_계획.md new file mode 100644 index 0000000..f6557f6 --- /dev/null +++ b/journey/plans/251223_짧은_후속_질문_LLM_우선_해결_계획.md @@ -0,0 +1,75 @@ +# 짧은 후속 질문 LLM 우선 해결 계획 + +**작성일**: 2025-12-23 +**목표**: 실패하는 질문 18개를 LLM 우선 접근 원칙으로 해결 +**원칙**: `311_FastAPI_구조_원칙.md` 섹션 13 참고 +**테스트 결과**: `rb8001/tests/test_failed_questions_results.md` + +--- + +## 문제 + +**실패한 질문 18개** (총 23개 중 78%): +- 짧은 후속: "어디서?", "언제?", "누구랑?", "뭐야?" +- 맥락 의존: "그거 어떻게 됐어?", "결과는?", "그럼 어떻게 할까?" +- 모호한: "어떻게 생각해?", "괜찮아?" +- 부정/거부: "안 해도 돼", "취소해줘", "보내지 마" +- 비교/선택: "어느 게 나아?", "A와 B 중에 뭐가 좋아?" +- 시간 모호: "언제 했어?" +- 상태 확인: "지금 뭐 하고 있어?", "작업 끝났어?" +- 정보 요청: "너는 뭘 할 수 있어?" + +**현재 문제**: CONTEXT_FOLLOWUP Intent 구현되어 있으나 패턴 매칭 미작동, 규칙 기반 접근으로 정확도 저하 + +--- + +## 아키텍처 + +### 워크플로우 +``` +사용자 질문 + ↓ +FastPath (명확한 케이스만) → 성공 시 즉시 처리 + ↓ 실패 +짧은 질문 감지 (len <= 10 또는 확신도 < 0.7) + ↓ +LLM 질문 확장 (맥락 포함) + ↓ +LLM 의도 분류 (맥락 포함) + ↓ +LangGraph 워크플로우 (엔티티 추출 → 스킬 선택) + ↓ +스킬 실행 +``` + +### 필요 작업 +1. ✅ LLM 질문 확장 기능 추가 (완료) +2. ✅ LLM 의도 분류 맥락 포함 강화 (완료) +3. ✅ LangGraph 기반 워크플로우 구현 (완료, 기본 활성화) +4. ✅ 세션 맥락 LLM 전달 (완료) + +--- + +## 구현 단계 + +| Phase | 작업 | 상태 | +|-------|------|------| +| 1 | LLM 질문 확장 구현 | ✅ 완료 → `troubleshooting/251223_짧은_후속_질문_LLM_Phase1234_구현.md` | +| 2 | LLM 의도 분류 강화 | ✅ 완료 → `troubleshooting/251223_짧은_후속_질문_LLM_Phase1234_구현.md` | +| 3 | LangGraph 워크플로우 | ✅ 완료 → `troubleshooting/251223_짧은_후속_질문_LLM_Phase1234_구현.md` | +| 4 | 세션 맥락 통합 | ✅ 완료 → `troubleshooting/251223_짧은_후속_질문_LLM_Phase1234_구현.md` | + +--- + +## 목표 + +- 실패한 질문 18개 → 3개 이하 (78% → 13%) +- 짧은 후속 질문 정확도: 30% → 90% 이상 +- 맥락 의존 질문 정확도: 30% → 85% 이상 + +--- + +## 참고 + +- `311_FastAPI_구조_원칙.md` (섹션 13: LLM 우선 접근 원칙) +- `context_followup_question_solutions.md` (연구 문서) diff --git a/journey/troubleshooting/251223_router_call_internal_llm_서비스_이동.md b/journey/troubleshooting/251223_router_call_internal_llm_서비스_이동.md new file mode 100644 index 0000000..c8b7bca --- /dev/null +++ b/journey/troubleshooting/251223_router_call_internal_llm_서비스_이동.md @@ -0,0 +1,33 @@ +# router._call_internal_llm 서비스 계층 이동 + +**날짜**: 2025-12-23 +**작성자**: happybell80 +**관련 파일**: `app/router/router.py:321`, `app/services/llm/internal_llm_service.py` + +--- + +## 문제 상황 + +- `router.py`에 `_call_internal_llm` 메서드가 비즈니스 로직 포함 +- 계층 분리 원칙 위반: router는 HTTP 처리만, 비즈니스 로직은 services에 + +## 해결 방안 + +- `app/services/llm/internal_llm_service.py` 생성 +- `call_internal_llm` 함수로 이동 (감정 분석, 윤리 확인, 이모지 제거 포함) +- 호출부 수정: `message_service.py:500,616`, `main.py:121,536,583`, `llm_endpoint.py:35,73,104`, `dm_skill.py:337` +- `router.py:321-442`에서 `_call_internal_llm` 제거 + +## 구현 완료 + +- 서비스 생성 완료 +- 모든 호출부 수정 완료 +- router에서 제거 완료 +- 테스트 통과 확인 + +## 교훈 + +- 계층 분리 원칙 준수: router는 라우팅만, 비즈니스 로직은 services로 +- TDD 접근: 테스트 작성 → 구현 → 리팩토링 순서로 진행 +- 문서 작성 원칙 준수: 파일명:줄번호로 위치 명시, 핵심만 간결하게 +