Skip to content

maeilej/Upstage_team3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

정치테마주 분석 PIN

English Version

개요

PIN (Political Influence Network)은 정치인, 정책, 산업, 기업 간의 관계를 AI로 분석하고 시각화하는 플랫폼입니다. 정치적 결정과 정책 변화가 특정 산업 분야와 상장 기업에 미치는 영향을 실시간으로 파악할 수 있도록 돕습니다.

핵심 목표:

  • AI를 활용한 정치-경제 영향력 네트워크 분석
  • 근거 기반 관계 매핑 제공
  • 직관적인 그래프 형식으로 복잡한 연결 시각화
  • 영향받는 기업의 실시간 주가 정보 제공

주요 기능:

  • 정치인 및 정책에 대한 자연어 검색
  • 4단계 관계 시각화 (정치인 → 정책 → 산업 → 기업)
  • 출처가 명시된 근거 기반 분석
  • 실시간 주가 정보 연동
  • 반응형 웹 인터페이스

데모

PIN Demo


아키텍처 / 시스템 설계

전체 아키텍처

UPS T3 Architecture

개발자
    ↓
GitHub (Code Push)
    ↓
GitHub Actions (CI/CD)
    ├─ 프론트엔드 빌드 → S3 배포 → CloudFront 무효화
    └─ 백엔드 빌드 → ECR 푸시 → ECS 업데이트

사용자 브라우저
    ↓
CloudFront (CDN + HTTPS)
    ├─ 정적 파일 → S3 버킷
    └─ API 요청 → Application Load Balancer
                          ↓
                      ECS Fargate (AI 엔진)
                          ↓
                      DynamoDB (캐싱)
                          ↓
                외부 API (Upstage, Tavily, Google, Naver)

기술 스택

프론트엔드:

  • Next.js 16 (React 프레임워크)
  • TypeScript
  • Tailwind CSS
  • D3.js (그래프 시각화)

백엔드 (src/ai-engine):

  • FastAPI (Python)
  • LangGraph (멀티 에이전트 오케스트레이션)
  • Upstage Solar-Pro2 (LLM)
  • Tavily API (웹 검색)

인프라:

  • AWS ECS Fargate (컨테이너 오케스트레이션)
  • AWS Application Load Balancer
  • AWS CloudFront (CDN)
  • AWS S3 (정적 호스팅)
  • AWS DynamoDB (캐싱 및 Rate Limiting)
  • AWS ECR (컨테이너 레지스트리)
  • GitHub Actions (CI/CD)

시스템 구성 요소

  1. 프론트엔드 (Next.js)

    • SEO를 위한 서버 사이드 렌더링
    • 클라이언트 사이드 라우팅
    • 인터랙티브 그래프 시각화
    • 실시간 주가 표시
  2. 백엔드 (src/ai-engine - FastAPI + LangGraph)

    • 멀티 에이전트 리서치 시스템
    • 병렬 정보 수집
    • 구조화된 출력 생성
    • 근거 수집 및 검증
  3. 캐싱 레이어 (DynamoDB)

    • 분석 결과 캐시 (24시간 TTL)
    • Rate Limiting (1분 TTL)
  4. 외부 API

    • Upstage Solar-Pro2: 한국어 최적화 LLM
    • Tavily: 실시간 웹 검색
    • Google Search Grounding: Gemini 기반 웹 검색
    • Naver Search: 한국어 뉴스 검색

주요 기능

1. 지능형 검색

  • 자연어 쿼리 처리
  • 정치인 및 정책 이름 인식
  • 컨텍스트 기반 검색 개선

2. 관계 분석

  • 정치인 → 정책: 정치인과 연관된 주요 정책 식별
  • 정책 → 산업: 정책이 영향을 미치는 산업 분야 매핑
  • 산업 → 기업: 산업과 연결된 특정 상장 기업 연결
  • 출처가 명시된 근거 기반 연결

3. 인터랙티브 시각화

  • 4단계 노드 그래프 표시
  • 마우스 오버 시 상세 정보 툴팁
  • 원본 출처로 연결되는 근거 링크
  • 모바일 및 데스크톱 반응형 디자인

