차세대 AI 멀티에이전트 협업 연구 플랫폼
AutoGen STORM Research는 Microsoft AutoGen 프레임워크를 기반으로 구축된 지능형 연구 어시스턴트입니다. 여러 AI 에이전트가 협업하여 전문가 수준의 심층 연구를 수행하고, 사용자와 인터랙티브하게 소통하며 고품질 보고서를 생성합니다.
- 지능형 분석가 생성: 연구 주제에 맞는 다양한 전문 분야 AI 분석가들을 자동 생성
- 병렬 인터뷰 시스템: 여러 분석가가 동시에 전문가와 심층 인터뷰 진행
- 협업 보고서 작성: 각 분야 전문가들의 인사이트를 종합한 학술 수준의 보고서 생성
- 멀티소스 검색: 5가지 검색 도구를 활용한 종합적 정보 수집
- 🌐 Tavily Search: 최신 웹 정보 및 실시간 동향
- 🕊️ DuckDuckGo: 프라이버시 중시 검색
- 📰 Naver News: 한국 관련 최신 뉴스 및 사회 동향
- 📚 Wikipedia: 기본 개념, 정의, 역사적 배경
- 🎓 ArXiv: 학술 논문 및 최신 연구 자료
- 실시간 진행 추적: WebSocket/SSE 기반 실시간 연구 과정 모니터링
- 사용자 피드백 반영: 연구 결과에 대한 피드백을 받아 추가 분석가 생성 및 재연구
- 버전 관리: 원본 연구 → 피드백 개선 버전 추적 및 관리
- 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
- Python 3.11+
- Node.js 18+
- uv (Python 패키지 매니저)
- npm 또는 yarn
-
저장소 클론
git clone https://github.com/jh941213/autogen_storm_research.git cd autogen_storm_research -
환경 변수 설정
cd storm-research cp .env.example .env # .env 파일을 편집하여 API 키들을 설정하세요
-
필수 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
-
전체 시스템 실행
# 백엔드 + 프론트엔드 동시 실행 ./run-all.sh또는 개별 실행:
# 백엔드만 실행 (포트 8002) ./start.sh # 프론트엔드만 실행 (포트 3001) cd frontend ./start.sh
-
웹 브라우저에서 접속
http://localhost:3001
- 연구 주제 입력: 관심 있는 주제를 자연어로 입력
- AI 모델 선택: Azure OpenAI, OpenAI, 또는 Anthropic 중 선택
- 설정 조정:
- 분석가 수 (1-10명)
- 인터뷰 턴 수 (1-10턴)
- 병렬/순차 인터뷰 모드
- 연구 시작: 실시간으로 진행 상황 모니터링
- 결과 확인: 생성된 종합 보고서 검토
- 초기 연구 완료 후 결과 페이지에서 "피드백 제출" 클릭
- 개선 요청사항 입력 (예: "경제적 측면을 더 자세히 다뤄주세요")
- 자동 고급 처리:
- 피드백 분석
- 추가 전문 분석가 1명 생성
- 기존 + 추가 분석가로 전체 재연구
- 피드백 중심의 새로운 보고서 생성
- 개선된 버전 확인 및 히스토리 관리
연구 진행 중 다음 단계들을 실시간으로 확인할 수 있습니다:
- 🔧 설정 (0-10%): 연구 환경 준비
- 👥 분석가 생성 (10-30%): 전문 분야별 AI 분석가 생성
- 🎤 인터뷰 진행 (30-80%): 각 분석가와 전문가 간 심층 인터뷰
- 📝 보고서 작성 (80-100%): 종합 분석 및 보고서 완성
- SSE (Server-Sent Events): 우선 사용되는 실시간 스트리밍
- WebSocket: 양방향 통신이 필요한 경우
- HTTP 폴링: 네트워크 문제 시 백업 방식
- workflow.py: 전체 연구 워크플로우 오케스트레이션
- agents.py: 각종 AI 에이전트 정의 및 관리
- tools.py: 검색 도구 통합 및 관리
- tracing.py: 성능 모니터링 및 추적
- Aurora 텍스트 효과: 타이핑 애니메이션
- 실시간 진행률: 상세한 활동 로그와 함께
- 반응형 디자인: 모든 디바이스에서 최적화
- 다크모드 지원: 눈에 편한 테마
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
/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 | 연구 히스토리 조회 |
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
/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 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# Cloud Build 사용
gcloud builds submit --config cloudbuild.yaml# Railway CLI 사용
railway uprender.yaml설정 파일을 통한 자동 배포
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 devstorm-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 # 빌드 테스트# .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"}'# 포트 사용 중인 프로세스 확인
lsof -i :8002 # 백엔드 포트
lsof -i :3001 # 프론트엔드 포트
# 프로세스 종료
kill -9 <PID># 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- 방화벽이나 프록시가 WebSocket을 차단하는 경우
- HTTP 폴링 모드로 자동 백업되므로 기능은 정상 작동
# 백엔드 로그
tail -f storm-research/server.log
# 프론트엔드 개발 서버 로그
cd frontend
npm run dev # 터미널에서 직접 로그 확인- 포크: 이 저장소를 포크하세요
- 브랜치: 새로운 기능 브랜치를 생성하세요
git checkout -b feature/amazing-feature
- 커밋: 변경사항을 커밋하세요
git commit -m "Add amazing feature" - 푸시: 브랜치에 푸시하세요
git push origin feature/amazing-feature
- 풀 리퀘스트: 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 모델 제공
>