AI 플래시카드: NestJs (기초) 및 Gemini (무료)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
JavaScript 및 NestJS 백엔드 개발자, AI 모델과 연동한 애플리케이션 개발을 원하는 개발자
핵심 요약
- NestJS 백엔드와 OpenRouter를 활용한 AI 사전 앱 구현 예시 제공
- Gemini 2.0 모델(
google/gemma-3-27b-it:free
)을 사용한 API 인터페이스 설계 @nestjs/config
,class-validator
등 필수 라이브러리를 통한 환경 변수 관리 구현- OpenRouterService와 PhraseService를 통한 AI 모델 호출 및 결과 포맷팅 로직 구현
섹션별 세부 요약
1. 프로젝트 구조 및 의존성 설치
nest new ai-dictionary-backend
명령어로 프로젝트 생성axios
,dotenv
,class-validator
등 AI API 연동에 필요한 라이브러리 설치.env
파일에서OPENROUTER_API_KEY
,DEFAULT_MODEL
등 환경 변수 설정
2. OpenRouterService 구현
OpenAI
클라이언트를 이용한 Gemini 모델 호출 로직systemPrompt
상수를 통한 시스템 프롬프트 정의getExplanation()
메서드에서chat.completions.create()
API 사용baseURL
,apiKey
등 환경 변수 동적 주입
3. PhraseController 및 PhraseService
PhraseController
에서/phrase/explain
엔드포인트 정의PhraseService
에서OpenRouterService
호출 및 결과 포맷팅FlashcardFormatterService
를 통한 플래시카드 형식 변환
4. AppModule 및 실행
ConfigModule.forRoot()
를 통한 환경 변수 전역 설정npm run start:dev
명령어로 애플리케이션 실행curl
명령어로/phrase/explain
엔드포인트 테스트
5. 개선사항 및 향후 계획
- MongoDB 캐싱 추가로 성능 향상
- 이전 설명 결과 재사용을 위한 저장 로직 구현
- 벡터 검색 도입으로 의미 기반 검색 지원
- 사용자/IP 기반 속도 제한 설정
결론
- Gemini 모델 연동 시
google/gemma-3-27b-it:free
모델명 명시 @nestjs/config
를 활용한 환경 변수 관리가 필수적- 캐싱 및 레이트 제한을 통한 확장성 고려가 실무 적용 시 필수
OpenRouterService
와PhraseService
의 분리가 모듈화 및 유지보수를 용이하게 함