# 의도 분류 경로별 LLM 호출 최적화 (311 섹션 14)

**날짜**: 2026-02-03
**작성자**: happybell80
**관련 파일**: `rb8001/app/services/brain/intent_graph.py`, `intent_langgraph_workflow.py`, `app/services/llm/intent_parser.py`

---

## 경로별 LLM 호출 수 (메시지 1건당)

| 경로 | 조건 | LLM 호출 수 | 비고 |
|------|------|-------------|------|
| **fastpath** | DecisionEngine 규칙/패턴 매칭, conf ≥ τ | **0** | LLM 미호출 |
| **semantic** | 임베딩 Top-K + 신뢰도 ≥ accept | **0** | 임베딩 API만, LLM 미호출 |
| **llm** | fastpath/semantic 미충족 시 | **1** | IntentParserLLM.parse 1회 |
| **LangGraph** | INTENT_USE_LANGGRAPH=true 시 | **0~2** | 짧은 메시지: expand_question 1회 + classify(내부 fastpath/semantic/llm) 0~1 + extract_entities 시 parser.parse 1회 |

- **traditional** (_detect_traditional): 메시지당 **0 또는 1** LLM 호출.
- **LangGraph**: 메시지당 **0** (fastpath/semantic으로 종료) 또는 **1** (expand만) 또는 **2** (expand + parse).

## API 할당량 검토

- Gemini API: RPM(분당 요청), RPD(일당 요청), TPM(분당 토큰) 제한. 초과 시 429.
- 의도 분류는 메시지당 최대 2회 LLM 호출이므로, 동시 사용자 증가 시 RPM/RPD 모니터링 권장.
- 할당량: [Google AI Rate limits](https://ai.google.dev/gemini-api/docs/rate-limits) 참고. 프로젝트별 한도 확인 필수.

## 교훈

- FastPath·Semantic으로 대부분 메시지에서 LLM 호출 0회로 비용 절감. LLM 호출은 불확실한 케이스에만 발생.
- 경로별 호출 수를 문서화해 할당량 계획 및 311 체크리스트 충족.
