PIN (Political Influence Network)은 정치인, 정책, 산업, 기업 간의 관계를 AI로 분석하고 시각화하는 플랫폼입니다. 정치적 결정과 정책 변화가 특정 산업 분야와 상장 기업에 미치는 영향을 실시간으로 파악할 수 있도록 돕습니다.
핵심 목표:
- AI를 활용한 정치-경제 영향력 네트워크 분석
- 근거 기반 관계 매핑 제공
- 직관적인 그래프 형식으로 복잡한 연결 시각화
- 영향받는 기업의 실시간 주가 정보 제공
주요 기능:
- 정치인 및 정책에 대한 자연어 검색
- 4단계 관계 시각화 (정치인 → 정책 → 산업 → 기업)
- 출처가 명시된 근거 기반 분석
- 실시간 주가 정보 연동
- 반응형 웹 인터페이스
개발자
↓
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)
-
프론트엔드 (Next.js)
- SEO를 위한 서버 사이드 렌더링
- 클라이언트 사이드 라우팅
- 인터랙티브 그래프 시각화
- 실시간 주가 표시
-
백엔드 (src/ai-engine - FastAPI + LangGraph)
- 멀티 에이전트 리서치 시스템
- 병렬 정보 수집
- 구조화된 출력 생성
- 근거 수집 및 검증
-
캐싱 레이어 (DynamoDB)
- 분석 결과 캐시 (24시간 TTL)
- Rate Limiting (1분 TTL)
-
외부 API
- Upstage Solar-Pro2: 한국어 최적화 LLM
- Tavily: 실시간 웹 검색
- Google Search Grounding: Gemini 기반 웹 검색
- Naver Search: 한국어 뉴스 검색
- 자연어 쿼리 처리
- 정치인 및 정책 이름 인식
- 컨텍스트 기반 검색 개선
- 정치인 → 정책: 정치인과 연관된 주요 정책 식별
- 정책 → 산업: 정책이 영향을 미치는 산업 분야 매핑
- 산업 → 기업: 산업과 연결된 특정 상장 기업 연결
- 출처가 명시된 근거 기반 연결
- 4단계 노드 그래프 표시
- 마우스 오버 시 상세 정보 툴팁
- 원본 출처로 연결되는 근거 링크
- 모바일 및 데스크톱 반응형 디자인
- 실시간 주가 정보 연동
- 가격 변동 지표
- 기업별 재무 지표
- 모든 관계에 대한 출처 표시
- 뉴스 기사 인용
- 투명한 분석 방법론
PIN은 Upstage Solar-Pro2를 핵심 인텔리전스 엔진으로 활용하여 정치-경제 분석을 수행합니다. Solar-Pro2는 한국어에 최적화된 대규모 언어 모델입니다.
주요 활용 사례:
-
리서치 질문 생성
- 사용자 쿼리를 구조화된 리서치 질문으로 변환
- 의도 분류 (관계 분석 vs. 사실 질문)
- 환각 방지를 위한 근거 기반 제약 조건 적용
-
멀티 에이전트 리서치 오케스트레이션
- Supervisor Agent: 병렬 리서치 작업 조율
- Research Agents (3개): 전문화된 조사 수행
- Agent 1: 정책 분석
- Agent 2: 산업 영향 평가
- Agent 3: 기업 식별
-
구조화된 출력 생성
- JSON 형식의 분석 보고서 생성
- 주요 엔티티 추출 (정치인, 정책, 산업, 기업)
- 근거를 통한 관계 검증
-
근거 종합
- 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 (클라우드 배포용)
git clone <repository-url>
cd ups_t3API 키로 .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프론트엔드:
cd src/frontend
npm install --legacy-peer-deps백엔드 (src/ai-engine):
cd src/ai-engine
pip install -r requirements.txt터미널 1 - 백엔드 (src/ai-engine):
cd src/ai-engine
PYTHONPATH=src python src/deep_research/main.py터미널 2 - 프론트엔드:
cd src/frontend
npm run dev- 프론트엔드: http://localhost:3000
- 백엔드 (src/ai-engine) API: http://localhost:8000
- API 문서: http://localhost:8000/docs
상세한 AWS 배포 가이드는 DEPLOYMENT_GUIDE.md를 참조하세요.
이 프로젝트는 GitHub Actions를 사용하여 지속적 통합 및 배포를 수행합니다.
워크플로우 파일:
.github/workflows/deploy-backend.yml- 백엔드 (src/ai-engine) 배포.github/workflows/deploy-frontend.yml- 프론트엔드 배포
- GitHub 저장소 → Settings → Secrets and variables → Actions
- 다음 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 # 이 파일
새로운 분석 작업 생성
요청:
{
"query": "이재명"
}응답:
{
"job_id": "abc123",
"status": "processing"
}작업 상태 확인 및 결과 조회
응답:
{
"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_KEY2. 포트 충돌
# 포트 8000 프로세스 종료
lsof -ti:8000 | xargs kill -9
# 포트 3000 프로세스 종료
lsof -ti:3000 | xargs kill -93. 모듈 임포트 오류
# PYTHONPATH 설정
export PYTHONPATH=/path/to/ups_t3/src/ai-engine/src
# 또는 절대 임포트 사용
cd src/ai-engine
PYTHONPATH=src python src/deep_research/main.pyMIT License - 자세한 내용은 LICENSE 파일 참조
질문이나 지원이 필요하시면 GitHub에 이슈를 등록해주세요.
- Upstage: Solar-Pro2 LLM API
- Tavily: 실시간 웹 검색 API
- AWS: 클라우드 인프라
- Next.js: 프론트엔드 프레임워크
- LangGraph: 멀티 에이전트 오케스트레이션

