🎬 8 LangGraph Agent + 데이터 νŒŒμ΄ν”„λΌμΈ + 4-VM 인프라 + κ²°μ œΒ·λ¦¬μ›Œλ“œ 톡합

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  🐍 Python 3.12  ⚑ FastAPI 0.115  🦜 LangGraph 0.6     β”‚
β”‚  πŸ€– Solar Pro Β· EXAONE 32B Β· Qwen 35B Β· vLLM EXAONE 1.2B β”‚
β”‚  πŸ“Š Qdrant Β· πŸ•ΈοΈ Neo4j Β· πŸ” ES 8.17 Β· ⚑ Redis Β· πŸ’Ύ MySQL β”‚
β”‚  πŸ’³ Toss Payments v2 + AI μΏΌν„° 3-μ†ŒμŠ€ + 6λ“±κΈ‰ 팝콘       β”‚
β”‚  🐳 Docker Β· πŸš€ GitHub Actions Β· ☁️ 카카였 ν΄λΌμš°λ“œ 4-VM  β”‚
β”‚  πŸ“ˆ Prometheus + Grafana + ELK + LangSmith              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

단일 monglepick-agent μ„œλΉ„μŠ€μ— 8개 LangGraph μ—μ΄μ „νŠΈ + 데이터 νŒŒμ΄ν”„λΌμΈ + 인프라 + κ²°μ œΒ·λ¦¬μ›Œλ“œ μ •ν•©μ„± λͺ¨λ‘ 단독 섀계/κ΅¬ν˜„. Β· μžμ—°μ–΄ β†’ μ˜λ„/감정/μ„ ν˜Έ β†’ RRF ν•˜μ΄λΈŒλ¦¬λ“œ RAG β†’ CF+CBF μΆ”μ²œ β†’ 5편 μΉ΄λ“œ SSE 슀트리밍 Β· TMDB 1.17M 건 β†’ 50MB λ©”λͺ¨λ¦¬ 슀트리밍 적재 + 카카였 4-VM + 11 GHA μ›Œν¬ν”Œλ‘œμš° Β· 79 admin tools / 9 support tools ReAct + ν™˜κ° κ°€λ“œ 4쀑 + check/consume 뢄리


1. πŸ“Œ ν”„λ‘œμ νŠΈ 정보 Β· 핡심 μ„±κ³Ό

ν•­λͺ© λ‚΄μš©
이름 Monglepick AI Agent
κΈ°κ°„ 2026.01 ~ μ§„ν–‰ 쀑
본인 μ—­ν•  AI Agent 전체 + 데이터 νŒŒμ΄ν”„λΌμΈ + 인프라 + 결제 μ»¨νŠΈλž™νŠΈ 단독
GitHub monglepick/agent
운영 URL https://monglepick.garabu.org/api/v1/chat (SSE)
ν…ŒμŠ€νŠΈ 1,234 PASS / 11 skip

πŸ† μ •λŸ‰ μ„±κ³Ό β€” Before / 발견 / 쑰치 / After 4-컬럼

각 μ§€ν‘œκ°€ μ–΄λ–€ λ©”νŠΈλ¦­/μž₯μ• λ‘œ 발견됐고 μ–΄λ–€ 쑰치둜 λ§Œλ“€μ–΄μ§„ 결과인지 4λ‹¨κ³„λ‘œ 풀이.

μ˜μ—­ Before 발견 (λ©”νŠΈλ¦­/μž₯μ• ) 쑰치 After
λ©”λͺ¨λ¦¬ 50 GB+ 5번 OOM (Day 1Β·3Β·7Β·10Β·14) β€” /usr/bin/time -v μΈ‘μ • 청크 (2,000건) + 체크포인트 + retry_queue 뢄리 50 MB (1,000λ°°)
적재 ν†΅κ³Όμœ¨ β€” TMDB 39 ν•„λ“œ 쀑 overview/genres NULL μΌ€μ΄μŠ€ 4.3% μ •κ·œν™” ν†΅κ³Όμœ¨ κ°€λ“œ + KMDbΒ·KOBIS ν•œκ΅­ μ˜ν™” 보강 95.7% (1,120,000건)
LLM Cold Start 10초+ Ollama 첫 μš”μ²­ GPU λ©”λͺ¨λ¦¬ lazy λ‘œλ“œ FastAPI lifespan 사전 warmup (병렬) + OLLAMA_MAX_LOADED_MODELS=2 μ¦‰μ‹œ
GPU OOM λ°œμƒ nvidia-smi 95% 점유 + EXAONE/Qwen swap-in/out λͺ¨λΈλ³„ Semaphore(1) + κΈ€λ‘œλ²Œ MAX_CONCURRENT=3 0건 (4κ°œμ›”)
LLM 호좜 (μ˜λ„+감정) 2회 LangSmith 뢄석 β€” 같은 λ°œν™”μ— 두 번 호좜 Solar Pro JSON Schema 단일 호좜 톡합 1회 (50%↓ 토큰)
응닡 P50 5.2s LangSmith λ…Έλ“œλ³„ latency β€” Solar 단일 호좜 1.3s μ˜λ„+감정 톡합 + λ…Έλ“œλ³„ LLM λΌμš°νŒ… 2.8s (46%↓)
응닡 P95 18s RAG source ν•œ κ³³ timeout μ‹œ long-tail per-source 5s + 전체 25s timeout + safe_search wrapper 8.5s (53%↓)
Admin Tool 토큰 8K 79 tool description 톡째 λ…ΈμΆœ β†’ LLM attention λΆ„μ‚° 3단계 RAG (Role+Intent β†’ ν‚€μ›Œλ“œ νœ΄λ¦¬μŠ€ν‹± β†’ Top-5 LLM) 1.2K (85%↓)
Tool 선택 정확도 88% 운영 trace 뢄석 β€” 잘λͺ»λœ tool 12% Top-5 RAG + finish_task 가상 tool 98.8% (였λ₯˜ 90%↓)
Support ν™˜κ° (μ„œλΉ„μŠ€λͺ…) λ°œμƒ (5%) μ‚¬μš©μž μ‹ κ³  1건 β€” β€œλͺ½λΈ”λž‘μ€ ___” 4쀑 κ°€λ“œ (capability force + ν‚€μ›Œλ“œ 14μ’… + μ •κ·œν™” + ν”„λ‘¬ν”„νŠΈ μ˜ˆμ‹œ) 0건 (4κ°œμ›”)
AI μΏΌν„° μ •ν•©μ„± 차감됨 μ‚¬μš©μž μ‹ κ³  β€” β€œμ‘λ‹΅ μ‹€νŒ¨μΈλ° 포인트 빠짐” check (read-only) + consume (PESSIMISTIC_WRITE + Idempotency) 2-Phase 뢄리 0건 (μ‚¬μš©μž μ‹ κ³  0)
운영 νšŒκ·€ 평균 ν”½μŠ€ 4μ‹œκ°„ Phase 5 κΉŒμ§€ grep 으둜 λ…Έλ“œλ³„ 둜그 좔적 LangSmith run_id 기반 진단 ν‘œμ€€ν™” (5λΆ„) 2μ‹œκ°„ (50%↓)

2. πŸ—“οΈ Phase 0~9 μ§„ν–‰ 이λ ₯

