Skip to content

jh941213/STORM_Research_AG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

🧠 AutoGen STORM Research Assistant

차세대 AI 멀티에이전트 협업 연구 플랫폼

AutoGen STORM Research는 Microsoft AutoGen 프레임워크를 기반으로 구축된 지능형 연구 어시스턴트입니다. 여러 AI 에이전트가 협업하여 전문가 수준의 심층 연구를 수행하고, 사용자와 인터랙티브하게 소통하며 고품질 보고서를 생성합니다.

Next.js FastAPI AutoGen Python TypeScript

✨ 주요 특징

🤖 멀티에이전트 협업 시스템

  • 지능형 분석가 생성: 연구 주제에 맞는 다양한 전문 분야 AI 분석가들을 자동 생성
  • 병렬 인터뷰 시스템: 여러 분석가가 동시에 전문가와 심층 인터뷰 진행
  • 협업 보고서 작성: 각 분야 전문가들의 인사이트를 종합한 학술 수준의 보고서 생성

🔍 포괄적 정보 수집

  • 멀티소스 검색: 5가지 검색 도구를 활용한 종합적 정보 수집
    • 🌐 Tavily Search: 최신 웹 정보 및 실시간 동향
    • 🕊️ DuckDuckGo: 프라이버시 중시 검색
    • 📰 Naver News: 한국 관련 최신 뉴스 및 사회 동향
    • 📚 Wikipedia: 기본 개념, 정의, 역사적 배경
    • 🎓 ArXiv: 학술 논문 및 최신 연구 자료

🔄 인터랙티브 피드백 시스템

  • 실시간 진행 추적: WebSocket/SSE 기반 실시간 연구 과정 모니터링
  • 사용자 피드백 반영: 연구 결과에 대한 피드백을 받아 추가 분석가 생성 및 재연구
  • 버전 관리: 원본 연구 → 피드백 개선 버전 추적 및 관리

🎯 고급 AI 모델 지원

  • Azure OpenAI: GPT-4, GPT-4o (기본 권장)
  • OpenAI: GPT-4o, GPT-4o-mini
  • Anthropic: Claude 3.5 Sonnet
  • 동적 모델 전환: API 키 상태에 따른 자동 백업 모델 사용

🏗️ 시스템 아키텍처

graph TB
    subgraph "Frontend Layer"
        A[Next.js 15 UI<br/>포트 3001]
    end
    
    subgraph "Backend Layer"
        B[FastAPI Server<br/>포트 8002]
        C[실시간 통신<br/>WebSocket + SSE]
    end
    
    subgraph "AI Agent Layer"
        D[분석가 생성기]
        E[인터뷰어 에이전트]
        F[전문가 에이전트]
        G[보고서 작성자]
    end
    
    subgraph "Data Sources"
        H[Tavily Search]
        I[DuckDuckGo]
        J[Naver News]
        K[Wikipedia]
        L[ArXiv]
    end
    
    subgraph "AI Models"
        M[Azure OpenAI]
        N[OpenAI]
        O[Anthropic]
    end
    
    A <--> B
    B <--> C
    B <--> D
    D <--> E
    E <--> F
    F <--> G
    F <--> H
    F <--> I
    F <--> J
    F <--> K
    F <--> L
    D <--> M
    E <--> N
    F <--> O
Loading

🚀 빠른 시작

📋 사전 요구사항

  • Python 3.11+
  • Node.js 18+
  • uv (Python 패키지 매니저)
  • npm 또는 yarn

🔧 설치 및 설정

  1. 저장소 클론

    git clone https://github.com/jh941213/autogen_storm_research.git
    cd autogen_storm_research
  2. 환경 변수 설정

    cd storm-research
    cp .env.example .env
    # .env 파일을 편집하여 API 키들을 설정하세요
  3. 필수 API 키 설정 (.env 파일)

    # Azure OpenAI (권장 - 가장 안정적)
    AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
    AZURE_OPENAI_API_KEY=your_azure_openai_key
    AZURE_OPENAI_DEPLOYMENT=gpt-4o
    AZURE_OPENAI_API_VERSION=2024-12-01-preview
    
    # 검색 API (필수)
    TAVILY_API_KEY=your_tavily_api_key
    
    # 추가 검색 API (선택사항)
    NAVER_CLIENT_ID=your_naver_client_id
    NAVER_CLIENT_SECRET=your_naver_client_secret
    
    # 대안 AI 모델 (선택사항)
    OPENAI_API_KEY=your_openai_key
    ANTHROPIC_API_KEY=your_anthropic_key
    
    # 추적/모니터링 (선택사항)
    LANGFUSE_SECRET_KEY=your_langfuse_secret
    LANGFUSE_PUBLIC_KEY=your_langfuse_public
    LANGFUSE_HOST=https://us.cloud.langfuse.com
  4. 전체 시스템 실행

    # 백엔드 + 프론트엔드 동시 실행
    ./run-all.sh

    또는 개별 실행:

    # 백엔드만 실행 (포트 8002)
    ./start.sh
    
    # 프론트엔드만 실행 (포트 3001)
    cd frontend
    ./start.sh
  5. 웹 브라우저에서 접속

    http://localhost:3001
    

