LLM을 실무에 적용하는 아키텍처 패턴과 운영 전략
1. API 활용 기초
1.1 주요 API
| Provider | API | 특징 |
|---|
| OpenAI | Chat Completions API | 가장 넓은 생태계 |
| Anthropic | Messages API | Claude, 긴 컨텍스트, 안전성 |
| Google | Gemini API | 멀티모달, 긴 컨텍스트 |
| 오픈소스 | vLLM, Ollama | 자체 호스팅, 프라이버시 |
1.2 비용 최적화
| 전략 | 설명 |
|---|
| 캐싱 | 동일 질문에 대한 응답을 캐시 (Redis, Semantic Cache) |
| 모델 라우팅 | 간단한 질문은 작은 모델, 복잡한 질문은 큰 모델 |
| 프롬프트 최적화 | 불필요한 컨텍스트 제거, 토큰 절약 |
| 배치 처리 | 여러 요청을 묶어 처리 (Batch API) |
| 스트리밍 | 체감 지연 감소 (실제 비용은 동일) |
2. LLM 앱 아키텍처 패턴
| 패턴 | 구조 | 적합한 경우 |
|---|
| 단순 Q&A | 사용자 → LLM → 답변 | 챗봇, FAQ |
| RAG | 사용자 → 검색 → LLM → 답변 | 문서 기반 Q&A |
| Agent | 사용자 → LLM → 도구 → LLM → 답변 | 복합 태스크 |
| 파이프라인 | 입력 → LLM₁(분류) → LLM₂(처리) → 출력 | 복잡한 워크플로우 |
| Map-Reduce | 긴 문서 분할 → 각각 처리 → 결합 | 긴 문서 요약 |
3. 가드레일과 모니터링
3.1 가드레일
| 레이어 | 적용 | 방법 |
|---|
| 입력 필터 | 사용자 입력 검증 | 키워드 필터, 분류 모델, 토큰 제한 |
| 시스템 프롬프트 | LLM 행동 규칙 정의 | 역할, 제약, 금지 사항 |
| 출력 필터 | LLM 출력 검증 | PII 마스킹, 유해성 분류, 포맷 검증 |
| 구조 검증 | JSON 등 구조 확인 | 스키마 검증 (Pydantic) |
3.2 모니터링
| 메트릭 | 측정 대상 |
|---|
| 지연(Latency) | TTFT(첫 토큰), 전체 응답 시간 |
| 비용 | 입력/출력 토큰 수, 일별/월별 비용 |
| 품질 | 사용자 피드백, LLM-as-Judge 점수 |
| 오류율 | API 오류, 포맷 오류, 거부율 |
4. 평가 방법
| 방법 | 설명 | 적합 |
|---|
| Human Eval | 사람이 직접 평가 | 소규모, 최종 판단 |
| LLM-as-Judge | 다른 LLM이 출력을 평가 | ✅ 대규모, 자동화 |
| 벤치마크 | MMLU, HumanEval 등 표준 테스트 | 모델 비교 |
| A/B 테스트 | 프로덕션에서 두 버전 비교 | 프로덕션 최적화 |
5. 모델 선택 기준
| 기준 | 설명 |
|---|
| 성능 | 태스크별 벤치마크, 실제 테스트 결과 |
| 비용 | 입력/출력 토큰 단가, 월 예상 비용 |
| 지연 | TTFT, TPS (Tokens Per Second) |
| 컨텍스트 윈도우 | 긴 문서 처리 필요 여부 |
| 프라이버시 | 데이터가 외부로 나가도 되는가 |
| 커스터마이즈 | 파인튜닝 필요 여부 |
다음 글
→ 이미지 생성 — Diffusion 모델
📝 참고 자료