plans: 의도 런타임 하이브리드(251023) 계획 보강 - 작업순서, Thompson 단계, 코드위치, 완료조건, 롤백
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
a12b85cb1d
commit
aaf412cde4
@ -1,43 +1,106 @@
|
||||
# 의도 런타임 하이브리드 설계
|
||||
|
||||
**날짜**: 2025-10-23
|
||||
**목표**: 임베딩 + 베이지안 + 동적학습 통합 의도 파악 시스템
|
||||
**상태**: Phase 1 완료, Phase 2 부분 완료
|
||||
**날짜**: 2025-10-23 (251017 통합)
|
||||
**목표**: FastPath + 임베딩 Top-K + LLM 재분석 + Beta(α,β) 동적 임계치 하이브리드
|
||||
**상태**: Phase 1·2 완료, Phase 3 부분 완료
|
||||
|
||||
---
|
||||
|
||||
## 목표
|
||||
## Phase 1: 3단계 아키텍처 (✅ 완료)
|
||||
|
||||
FastPath + 임베딩 Top-K + LLM 재분석 + Beta(α,β) 동적 임계치 하이브리드 시스템
|
||||
→ 상세: `troubleshooting/251126_happybell80_rb8001_의도_3단계_아키텍처_도입_및_배포.md`
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: 하이브리드 파이프라인 (✅ 완료)
|
||||
## Phase 2: 하이브리드 파이프라인 (✅ 완료)
|
||||
|
||||
→ 상세: `troubleshooting/251126_intent_3step_db_bayesian_integration.md`
|
||||
|
||||
**구현 완료**:
|
||||
- `rb8001/app/services/brain/intent_graph.py`: FastPath + SemanticIntentClassifier + LLM 재분석 파이프라인
|
||||
- `rb8001/app/services/brain/semantic_classifier.py`: intent_prototypes 테이블 활용, 임베딩 유사도로 Top-K 후보 선택
|
||||
- `rb8001/app/services/llm/intent_parser.py`: LLM JSON 파서
|
||||
|
||||
---
|
||||
|
||||
## 남은 작업
|
||||
## Phase 3: 베이지안 동적 학습 (부분 완료)
|
||||
|
||||
### Phase 2: 베이지안 동적 학습 (부분 완료)
|
||||
→ 완료: `intent_path_stats` (Beta α,β 추적), `decision_logs` (의도 결정 로깅), ActionPlanner 경로별 성공률 조회
|
||||
|
||||
**완료**:
|
||||
- `intent_path_stats` 테이블 사용 중 (Beta(α,β) 추적)
|
||||
- ActionPlanner에서 경로별 성공률 조회 구현
|
||||
### 작업 순서 (권장)
|
||||
|
||||
**미구현**:
|
||||
- `intent_decision_log` 테이블 생성 및 로깅
|
||||
- Thompson Sampling으로 임계치 τ 동적 최적화
|
||||
1. **2번(DB 접근)** 선행 → ActionPlanner가 `intent_store` 경유하도록 정리 후, 1번(Thompson)에서 동일 저장소 사용.
|
||||
2. **1번(Thompson)** → **4번(테스트)** 순. τ 동적 적용 후 eval로 검증.
|
||||
3. **3번(LLM 문서화)·5번(프롬프트)·6번(LangGraph)** 서로 독립, 병렬 진행 가능.
|
||||
|
||||
### 관련 코드 위치 (rb8001)
|
||||
|
||||
| 역할 | 경로 |
|
||||
|------|------|
|
||||
| 분기·임계치 사용 | `app/services/brain/intent_graph.py` (fastpath 0.9, low_conf 0.7, result 0.5) |
|
||||
| 경로별 α,β 조회 | `app/services/brain/intent_store.py` (`load_path_stats_params`, `load_path_stats_means`) |
|
||||
| ActionPlanner DB 직접 연결 | `app/services/brain/intent/action_planner.py` (psycopg2, path=`action_planner` 쿼리) |
|
||||
| Beta 갱신·decision 로깅 | `app/state/intent_runtime_repository.py` |
|
||||
|
||||
### 남은 작업
|
||||
|
||||
#### 1. Thompson Sampling τ 동적 최적화
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| **대상** | FastPath/Semantic/LLM 분기 임계치 τ (현재 0.9, 0.7, 0.5 하드코딩) |
|
||||
| **입력** | `intent_store.load_path_stats_params(intent_name)` → path별 (α, β) |
|
||||
| **출력** | 경로별 τ 또는 경로 선택 확률 (intent_graph에서 사용) |
|
||||
| **알고리즘** | (1) intent별 path별 Beta(α,β)에서 θ 샘플 (2) argmax θ로 경로 선택 또는 τ = percentile로 계산 (3) `intent_graph.py`에서 해당 τ 적용 |
|
||||
| **위치** | `intent_store`에 `get_thompson_tau(intent_name)` 추가 또는 `intent_graph` 내부 함수 |
|
||||
| **롤백** | 환경변수 `INTENT_USE_DYNAMIC_TAU=0`이면 기존 하드코딩 τ 사용 |
|
||||
| **검증** | `scripts/` 또는 `tests/` eval로 τ 변경 시 정확도/지연 비교 |
|
||||
| **완료 조건** | intent_graph가 DB 기반 τ(또는 경로 확률)를 사용하고, eval 스크립트로 비교 결과 문서화 |
|
||||
|
||||
#### 2. DB 접근 원칙 준수 (311)
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| **현재** | ActionPlanner가 psycopg2 직접 연결, `path='action_planner'` 쿼리 (intent_path_stats path는 fastpath/semantic/llm/clarify) |
|
||||
| **필수** | ActionPlanner에서 `intent_store.load_path_stats_params(intent_name)` 또는 `intent_store.load_path_stats_means(intent_name)` 호출로 전환, psycopg2 제거 |
|
||||
| **완료 조건** | `action_planner.py`에 psycopg2 및 직접 SQL 없음, intent_store만 사용 |
|
||||
|
||||
#### 3. LLM 호출 최적화 (311 섹션 14)
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| **필수** | FastPath→Semantic→LLM 경로별 호출 횟수 계산 및 DOCS에 문서화 |
|
||||
| **확인** | API 할당량(RPM/RPD) 대비 호출량 검토 |
|
||||
| **완료 조건** | 경로별 호출 수·할당량 대비 비율이 troubleshooting 또는 plans 하위 문서에 기록됨 |
|
||||
|
||||
#### 4. 테스트 보강 (315)
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| **시나리오 3·4** | 복합 의도·맥락 기반 의도 처리 개선 후 `test_intent_3step_scenarios` 보강 |
|
||||
| **Thompson** | τ 동적 적용 시 eval 스크립트 또는 pytest로 검증 |
|
||||
| **완료 조건** | 시나리오 3·4 테스트 케이스 추가 및 Thompson τ 변경 시 비교 검증 스크립트/테스트 존재 |
|
||||
|
||||
#### 5. 의도 분류 프롬프트 (313)
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| **대상** | 의도 분류 LLM 호출 (intent_analyzer 또는 intent_parser 쪽 프롬프트) |
|
||||
| **필수** | 출력 형식, 퓨샷 예시, 구조화 검증을 313 원칙에 맞게 정리 |
|
||||
| **참조** | `book/300_architecture/313_Gemini_프롬프트_설계_원칙.md` |
|
||||
| **완료 조건** | 프롬프트가 313 체크리스트(형식·예시·검증)를 충족하고 문서에 반영됨 |
|
||||
|
||||
#### 6. LangGraph 검토 (311 섹션 5)
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| **311 원칙** | 의도 분류 등 다단계 워크플로우는 LangGraph 활용 권장 |
|
||||
| **현재** | `intent_graph.py` 일반 함수 파이프라인 |
|
||||
| **선택** | 체크포인트·재개·분기 복잡도 증가 시 LangGraph 전환 여부를 311에 맞게 결정하고 계획에 기록 |
|
||||
| **완료 조건** | 전환 시도 시 troubleshooting에 결정 근거·변경 범위 기록; 미전환 시 이유를 본 계획 또는 ideas에 한 줄 기록 |
|
||||
|
||||
---
|
||||
|
||||
## 참고
|
||||
|
||||
- `troubleshooting/251126_happybell80_rb8001_의도_3단계_아키텍처_도입_및_배포.md`
|
||||
- `troubleshooting/251126_intent_3step_db_bayesian_integration.md`
|
||||
- `plans/251017_intent_analysis_improvement_plan.md`
|
||||
- `plans/archive/251017_intent_analysis_improvement_plan.md` (251023으로 통합됨)
|
||||
- `book/300_architecture/311_백엔드_구조_원칙.md`
|
||||
- `book/300_architecture/313_Gemini_프롬프트_설계_원칙.md`
|
||||
- `book/300_architecture/315_테스트_작성_원칙.md`
|
||||
|
||||
@ -80,10 +80,10 @@
|
||||
- **남은 작업**: Phase 1.5 (베이지안 학습), Phase 2-3 (Neo4j 기억 시스템, 감정-기억-윤리)
|
||||
- **참고**: `plans/251016_ontology_coldmail_implementation.md`
|
||||
|
||||
### 4. 의도 분석 개선 (251017)
|
||||
- **완료**: 3단계 아키텍처 (IntentAnalyzer, ActionPlanner, SkillSelector)
|
||||
- **남은 작업**: 하이브리드 시스템 (FastPath + 임베딩 + LLM)
|
||||
- **참고**: `plans/251017_intent_analysis_improvement_plan.md`
|
||||
### 4. 의도 런타임 하이브리드 (251023)
|
||||
- **완료**: Phase 1 3단계 아키텍처, Phase 2 하이브리드 파이프라인
|
||||
- **남은 작업**: Phase 3 Thompson τ 동적 최적화, DB 접근 원칙, 테스트 보강
|
||||
- **참고**: `plans/251023_happybell80_의도_런타임_하이브리드_임베딩_베이지안_동적학습.md`
|
||||
|
||||
---
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user