🎯 사용법

📝 기본 연구 진행

  1. 연구 주제 입력: 관심 있는 주제를 자연어로 입력
  2. AI 모델 선택: Azure OpenAI, OpenAI, 또는 Anthropic 중 선택
  3. 설정 조정:
    • 분석가 수 (1-10명)
    • 인터뷰 턴 수 (1-10턴)
    • 병렬/순차 인터뷰 모드
  4. 연구 시작: 실시간으로 진행 상황 모니터링
  5. 결과 확인: 생성된 종합 보고서 검토

🔄 고급 피드백 시스템

  1. 초기 연구 완료 후 결과 페이지에서 "피드백 제출" 클릭
  2. 개선 요청사항 입력 (예: "경제적 측면을 더 자세히 다뤄주세요")
  3. 자동 고급 처리:
    • 피드백 분석
    • 추가 전문 분석가 1명 생성
    • 기존 + 추가 분석가로 전체 재연구
    • 피드백 중심의 새로운 보고서 생성
  4. 개선된 버전 확인 및 히스토리 관리

📊 실시간 모니터링

연구 진행 중 다음 단계들을 실시간으로 확인할 수 있습니다:

  • 🔧 설정 (0-10%): 연구 환경 준비
  • 👥 분석가 생성 (10-30%): 전문 분야별 AI 분석가 생성
  • 🎤 인터뷰 진행 (30-80%): 각 분석가와 전문가 간 심층 인터뷰
  • 📝 보고서 작성 (80-100%): 종합 분석 및 보고서 완성

🌟 고급 기능

📡 다중 통신 방식

  • SSE (Server-Sent Events): 우선 사용되는 실시간 스트리밍
  • WebSocket: 양방향 통신이 필요한 경우
  • HTTP 폴링: 네트워크 문제 시 백업 방식

🧩 모듈형 아키텍처

  • workflow.py: 전체 연구 워크플로우 오케스트레이션
  • agents.py: 각종 AI 에이전트 정의 및 관리
  • tools.py: 검색 도구 통합 및 관리
  • tracing.py: 성능 모니터링 및 추적

🎨 현대적 UI/UX

  • Aurora 텍스트 효과: 타이핑 애니메이션
  • 실시간 진행률: 상세한 활동 로그와 함께
  • 반응형 디자인: 모든 디바이스에서 최적화
  • 다크모드 지원: 눈에 편한 테마

🔌 API 문서

연구 관리 API

엔드포인트 메서드 설명
/research/start POST 새로운 연구 시작
/research/progress/{session_id} GET 연구 진행 상황 조회
/research/progress/{session_id}/stream GET SSE 실시간 스트림
/research/result/{session_id} GET 연구 결과 조회
/research/feedback/{session_id} POST 피드백 제출 및 재연구
/research/history/{session_id} GET 연구 히스토리 조회

관리 API

엔드포인트 메서드 설명
/research/tasks GET 모든 연구 작업 목록
/research/task/{session_id} GET 특정 연구 작업 조회
/research/task/{session_id} DELETE 연구 작업 삭제
/health GET 서버 상태 확인

예제 요청

# 연구 시작
curl -X POST "http://localhost:8002/research/start" \
  -H "Content-Type: application/json" \
  -d '{
    "topic": "인공지능의 미래와 사회적 영향",
    "max_analysts": 3,
    "max_interview_turns": 3,
    "parallel_interviews": true,
    "model_provider": "azure_openai"
  }'

# 진행 상황 확인
curl "http://localhost:8002/research/progress/{session_id}"

# SSE 스트림 연결
curl -N "http://localhost:8002/research/progress/{session_id}/stream"

🚀 배포

🐳 Docker를 사용한 배포

# Docker 이미지 빌드
docker build -t autogen-storm-research .

