From 9a00e6f3bc11695bc5ddb06482b446d88fe51352 Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Tue, 18 Nov 2025 23:24:00 +0900 Subject: [PATCH] docs: update rb8001 web search intent troubleshooting --- ...8001_의도분석_UNKNOWN_및_웹검색.md | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/journey/troubleshooting/251118_happybell80_rb8001_의도분석_UNKNOWN_및_웹검색.md b/journey/troubleshooting/251118_happybell80_rb8001_의도분석_UNKNOWN_및_웹검색.md index 7467eac..77dbb36 100644 --- a/journey/troubleshooting/251118_happybell80_rb8001_의도분석_UNKNOWN_및_웹검색.md +++ b/journey/troubleshooting/251118_happybell80_rb8001_의도분석_UNKNOWN_및_웹검색.md @@ -39,21 +39,13 @@ ## 구현 완료 (2025-11-18) -### Chain-of-Thought (CoT) 적용 완료 -- `rb8001/app/core/config.py:38`: `INTENT_USE_COT` 환경변수 추가 (기본값: false) -- `rb8001/app/llm/intent_parser.py:24-117`: CoT 프롬프트 및 조건부 활성화 로직 구현 - - CoT 활성화 시: 단계별 추론 프롬프트 (1단계: 키워드 추출 → 2단계: 의도 후보 검토 → 3단계: 최종 결정) - - CoT 비활성화 시: 기존 간단 프롬프트 유지 - - 추론 과정 로깅: `logger.debug()`로 추론 단계 기록 - - 추론 과정 메타데이터: `_reasoning_steps` 필드로 응답에 포함 (선택적) -- `rb8001/tests/test_intent_parser_cot.py`: CoT 적용 테스트 작성 (TDD) -- 커밋: `256ffeb` (2025-11-18) -- 배포: Gitea Actions 자동 배포 완료, rb8001 컨테이너 정상 동작 확인 - -### 활성화 방법 -- 환경변수 설정: `.env` 파일에 `INTENT_USE_COT=true` 추가 -- 기본값: `false` (CoT 비활성화, 기존 동작 유지) -- 활성화 시: 복잡하거나 불완전한 질문의 의도 분류 정확도 개선 기대 +### 1차 개선: Clarify 응답 및 대명사 해소 보완 +- `rb8001/app/router/message_router.py:25-114`: `_resolve_search_query()`에서 기업 후보 스캔 시 숫자/날짜 전용 토큰(예: `11월`, `10시`, `2025`)을 엔티티 후보에서 제외하도록 필터 추가, 날짜·시간 표현이 "기업명"으로 잘못 인식되는 문제 완화. +- `rb8001/app/router/router.py:180-205`: Clarify 응답 여부(`is_clarify_response`) 계산 시 세션의 직전 intent(`session.intent`)를 함께 보관하여, 후속 발화 처리에 활용. +- `rb8001/app/router/router.py:247-283`: + - Clarify 응답이면서 직전 세션 intent가 `web_search`이고, DecisionEngine이 현재 발화를 `UNKNOWN`으로 분류한 경우, intent를 `WEB_SEARCH`로 보정하고 웹 검색용 스킬 시퀀스를 재구성하도록 수정. + - 이를 통해 `"어떤 회사를 말씀하시나요?"`에 대한 답변으로 `aidol_company`처럼 단일 엔티티만 입력된 경우에도, 일반 LLM 대화가 아니라 웹 검색 플로우로 다시 연결되도록 보장. +- `rb8001/app/router/router.py:286-323`: Clarify 응답인 경우 원본 메시지(`message`)를 엔티티로 사용하여 `검색어`/`엔티티` 슬롯을 채우는 기존 로직과 결합해, "원래 질문 + 새 엔티티" 조합 검색이 안정적으로 동작하도록 정렬. ## 교훈 @@ -68,4 +60,3 @@ ### 원칙 - `DOCS/book/300_architecture/database/tables.md:162-170`에 정의된 동적 의도 레지스트리 설계 원칙(제로샷 의도 분류, DB 기반 업데이트, 재시작 없는 반영)을 실제 rb8001 의도 엔진 운영에도 일관되게 적용해야 함. - 트래픽에서 관찰된 실제 사용자 발화는 DecisionEngine 정규식 패턴뿐 아니라 SemanticIntentClassifier 프로토타입과 임계값 설계에까지 반영하여, UNKNOWN을 줄이고 웹 검색/업무 스킬로 자연스럽게 이어지는 경로를 유지해야 함. -