4. 실시간 주가 데이터

  • 실시간 주가 정보 연동
  • 가격 변동 지표
  • 기업별 재무 지표

5. 근거 기반 리포팅

  • 모든 관계에 대한 출처 표시
  • 뉴스 기사 인용
  • 투명한 분석 방법론

Upstage 제품 활용

Solar-Pro2 LLM 통합

PIN은 Upstage Solar-Pro2를 핵심 인텔리전스 엔진으로 활용하여 정치-경제 분석을 수행합니다. Solar-Pro2는 한국어에 최적화된 대규모 언어 모델입니다.

주요 활용 사례:

  1. 리서치 질문 생성

    • 사용자 쿼리를 구조화된 리서치 질문으로 변환
    • 의도 분류 (관계 분석 vs. 사실 질문)
    • 환각 방지를 위한 근거 기반 제약 조건 적용
  2. 멀티 에이전트 리서치 오케스트레이션

    • Supervisor Agent: 병렬 리서치 작업 조율
    • Research Agents (3개): 전문화된 조사 수행
      • Agent 1: 정책 분석
      • Agent 2: 산업 영향 평가
      • Agent 3: 기업 식별
  3. 구조화된 출력 생성

    • JSON 형식의 분석 보고서 생성
    • 주요 엔티티 추출 (정치인, 정책, 산업, 기업)
    • 근거를 통한 관계 검증
  4. 근거 종합

    • Tavily API 검색 결과 분석
    • 관련 인용문 및 출처 추출
    • 관련성과 신뢰도에 따른 근거 순위 매김

API 설정:

from langchain_upstage import ChatUpstage

llm = ChatUpstage(
    model="solar-pro",
    api_key=os.getenv("UPSTAGE_API_KEY"),
    temperature=0.1
)

프롬프트 엔지니어링:

  • 환각 방지 제약 조건
  • 근거 요구 사항 강제
  • 구조화된 출력 포맷팅
  • 한국어 최적화

성능 지표:

  • 평균 응답 시간: 30-60초
  • 정확도: 출처 검증을 통한 높은 정밀도
  • 언어 지원: 한국어 (주), 영어 (부)

설치 방법

사전 요구사항

  • Node.js 18+
  • Python 3.9+
  • Docker (배포용)
  • AWS CLI (클라우드 배포용)

로컬 개발 환경 설정

1. 저장소 클론

git clone <repository-url>
cd ups_t3

2. 환경 변수 설정

API 키로 .env 파일 생성:

백엔드 (src/ai-engine) (.env):

cd src/ai-engine
cat > .env << EOF
UPSTAGE_API_KEY=your_upstage_api_key_here
TAVILY_API_KEY=your_tavily_api_key_here
EOF

프론트엔드 (.env.local):

cd src/frontend
cat > .env.local << EOF
NEXT_PUBLIC_API_URL=http://localhost:8000
EOF

3. 의존성 설치

프론트엔드:

cd src/frontend
npm install --legacy-peer-deps

백엔드 (src/ai-engine):

cd src/ai-engine
pip install -r requirements.txt

4. 개발 서버 실행

터미널 1 - 백엔드 (src/ai-engine):

cd src/ai-engine
PYTHONPATH=src python src/deep_research/main.py

터미널 2 - 프론트엔드:

cd src/frontend
npm run dev

5. 애플리케이션 접속

프로덕션 배포

상세한 AWS 배포 가이드는 DEPLOYMENT_GUIDE.md를 참조하세요.


CI/CD 파이프라인

GitHub Actions를 통한 자동 배포

이 프로젝트는 GitHub Actions를 사용하여 지속적 통합 및 배포를 수행합니다.

워크플로우 파일:

  • .github/workflows/deploy-backend.yml - 백엔드 (src/ai-engine) 배포
  • .github/workflows/deploy-frontend.yml - 프론트엔드 배포

