1.8 KiB
1.8 KiB
type, tags, work_date
| type | tags | work_date | ||||||
|---|---|---|---|---|---|---|---|---|
| worklog |
|
2026-03-23 |
260323 의도 분류 LLM-first(v2) 전환
배경
- 기존 의도 분류(v1): 키워드 정규식 FastPath → Naive Bayes → LLM 순차
- 202개 질문 테스트 결과: 키워드 27% 정확도
- 사용자 질문이 키워드에 안 걸리면 UNKNOWN → 일반 LLM 경로로 빠짐
변경
새 의도 분류기: intent_classifier.py
- LLM-first: 키워드 없이 LLM이 바로 의도 판단
- Pydantic 검증:
IntentResult(intent, confidence, slots, reasoning, needs_clarify) - JSON 강제:
response_format={"type": "json_object"} - SKILL_REGISTRY: OpenClaw 스타일 스킬 목록 (트리거 + 예시)
- 키워드 폴백: LLM 실패 시에만 기존 DecisionEngine 사용
스킬 레지스트리 (10개 의도)
| intent | 설명 |
|---|---|
| self_inspect | 시간, 코드 탐색, 드래프트, 대화 이력 |
| companyx_rag | Company X 내부 문서 |
| web_search | 날씨, 주가, 환율, 실시간 정보 |
| calendar_event | 일정 등록 |
| calendar_query | 일정 조회 |
| email_read | 이메일 읽기 |
| email_send | 이메일 발송 |
| news_fetch | 뉴스 |
| greeting | 인사 |
| general_chat | 일반 대화 |
환경변수
INTENT_ENGINE=v2→ LLM-first (현재 활성)INTENT_ENGINE=graph→ 기존 IntentGraph (폴백/롤백)
테스트 결과 (202개 질문)
| 방식 | 정확도 |
|---|---|
| OLD (키워드) | 27% (56/202) |
| NEW (LLM) | 94% (191/202) |
커밋
5f18a9a: intent_classifier.py 신규ac3e617: message_service v2 전환 + INTENT_ENGINE=v2
관련 파일
rb8001/app/services/brain/intent_classifier.pyrb8001/app/services/message_service.pyrb8001/docker-compose.yml