AI 플래시카드: NestJS와 Gemini으로 개발하기
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

AI 플래시카드: NestJs (기초) 및 Gemini (무료)

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

JavaScript 및 NestJS 백엔드 개발자, AI 모델과 연동한 애플리케이션 개발을 원하는 개발자

핵심 요약

  • NestJS 백엔드OpenRouter를 활용한 AI 사전 앱 구현 예시 제공
  • Gemini 2.0 모델(google/gemma-3-27b-it:free)을 사용한 API 인터페이스 설계
  • @nestjs/config, class-validator필수 라이브러리를 통한 환경 변수 관리 구현
  • OpenRouterServicePhraseService를 통한 AI 모델 호출 및 결과 포맷팅 로직 구현

섹션별 세부 요약

1. 프로젝트 구조 및 의존성 설치

  • nest new ai-dictionary-backend 명령어로 프로젝트 생성
  • axios, dotenv, class-validatorAI 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를 활용한 환경 변수 관리가 필수적
  • 캐싱레이트 제한을 통한 확장성 고려가 실무 적용 시 필수
  • OpenRouterServicePhraseService의 분리가 모듈화 및 유지보수를 용이하게 함