# 컨테이너 실행
docker run -p 8002:8002 -p 3001:3001 \
  -e AZURE_OPENAI_API_KEY=your_key \
  -e TAVILY_API_KEY=your_key \
  autogen-storm-research

☁️ 클라우드 배포

Google Cloud Platform

# Cloud Build 사용
gcloud builds submit --config cloudbuild.yaml

Railway

# Railway CLI 사용
railway up

Render

  • render.yaml 설정 파일을 통한 자동 배포

Vercel (프론트엔드)

cd frontend
vercel --prod

🛠️ 개발

개발 환경 설정

# 백엔드 개발 모드
cd storm-research
uv venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
uv pip install -r requirements.txt
python app_interactive.py

# 프론트엔드 개발 모드
cd frontend
npm install
npm run dev

코드 구조

storm-research/
├── autogen_storm/           # 핵심 AI 에이전트 모듈
│   ├── workflow.py         # 연구 워크플로우 오케스트레이션
│   ├── agents.py           # AI 에이전트 정의
│   ├── tools.py            # 검색 도구 통합
│   ├── models.py           # 데이터 모델 정의
│   ├── config.py           # 설정 관리
│   └── tracing.py          # 성능 추적
├── app_interactive.py       # FastAPI 메인 애플리케이션
├── requirements.txt         # Python 의존성
└── frontend/               # Next.js 프론트엔드
    ├── src/
    │   ├── app/            # Next.js App Router 페이지
    │   ├── components/     # React 컴포넌트
    │   ├── lib/           # 유틸리티 함수
    │   └── store/         # Zustand 상태 관리
    └── package.json        # Node.js 의존성

테스트

# 백엔드 테스트
cd storm-research
python test_imports.py      # 모듈 임포트 테스트
python test_websocket.py    # WebSocket 테스트
python test_api_request.py  # API 요청 테스트

# 프론트엔드 테스트
cd frontend
npm run test                # Jest 테스트 실행
npm run build              # 빌드 테스트

🔧 문제 해결

일반적인 문제들

1. API 키 오류

# .env 파일에 올바른 API 키가 설정되어 있는지 확인
cat .env | grep API_KEY

# Tavily API 키 테스트
curl -X POST "https://api.tavily.com/search" \
  -H "Content-Type: application/json" \
  -d '{"api_key": "your_tavily_key", "query": "test"}'

2. 포트 충돌

# 포트 사용 중인 프로세스 확인
lsof -i :8002  # 백엔드 포트
lsof -i :3001  # 프론트엔드 포트

# 프로세스 종료
kill -9 <PID>

3. 의존성 문제

# Python 의존성 재설치
cd storm-research
uv pip install -r requirements.txt --force-reinstall

# Node.js 의존성 재설치
cd frontend
rm -rf node_modules package-lock.json
npm install

4. WebSocket 연결 문제

  • 방화벽이나 프록시가 WebSocket을 차단하는 경우
  • HTTP 폴링 모드로 자동 백업되므로 기능은 정상 작동

로그 확인

# 백엔드 로그
tail -f storm-research/server.log

# 프론트엔드 개발 서버 로그
cd frontend
npm run dev  # 터미널에서 직접 로그 확인

🤝 기여하기

  1. 포크: 이 저장소를 포크하세요
  2. 브랜치: 새로운 기능 브랜치를 생성하세요
    git checkout -b feature/amazing-feature
  3. 커밋: 변경사항을 커밋하세요
    git commit -m "Add amazing feature"
  4. 푸시: 브랜치에 푸시하세요
    git push origin feature/amazing-feature
  5. 풀 리퀘스트: Pull Request를 생성하세요

개발 가이드라인

  • 코드 스타일: Python은 Black, TypeScript는 ESLint/Prettier 사용
  • 커밋 메시지: Conventional Commits 형식 준수
  • 테스트: 새로운 기능에는 반드시 테스트 추가
  • 문서화: README와 API 문서 업데이트

📄 라이선스

이 프로젝트는 MIT License에 따라 라이선스가 부여됩니다.

🙏 감사의 말

  • Microsoft AutoGen: 강력한 멀티에이전트 프레임워크 제공
  • FastAPI: 현대적이고 빠른 웹 프레임워크
  • Next.js: 최고의 React 기반 프론트엔드 프레임워크
  • Tavily: 고품질 검색 API 서비스
  • OpenAI, Anthropic, Microsoft: 혁신적인 AI 모델 제공

✨ AutoGen STORM Research Assistant로 AI 협업 연구의 새로운 경험을 시작하세요! ✨

🚀 시작하기📚 문서🐛 이슈 리포트💬 토론

>

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors