LLM 기반 소설 교정기
AI가 문장을 실시간으로 교정하고, 사용자의 문체를 학습하는 소설 교열 플랫폼

프로젝트 소개
Google Gemini API와 Fine-tuned Gemma 모델을 활용한 AI 소설 교정 플랫폼입니다. 단순 맞춤법 검사를 넘어, 사용자의 문체를 학습하고 창작 스타일에 맞는 교열을 제공합니다.
개요
- 기간: 2025.03 ~ 2025.06 (3개월)
- 팀 구성: 4명 (풀스택, AI 서버, 결제/프론트, DB/디자인)
- 담당: 풀스택 개발 및 시스템 아키텍처 설계
시스템 아키텍처
- Frontend: Next.js App Router + Zustand + TanStack Query
- Backend: NestJS + Redis (큐/Pub/Sub) + PostgreSQL + Prisma
- AI Server: Flask + Fine-tuned Gemma (Unsloth VRAM 60% 절감)
- Infra: Nginx 리버스 프록시 + PM2 무중단 배포
주요 기능
실시간 AI 교정

SSE 기반 실시간 스트리밍으로 AI가 교정하는 과정을 토큰 단위로 확인할 수 있습니다. 불완전한 JSON 응답을 정규식 기반으로 복원하는 알고리즘을 구현하여 스트리밍 중에도 안정적인 렌더링을 보장합니다.
선택적 교정 적용

교정 결과를 전체 일괄 적용이 아닌, 부분별로 개별 반영할 수 있습니다. 적용 전 실시간 미리보기로 변경 사항을 확인하고, 작가의 의도를 유지하면서 필요한 부분만 선택적으로 수정합니다.
개인화 문체 학습 (Pro 모드)
Fine-tuned Gemma 모델이 사용자별 문체 패턴을 학습하여 맞춤형 교정을 제공합니다. Unsloth를 활용해 VRAM을 60% 절감하면서도 학습 품질을 유지했습니다.
작업 큐 시스템
Redis 기반 작업 큐(List + Set + Pub/Sub)로 사용자당 최대 3개 작업을 동시 처리합니다. 서버 재시작 시 미완료 작업을 자동으로 ERROR 처리하는 상태 복구 로직을 구현했습니다.
기술적 도전
SSE 스트리밍 + JSON 복원
AI 응답이 토큰 단위로 스트리밍되면서 JSON이 불완전한 상태로 전달되는 문제가 있었습니다. 정규식 기반 JSON 복원 알고리즘을 설계하여, 중간 상태의 응답도 안전하게 파싱하고 일관된 UI 렌더링을 구현했습니다.
Redis 큐 설계
다중 사용자의 동시 교정 요청을 안정적으로 처리하기 위해 Redis의 List, Set, Pub/Sub를 조합한 큐 시스템을 설계했습니다. 작업 제한, 순차 처리, 실시간 상태 모니터링을 하나의 구조로 통합했습니다.