docs: IR Deck 템플릿 문장 문제 해결 문서 추가
- LLM JSON 파싱 개선 (정규식 기반 추출) - 템플릿 문장 명시 ([템플릿] 접두사) - TDD 방식으로 구현 및 검증 완료
This commit is contained in:
parent
d2635bfeab
commit
deb0148632
@ -0,0 +1,67 @@
|
||||
# IR Deck 평가 템플릿 문장 문제 해결
|
||||
|
||||
**날짜**: 2025-12-01
|
||||
**작성자**: Auto
|
||||
**태그**: `#ir-deck #llm #json-parsing #template-sentence #rb8001`
|
||||
|
||||
## 관련 문서
|
||||
- [IR Deck 배치 테스트 문제점 분석](./251128_ir_deck_batch_test_issues.md) - 이전 문제 분석
|
||||
|
||||
## 문제 상황
|
||||
|
||||
**증상**:
|
||||
- IR Deck 평가 결과에 반복적인 템플릿 문장 표시
|
||||
- 예: "시장 기회 (Market Opportunity) 설명 부족", "좋은 비전 (Vision) 설명"
|
||||
|
||||
**원인**:
|
||||
1. LLM이 JSON 형식으로 응답하지만 인사말이나 설명 텍스트 포함
|
||||
2. JSON 파싱 실패 시 Fallback 로직에서 story_scores 기반 템플릿 문장 생성
|
||||
3. 템플릿 문장이 일반 평가처럼 표시되어 혼란 발생
|
||||
|
||||
## 해결 방법
|
||||
|
||||
**위치**: `rb8001/app/services/ir_deck_analyzer.py:325-370`
|
||||
|
||||
### 1. 정규식 기반 JSON 추출
|
||||
|
||||
- LLM 응답에서 JSON 블록만 추출 (인사말 등 불필요한 텍스트 제거)
|
||||
- 여러 JSON 블록이 있을 경우 첫 번째만 추출
|
||||
|
||||
### 2. 템플릿 문장 명시
|
||||
|
||||
- Fallback으로 템플릿 문장 생성 시 `[템플릿]` 접두사 추가
|
||||
- 사용자가 오류임을 명확히 인식 가능
|
||||
|
||||
### 3. 예외 처리 강화
|
||||
|
||||
- 빈 응답, JSON 파싱 실패, 일반 예외 처리
|
||||
|
||||
## 구현 과정 (TDD)
|
||||
|
||||
**테스트**: 13개 케이스 작성 (정상/에러/템플릿 검증)
|
||||
**통과율**: 13/13 (100%)
|
||||
|
||||
**커밋**: 706829c
|
||||
**배포 완료**: 2025-12-01 18:09:46
|
||||
|
||||
## 개선 효과
|
||||
|
||||
**Before**:
|
||||
- LLM 인사말 포함 응답 시 JSON 파싱 실패
|
||||
- 템플릿 문장이 일반 평가처럼 표시
|
||||
|
||||
**After**:
|
||||
- 인사말이 있어도 JSON 블록 추출하여 파싱 성공
|
||||
- 템플릿 문장에 `[템플릿]` 접두사로 명시
|
||||
|
||||
## 남은 이슈
|
||||
|
||||
- LLM이 strengths/weaknesses를 반환하지 않으면 여전히 템플릿 문장 생성
|
||||
- 필요 시 프롬프트 강화 또는 재시도 로직 추가 고려
|
||||
|
||||
## 교훈
|
||||
|
||||
1. **LLM 응답 형식 예측 불가**: 인사말, 설명 등 다양한 형식으로 응답 가능 → 정규식으로 JSON만 추출하는 것이 안전
|
||||
2. **Fallback 처리 명시**: 오류 상황의 결과물은 명시적으로 표시하여 사용자 혼란 방지
|
||||
3. **TDD 효과**: 다양한 시나리오 테스트 작성으로 예외 케이스 사전 발견
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user