피드로 돌아가기
Dev.toBackend
원문 읽기
22초에서 2초로, LLM 모델 이원화와 SSE 스트리밍 최적화 기록
Building a Chatbot API From Scratch — Part 2: Streaming, Prompt Engineering and Docker
AI 요약
Context
단순 기능 구현 단계의 Chatbot API가 가진 사용자 경험 한계. 응답 완료 시까지 대기하는 Blocking 방식의 인터페이스 구조. 로컬 환경 외 배포 및 운영을 위한 컨테이너화 전략 부재.
Technical Solution
asyncio.create_task를 활용한 대화 제목 자동 생성 백그라운드 작업 분리- 고비용 Reasoning 모델 대신 저비용 Utility 모델(
gpt-5-nano)을 전담 배치한 모델 이원화 설계 - Server-Sent Events(SSE) 기반의 Async Generator 구현으로 실시간 토큰 스트리밍 응답 체계 구축
stream_options의include_usage설정을 통한tiktoken의존성 제거 및 토큰 사용량 추적 방식 개선uv sync --frozen옵션 기반의 최소화된 Docker 이미지 빌드 및service_healthy조건의 DB 의존성 제어- 화이트리스트 방식의
.dockerignore설정을 통한 프롬프트 라이브러리 누락 방지 및 무결성 확보
Impact
- 대화 제목 생성 Latency: 22s $\rightarrow$ 2s 미만으로 단축
- 모델 업데이트(
gpt-5.4-mini등) 후 처리 속도 3배 향상 gpt-5-miniLatency: 4527ms $\rightarrow$gpt-5.4-miniLatency: 1418ms
Key Takeaway
단일 모델에 모든 태스크를 할당하기보다 작업의 복잡도에 따라 Utility 모델과 Main 모델을 분리하는 것이 비용과 성능 최적화의 핵심임.
실천 포인트
Async Generator 기반의 스트리밍 구현 시, HTTP Response 기반의 기존 Exception Decorator 사용을 지양하고 내부 Inline 에러 핸들링을 적용할 것