GitHub Secrets 설정

  1. GitHub 저장소 → Settings → Secrets and variables → Actions
  2. 다음 Secrets 추가:
    • AWS_ACCESS_KEY_ID: AWS 액세스 키
    • AWS_SECRET_ACCESS_KEY: AWS 시크릿 키

자동 배포 트리거

백엔드 (src/ai-engine):

  • main 브랜치에 푸시 시 트리거
  • src/ai-engine/** 파일 변경 시에만 실행
  • Docker 이미지 빌드 → ECR 푸시 → ECS 서비스 업데이트

프론트엔드:

  • main 브랜치에 푸시 시 트리거
  • src/frontend/** 파일 변경 시에만 실행
  • Next.js 빌드 → S3 배포 → CloudFront 캐시 무효화

수동 배포

빠른 배포:

# 프론트엔드 빌드
cd src/frontend
npm run build

# S3에 배포
aws s3 sync out/ s3://your-bucket-name --delete

# Docker 이미지 빌드 및 푸시
cd src/ai-engine
docker build -t ups-t3-ai-engine .
docker tag ups-t3-ai-engine:latest <ecr-repo-url>:latest
docker push <ecr-repo-url>:latest

# ECS 서비스 업데이트
aws ecs update-service --cluster ups-t3-cluster --service ups-t3-service --force-new-deployment

배포 모니터링

  • 워크플로우 실행 확인: GitHub → Actions 탭
  • ECS 배포 확인: AWS Console → ECS → Services
  • 프론트엔드 확인: CloudFront 배포 URL

상세한 CI/CD 설정 및 문제 해결은 CICD_GUIDE.md를 참조하세요.


프로젝트 구조

ups_t3/
├── src/
│   ├── frontend/              # Next.js 애플리케이션
│   │   ├── app/              # App 라우터 페이지
│   │   ├── components/       # React 컴포넌트
│   │   └── public/           # 정적 자산
│   └── ai-engine/            # 백엔드 (FastAPI + LangGraph)
│       ├── src/
│       │   └── deep_research/  # AI 에이전트 시스템
│       └── requirements.txt
├── docs/                     # 문서
│   └── DEPLOYMENT_GUIDE.md
└── README.md                 # 이 파일

API 엔드포인트

POST /generate

새로운 분석 작업 생성

요청:

{
  "query": "이재명"
}

응답:

{
  "job_id": "abc123",
  "status": "processing"
}

GET /job/{job_id}

작업 상태 확인 및 결과 조회

응답:

{
  "status": "completed",
  "result": {
    "report_title": "이재명 정치경제 영향 분석",
    "influence_chains": [...]
  }
}

설정

환경 변수

필수:

  • UPSTAGE_API_KEY: Upstage Solar-Pro2 API 키
  • TAVILY_API_KEY: Tavily 검색 API 키

선택:

  • AWS_REGION: AWS 리전 (기본값: ap-northeast-2)
  • DYNAMODB_TABLE: DynamoDB 테이블 이름
  • LOG_LEVEL: 로깅 레벨 (기본값: INFO)

문제 해결

일반적인 문제

1. API 키 오류

# .env 파일 존재 확인
cat src/ai-engine/.env

# 환경 변수 확인
echo $UPSTAGE_API_KEY

2. 포트 충돌

# 포트 8000 프로세스 종료
lsof -ti:8000 | xargs kill -9

# 포트 3000 프로세스 종료
lsof -ti:3000 | xargs kill -9

3. 모듈 임포트 오류

# PYTHONPATH 설정
export PYTHONPATH=/path/to/ups_t3/src/ai-engine/src

# 또는 절대 임포트 사용
cd src/ai-engine
PYTHONPATH=src python src/deep_research/main.py

라이선스

MIT License - 자세한 내용은 LICENSE 파일 참조


문의

질문이나 지원이 필요하시면 GitHub에 이슈를 등록해주세요.


감사의 말

  • Upstage: Solar-Pro2 LLM API
  • Tavily: 실시간 웹 검색 API
  • AWS: 클라우드 인프라
  • Next.js: 프론트엔드 프레임워크
  • LangGraph: 멀티 에이전트 오케스트레이션

About

Political Impact Navigator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published