피드로 돌아가기
Running LLM Classification After the Response: Next.js after() + OpenRouter at $0.0002 per Call
Dev.toDev.to
Backend

Next.js after() 기반 비동기 파이프라인으로 LLM 비용 $0.0002 및 Zero-latency 구현

Running LLM Classification After the Response: Next.js after() + OpenRouter at $0.0002 per Call

Lovanaut2026년 4월 17일11intermediate

Context

폼 응답의 자동 분류를 위해 LLM 도입이 필요하나, 분류 작업이 사용자 응답 속도에 영향을 주는 Critical Path에 포함되는 구조적 한계 존재. LLM의 불안정성과 높은 지연 시간이 폼 제출이라는 핵심 비즈니스 로직의 가용성을 저해할 위험이 있는 상황.

Technical Solution

  • Next.js 16의 after() API를 활용하여 LLM 호출 로직을 Response Flush 이후로 지연시켜 사용자 체감 지연 시간 제거
  • Dynamic Import를 통해 분류기 모듈을 초기 번들에서 제외함으로써 서버리스 핸들러의 콜드 스타트 최적화 및 메모리 효율 개선
  • AbortController 기반의 10s Timeout 설정과 Retryable Status Code 정의를 통한 외부 API 장애의 시스템 전파 차단
  • Temperature: 0 설정 및 Hard Max Tokens 제한을 통한 LLM 응답의 결정성(Determinism) 확보와 토큰 비용 최소화
  • Request Scope 종료 후 실행되는 after() 특성을 고려하여 필요한 컨텍스트를 사전 캡처하는 클로저 패턴 적용
  • Prompt-level Default Bias를 설정하여 불확실한 결과 발생 시 'Legitimate'로 분류하는 보수적 에러 처리 전략 채택

1. 외부 API 호출 시 AbortController를 통한 강제 타임아웃 설정 여부 확인

2. 비즈니스 핵심 로직과 부가 기능(분류, 로그, 알림)의 실행 시점 분리(Post-response processing)

3. LLM 도입 시 비용 제어를 위한 하드 토큰 제한 및 결정적 파라미터(Temp=0) 적용

4. 서버리스 환경에서 모듈 크기 최적화를 위한 Dynamic Import 검토

원문 읽기