Phase κΈ°κ°„ 핡심 과제 κ²°κ³Ό
Phase 0 2026.01 ν”„λ‘œμ νŠΈ μ…‹μ—… + 5 μ„œλΉ„μŠ€ 골격 FastAPI Β· LangGraph 0.6 Β· Spring Boot 3 Β· React 19 Β· Recommend FastAPI
Phase 1 2026.01-02 데이터 νŒŒμ΄ν”„λΌμΈ (TMDB Daily Export 1.17M) 95.7% ν†΅κ³Όμœ¨ Β· 50MB 슀트리밍
Phase 2 2026.02 Chat Agent 1μ°¨ (10λ…Έλ“œ) μ˜λ„/감정 λΆ„λ₯˜ + 단일 DB RAG
Phase 3 2026.02-03 RRF ν•˜μ΄λΈŒλ¦¬λ“œ 검색 (Qdrant + ES + Neo4j) RRF k=60 + 4단계 fallback
Phase 4 2026.03 Chat Agent 2μ°¨ (14λ…Έλ“œ) + μΆ”μ²œ μ—”μ§„ (CF+CBF) MMR Ξ»=0.7 + 슬둯 quota
Phase 5 2026.03-04 Match Agent (λ‘˜μ΄μ˜ν™”κ³ λ₯΄κΈ°) + Roadmap + Content Analysis Vector Centroid + harmonic mean
Phase 6 2026.04 κ΄€λ¦¬μž AI μ–΄μ‹œμŠ€ν„΄νŠΈ v1β†’v2β†’v3 79 tools ReAct + 11λ…Έλ“œ
Phase 7 2026.04 고객센터 챗봇 v1β†’v2β†’v3β†’v4 9λ…Έλ“œ ReAct + ν™˜κ° κ°€λ“œ 4쀑
Phase 8 2026.04 카카였 4-VM 운영 배포 + GHA 11 μ›Œν¬ν”Œλ‘œμš° μžλ™ 배포 μ•ˆμ •ν™”
Phase 9 2026.04 Quiz Generation + 결제 μ»¨νŠΈλž™νŠΈ (check/consume 뢄리) 47 PASS Β· λ©±λ“± INSERT

λ―Έμ™„: λ‹€κ΅­μ–΄ 검색 ML-4 Β· λͺ½κΈ€μ΄ LoRA Β· 도μž₯κΉ¨κΈ° 리뷰 검증 Β· @PreAuthorize κ°•μ œ Β· 고객센터 v4 Phase 2.5


3. πŸ› οΈ 기술 μŠ€νƒ

핡심 ν”„λ ˆμž„μ›Œν¬

μΉ΄ν…Œκ³ λ¦¬ 기술 버전 선택 이유
μ–Έμ–΄ Python 3.12 typing + async/await + LLM μƒνƒœκ³„
μ›Ή FastAPI 0.115 async + μžλ™ OpenAPI + Pydantic
μ—μ΄μ „νŠΈ LangGraph 0.6 StateGraph + checkpointer
μŠ€ν‚€λ§ˆ Pydantic 2.x LangGraph State νƒ€μž… μ•ˆμ •μ„±
HTTP httpx latest async + Connection Pool + http2
νŒ¨ν‚€μ§€ uv latest pip λŒ€λΉ„ 10λ°°+ 빠름
ν…ŒμŠ€νŠΈ pytest + pytest-asyncio latest async ν…ŒμŠ€νŠΈ + Mock
μ˜μ‘΄μ„± 관리 pyproject.toml + uv.lock latest reproducible build

LLM 4μ’… ν•˜μ΄λΈŒλ¦¬λ“œ 운영 λͺ¨λΈ

LLM 운영 μš©λ„ ν•œκ΅­μ–΄ P50 λΉ„μš©
Upstage Solar Pro Cloud API μ˜λ„/감정 λΆ„λ₯˜ Β· μ„ ν˜Έ μΆ”μΆœ Β· μ •μ±… RAG Β· μΆ”μ²œ 이유 β—Ž 1.3s API 과금
EXAONE 4.0 32B Ollama (Apple Silicon Metal) μžμ—°μ–΄ 응닡 β—Ž 4.5s self-hosted
Qwen 3.5 35B (a3b) Ollama 닀쀑 λΆ„λ₯˜ + VLM β—‹ 3.8s self-hosted
EXAONE 4.0 1.2B (λͺ½κΈ€μ΄) vLLM Tesla T4 :18000/18001 캐릭터 챗봇 β—Ž 0.8s self-hosted
Upstage Solar Embedding Cloud API 4096차원 β—Ž 0.4s/건 API 과금

LLM λΌμš°νŒ… μ •μ±… β€” λ…Έλ“œλ³„ 졜적 LLM 선택