Skip to content

Latest commit

 

History

History
106 lines (83 loc) · 5.55 KB

README.md

File metadata and controls

106 lines (83 loc) · 5.55 KB

EconoEasy

EconoEasy 이미지1

경제 초보자들을 위한 LLM 기반 경제 학습 플랫폼

Google Gemini LLM을 활용해 경제 기사를 난이도별로 요약하고, 핵심 경제 용어 해설·퀴즈·학습 영상 추천을 제공합니다.


📌 핵심 기능

기능 설명
📰 난이도별 3단계 요약 기사를 Easy(초등학생) / Medium(일반인) / Advanced(전문가) 수준으로 요약
🔑 경제 용어 추출 · 설명 기사 속 핵심 경제 용어를 추출하고, 선택한 용어를 쉽게 풀어 설명
📈 관련 종목 매칭 기사에 등장하는 상장 종목을 찾아 종목코드·시장·업종 정보 제공
📝 퀴즈 생성 키워드 또는 기사 기반 객관식 퀴즈 생성 (생성 결과 저장 후 재사용)
🎬 YouTube 영상 추천 키워드 관련 교육 영상을 검색하고, 댓글을 AI로 분석해 신뢰도 높은 영상 추천

🛠 기술 스택

분류 기술
Language Python 3.12
Framework FastAPI, Uvicorn, Pydantic
AI / LLM Google Gemini 2.5 Flash, LangChain
Database MongoDB 7 (Motor 비동기 드라이버)
Message Queue Redis 7 (Redis Streams)
External API YouTube Data API v3
Infra Docker, Docker Compose

🏗 시스템 아키텍처

          ┌──────────────────────────┐
          │   Client / Backend 서버   │
          └────┬───────────────┬─────┘
       HTTP 요청 │               │ 작업 발행 (XADD)
               ▼               ▼
   ┌──────────────────┐  ┌──────────────────────────────┐
   │  FastAPI 서버     │  │        Redis Streams         │
   │  /summarize      │  │  article-stream              │
   │  /keyword        │  │  youtube-recommend-stream    │
   │  /quiz           │  │  *-result-stream (결과 반환)  │
   │  /recommend      │  └──────┬──────────────▲────────┘
   └────────┬─────────┘         │ XREADGROUP   │ XADD
            │                   ▼              │
            │      ┌──────────────────────────────────┐
            │      │       백그라운드 워커 (3개)         │
            │      │  Article Worker   : 기사 요약       │
            │      │  Keyword Worker   : 용어 추출       │
            │      │  Recommend Worker : 영상 추천       │
            │      └────────┬─────────────────┬───────┘
            ▼               ▼                 ▼
   ┌─────────────────────────────┐   ┌──────────────────────┐
   │ MongoDB                     │   │ Google Gemini API    │
   │ articles / summarized_      │   │ YouTube Data API v3  │
   │ articles / quizzes          │   └──────────────────────┘
   └─────────────────────────────┘
  • 동기 처리: 용어 설명·퀴즈 등 즉시 응답이 필요한 요청은 FastAPI가 직접 처리
  • 비동기 처리: 기사 요약·키워드 추출·영상 추천처럼 오래 걸리는 작업은 Redis Streams 큐를 통해 워커가 처리 후 결과 저장/발행
  • 워커를 기능별 독립 컨테이너로 분리해 장애 격리 및 개별 확장 가능

⚙️ 주요 기술 구현

📰 난이도별 3단계 요약

  • 기사 발행 시 Redis Streams로 전달받아 워커가 비동기 처리
  • Gemini로 Easy / Medium / Advanced 요약을 한 번에 생성 (JSON 응답 파싱)
  • 결과와 처리 상태를 MongoDB에 저장

🔑 경제 용어 추출 · 설명

  • 요약과 같은 article-stream을 별도 Consumer Group으로 구독해 동시 처리
  • Gemini로 핵심 용어와 설명 추출 → 결과 스트림으로 발행
  • LLM 응답 파싱 실패 시 fallback 응답 반환

📈 관련 종목 매칭

  • 상장 종목 목록(stock_list.json)과 기사 본문 문자열 매칭 (LLM 미사용)
  • 다른 종목명에 포함된 이름은 제외해 오탐 감소 (예: 삼성 ⊂ 삼성전자)

📝 퀴즈 생성

  • 키워드 / 기사 기반 객관식 퀴즈를 Gemini로 생성
  • MongoDB에 저장 후 동일 요청 시 재사용해 LLM 호출 최소화

🎬 YouTube 영상 추천

  • 키워드 + 강의 / 해설 / 튜토리얼 조건으로 교육용 한국어 영상 검색
  • 조회수 1,000회 미만·키워드 불일치 영상 제외, 조회수 0.7 + 좋아요 0.3으로 1차 정렬
  • 댓글 15개를 Gemini로 분석 → 품질 0.4 + 관련성 0.3 + 교육적 가치 0.2 + 정확도 0.1로 최종 순위 산정

👥 담당 역할

GitHub 담당
@mirupio 기사 3단계 요약, 퀴즈 생성, YouTube 영상 추천, FastAPI 서버 구성, Docker 배포
@Walla-B 경제 용어 추출·설명, 관련 종목 매칭