Repository files navigation

FactWave 🌊

AI 기반 다중 에이전트 실시간 팩트체킹 시스템

FactWave는 CrewAI 오케스트레이션을 활용하여 5개의 전문 AI 에이전트가 협업하는 3단계 검증 시스템입니다. 실시간 WebSocket 통신과 Chrome 확장 프로그램을 통해 웹 브라우징 중 즉시 정보 검증이 가능합니다.

✨ 주요 특징

  • 🤖 5개 전문 에이전트: 학술(25%), 뉴스(30%), 통계(20%), 논리(15%), 소셜(10%) 가중치 기반 협업
  • 실시간 스트리밍: WebSocket 기반 분석 과정 실시간 모니터링
  • 🎯 3단계 검증 파이프라인: 독립 분석 → 구조화된 토론 → 최종 종합
  • 🌐 Chrome 사이드 패널: Manifest V3 기반 450x600px 확장 프로그램
  • 📊 10+ 전문 연구 도구: 학술 논문, 뉴스, 통계 데이터, SNS 트렌드 통합 분석
  • 🧠 RAG 시스템: 40+ OWID 데이터셋 사전 인덱싱된 ChromaDB 벡터 검색
  • 🌍 다국어 지원: 한국어 우선, 영어 보조 지원

🏗️ 시스템 아키텍처

3단계 협업 검증 파이프라인

[입력 진술] → [Step 1: 독립 분석] → [Step 2: 구조화된 토론] → [Step 3: 최종 종합] → [검증 결과]

Step 1: 독립적 초기 분석

각 에이전트가 자신의 전문 도구를 활용하여 독립적으로 분석:

에이전트가중치전문 도구캐싱 전략
📚 학술 에이전트25%OpenAlex (240M+ 논문), ArXiv, Wikipedia, Tavily72시간
📰 뉴스 에이전트30%Naver News, NewsAPI (80K+ 언론사), Google Fact Check1시간
📊 통계 에이전트20%KOSIS, FRED, World Bank, OWID RAG72시간
🤔 논리 에이전트15%순수 논리 분석 (도구 미사용)-
👥 소셜 에이전트10%Twitter API (twscrape), YouTube30분

Step 2: 구조화된 토론

  • 모든 에이전트가 Step 1 결과를 공유하고 상호 검토
  • 외부 도구 없이 순수 토론과 분석
  • 다른 관점을 고려한 의견 개선 및 반박

Step 3: 최종 종합

  • Super Agent가 모든 분석 종합
  • 가중 신뢰도 매트릭스 생성
  • 최종 판정 및 상세 근거 제시

🚀 빠른 시작

1. 프로젝트 클론

git clone <repository-url>cd FactWave

2. 백엔드 설정

cd backend
pip install -e .# 또는 uv pip install -e . (더 빠름)# 환경변수 설정
cp example.env .env
# .env 파일에 필수 API 키 추가

3. 프론트엔드 설정

cd frontend
npm install

4. 실행

백엔드 서버 (터미널 1):

cd backend
python -m app.api.server # FastAPI WebSocket 서버 (포트 8000)

프론트엔드 개발 서버 (터미널 2):

cd frontend
npm run dev # Vite 개발 서버 (포트 5173)

5. Chrome 확장 프로그램 설치

  1. Chrome에서 chrome://extensions/ 열기
  2. "개발자 모드" 활성화
  3. "압축 해제된 확장 프로그램 로드" 클릭
  4. frontend/dist 폴더 선택

📁 프로젝트 구조

백엔드 아키텍처

backend/
├── app/
│ ├── agents/ # AI 에이전트 시스템
│ │ ├── base.py # FactWaveAgent 기본 클래스
│ │ ├── academic_agent.py # 학술 연구 전문가
│ │ ├── news_agent.py # 뉴스 검증 전문가
│ │ ├── statistics_agent.py # 통계 데이터 전문가
│ │ ├── logic_agent.py # 논리 검증 전문가
│ │ ├── social_agent.py # 소셜 미디어 전문가
│ │ └── super_agent.py # 최종 종합 코디네이터
│ │
│ ├── services/tools/ # 도메인별 연구 도구
│ │ ├── base_tool.py # EnhancedBaseTool (캐싱, 재시도)
│ │ ├── academic/ # 학술 도구
│ │ │ ├── arxiv_tool.py
│ │ │ ├── openalex_tool.py
│ │ │ └── wikipedia_tool.py
│ │ ├── news/ # 뉴스 도구
│ │ │ ├── naver_news_tool.py
│ │ │ ├── newsapi_tool.py
│ │ │ └── factcheck_google_tool.py
│ │ ├── statistics/ # 통계 도구
│ │ │ ├── kosis_search_tool.py
│ │ │ ├── fred_search_tool.py
│ │ │ ├── worldbank_search_tool.py
│ │ │ └── owid_enhanced_rag.py
│ │ ├── community/ # 커뮤니티 도구
│ │ │ ├── twitter_tool.py
│ │ │ └── youtube_tool.py
│ │ └── verification/ # 검증 도구
│ │ ├── ai_image_detector.py
│ │ └── youtube_video_analyzer.py
│ │
│ ├── core/
│ │ ├── crew.py # FactWaveCrew 메인 오케스트레이터
│ │ └── streaming_crew.py # WebSocket 스트리밍 지원
│ │
│ ├── api/
│ │ └── server.py # FastAPI WebSocket 서버
│ │
│ ├── config/
│ │ └── prompts.yaml # 중앙화된 프롬프트 관리
│ │
│ └── utils/
│ ├── llm_config.py # LLM 설정 (GPT-4.1-mini)
│ ├── prompt_loader.py # 동적 프롬프트 로딩
│ └── websocket_manager.py # WebSocket 이벤트 관리
│
├── owid_enhanced_vectordb/ # ChromaDB 벡터 데이터베이스
└── owid_datasets/ # 40+ OWID 데이터셋

프론트엔드 구조

frontend/
├── manifest.json # Chrome Extension Manifest V3
├── background.js # Service Worker
├── src/
│ ├── App.jsx # 메인 앱 컴포넌트
│ ├── components/
│ │ ├── Discussion.jsx # 토론 탭 (실시간 팩트체킹)
│ │ ├── Results.jsx # 결과 탭 (검증 결과 표시)
│ │ ├── Library.jsx # 라이브러리 탭 (저장된 검증)
│ │ ├── LoadingMessage.jsx # 로딩 애니메이션
│ │ ├── ImageAnalysisResult.jsx
│ │ └── YouTubeThumbnail.jsx
│ └── utils/
│ └── youtube.js # YouTube 유틸리티

🛠️ 핵심 구현 세부사항

에이전트 시스템

  • 기본 클래스: FactWaveAgent - 모든 에이전트의 부모 클래스
  • Step별 LLM: GPT-4.1-mini 사용, 단계별 온도/토큰 최적화
  • 도구 로깅: 실시간 도구 사용 모니터링 및 결과 추적
  • 독립 실행: Step 1에서 개별 Crew 인스턴스로 독립성 보장

연구 도구 특징

  • EnhancedBaseTool: 모든 도구의 기본 클래스
  • MD5 캐싱: 도구별 TTL 설정 (학술: 72h, 뉴스: 1h, 소셜: 30m)
  • HTTP 재시도: 지수 백오프로 안정성 확보
  • 속도 제한: API별 rate limiting 자동 관리
  • 우아한 실패: 도구 실패 시 시스템 중단 없이 계속 진행

RAG 시스템 (OWID)

  • ChromaDB: 영구 벡터 저장소
  • 40+ 데이터셋: 기후, 경제, 건강, 교육 등 사전 인덱싱
  • 하이브리드 검색: 벡터 유사도 + BM25 순위
  • 메타데이터 필터: 카테고리, 날짜, 국가별 필터링

WebSocket 통신 프로토콜

// 클라이언트 → 서버{"action": "start","statement": "검증할 문장"}// 서버 → 클라이언트{"type": "task_started|task_completed|agent_analysis|tool_call|final_result","step": "step1|step2|step3","agent": "academic|news|logic|social|statistics|super","content": {...},"timestamp": "ISO 8601"}

프롬프트 관리 (prompts.yaml)

  • 중앙화된 관리: 모든 에이전트 프롬프트 YAML 파일 관리
  • 핫 리로딩: 시스템 재시작 없이 프롬프트 수정 가능
  • Step별 템플릿: 단계별 맞춤형 프롬프트
  • 판정 옵션: 13가지 세분화된 판정 카테고리

🛠️ 기술 스택

백엔드

  • Python 3.12+ / UV 패키지 관리자
  • FastAPI - WebSocket API 서버
  • CrewAI - 멀티 에이전트 오케스트레이션 프레임워크
  • OpenAI GPT-4.1-mini - 메인 LLM (모든 Step에서 사용)
  • ChromaDB - 벡터 데이터베이스 (OWID RAG 시스템)
  • Pydantic - 구조화된 응답 스키마 검증
  • Rich - 터미널 UI 및 로깅 시각화

프론트엔드

  • React 19.1.0 - 최신 UI 프레임워크
  • Vite - 차세대 번들러
  • Tailwind CSS - 유틸리티 기반 스타일링
  • Chrome Extension Manifest V3 - 최신 확장 프로그램 표준
  • Service Worker - 백그라운드 처리

연구 도구 API

  • OpenAlex - 240M+ 학술 논문 (API키 불필요)
  • ArXiv - 수학/물리/CS 프리프린트 논문
  • Naver News API - 한국 뉴스 검색
  • NewsAPI - 80,000+ 글로벌 언론사
  • Google Fact Check API - ClaimReview 팩트체크 데이터베이스
  • Wikipedia API - 다국어 백과사전
  • KOSIS API - 한국 통계청
  • FRED API - 미국 연방준비제도 경제 데이터
  • World Bank API - 세계은행 개발 지표
  • Twitter API (twscrape) - 소셜 미디어 트렌드

🧪 테스트 및 개발

테스트 실행

# WebSocket 클라이언트 테스트cd backend
python test_websocket_client.py
# 개별 도구 테스트
python tests/test_tavily.py
python tests/test_tool_usage.py
python tests/test_youtube_tool.py
# 유닛 테스트 전체 실행
python -m pytest tests/
# CLI 인터페이스 테스트
python main.py

개발 워크플로우

# 백엔드 개발cd backend
python -m app.api.server # 포트 8000에서 서버 시작# 프론트엔드 개발 cd frontend
npm run dev # 포트 5173에서 개발 서버 시작
npm run build # 프로덕션 빌드
npm run build:watch # 빌드 감시 모드# 코드 품질 관리cd backend
ruff check .# 린팅 검사
ruff format .# 코드 포매팅cd frontend
npm run lint # ESLint 검사

성능 최적화 팁

  • 캐시 관리: .cache/ 디렉토리 정기 정리
  • 벡터 DB 재구성: python build_owid_index.py (데이터셋 업데이트 시)
  • 도구별 TTL: 학술(72h), 뉴스(1h), 소셜(30m)로 최적화
  • 동시 실행: Step 1에서 5개 에이전트 병렬 처리

🌍 사용 시나리오

1. 뉴스 기사 검증

입력: "2024년 한국 GDP 성장률이 3.2%를 기록했다"

  • 📰 뉴스 에이전트: 최신 경제 뉴스 검색
  • 📊 통계 에이전트: KOSIS, FRED 경제 지표 확인
  • 🤔 논리 에이전트: 수치의 합리성 분석

2. 과학적 주장 검증

입력: "비타민 C가 감기를 예방한다는 연구 결과가 발표되었다"

  • 📚 학술 에이전트: ArXiv, OpenAlex 논문 검색
  • 📰 뉴스 에이전트: 의학 뉴스 및 팩트체크 결과
  • 🤔 논리 에이전트: 과학적 방법론 평가

3. 소셜 트렌드 검증

입력: "최근 젊은층 사이에서 환경 보호 관심이 급증했다"

  • 👥 소셜 에이전트: Twitter 트렌드 분석
  • 📊 통계 에이전트: 환경 관련 통계 데이터
  • 📰 뉴스 에이전트: 환경 관련 보도 현황

📊 13가지 판정 카테고리

✅ 사실 계열

  • : 확실하게 사실 (95-100% 신뢰도)
  • 대체로_참: 대부분 사실 (75-95% 신뢰도)
  • 부분적_참: 일부만 사실 (50-75% 신뢰도)

❓ 판단 어려움 계열

  • 불확실: 증거 부족으로 판단 어려움
  • 정보부족: 검증할 충분한 정보 없음
  • 논란중: 전문가들 사이에 의견 분분

❌ 거짓 계열

  • 부분적_거짓: 일부가 거짓 (25-50% 거짓)
  • 대체로_거짓: 대부분 거짓 (5-25% 사실)
  • 거짓: 확실하게 거짓 (0-5% 사실)

⚠️ 기타 계열

  • 과장됨: 사실이지만 과장된 표현
  • 오해소지: 오해의 여지가 있는 표현
  • 맥락오류: 맥락에서 벗어난 주장
  • 시대착오: 과거에는 맞았지만 현재는 부정확

🔑 API 키 설정

필수 API 키

# .env 파일에 추가
OPENAI_API_KEY=your_openai_api_key # GPT-4.1-mini 사용
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret

선택적 API 키 (고도화 기능)

# 국제 뉴스 확장
NEWSAPI_KEY=your_newsapi_key
# Google 팩트체크 데이터베이스
GOOGLE_API_KEY=your_google_api_key
# 경제 통계 데이터 
FRED_API_KEY=your_fred_key
# 한국 통계청
KOSIS_API_KEY=your_kosis_key
# 소셜 미디어 분석 (고급 기능)# Twitter 계정 설정은 TWITTER_ACCOUNTS_GUIDE.md 참조

📚 추가 문서

🤝 기여하기

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📝 라이선스

MIT License - LICENSE 파일 참조

🙏 감사의 말

  • CrewAI - 멀티 에이전트 오케스트레이션
  • OpenAlex - 오픈 학술 논문 데이터베이스
  • Our World in Data - 글로벌 통계 데이터
  • 모든 오픈소스 기여자들

FactWave - AI 협업으로 진실을 밝히다 🌊

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

FactWave 🌊

AI 기반 다중 에이전트 실시간 팩트체킹 시스템

FactWave는 CrewAI 오케스트레이션을 활용하여 5개의 전문 AI 에이전트가 협업하는 3단계 검증 시스템입니다. 실시간 WebSocket 통신과 Chrome 확장 프로그램을 통해 웹 브라우징 중 즉시 정보 검증이 가능합니다.

✨ 주요 특징

  • 🤖 5개 전문 에이전트: 학술(25%), 뉴스(30%), 통계(20%), 논리(15%), 소셜(10%) 가중치 기반 협업
  • 실시간 스트리밍: WebSocket 기반 분석 과정 실시간 모니터링
  • 🎯 3단계 검증 파이프라인: 독립 분석 → 구조화된 토론 → 최종 종합
  • 🌐 Chrome 사이드 패널: Manifest V3 기반 450x600px 확장 프로그램
  • 📊 10+ 전문 연구 도구: 학술 논문, 뉴스, 통계 데이터, SNS 트렌드 통합 분석
  • 🧠 RAG 시스템: 40+ OWID 데이터셋 사전 인덱싱된 ChromaDB 벡터 검색
  • 🌍 다국어 지원: 한국어 우선, 영어 보조 지원

🏗️ 시스템 아키텍처

3단계 협업 검증 파이프라인

[입력 진술] → [Step 1: 독립 분석] → [Step 2: 구조화된 토론] → [Step 3: 최종 종합] → [검증 결과]

Step 1: 독립적 초기 분석

각 에이전트가 자신의 전문 도구를 활용하여 독립적으로 분석:

에이전트가중치전문 도구캐싱 전략
📚 학술 에이전트25%OpenAlex (240M+ 논문), ArXiv, Wikipedia, Tavily72시간
📰 뉴스 에이전트30%Naver News, NewsAPI (80K+ 언론사), Google Fact Check1시간
📊 통계 에이전트20%KOSIS, FRED, World Bank, OWID RAG72시간
🤔 논리 에이전트15%순수 논리 분석 (도구 미사용)-
👥 소셜 에이전트10%Twitter API (twscrape), YouTube30분

Step 2: 구조화된 토론

  • 모든 에이전트가 Step 1 결과를 공유하고 상호 검토
  • 외부 도구 없이 순수 토론과 분석
  • 다른 관점을 고려한 의견 개선 및 반박

Step 3: 최종 종합

  • Super Agent가 모든 분석 종합
  • 가중 신뢰도 매트릭스 생성
  • 최종 판정 및 상세 근거 제시

🚀 빠른 시작

1. 프로젝트 클론

git clone <repository-url>cd FactWave

2. 백엔드 설정

cd backend
pip install -e .# 또는 uv pip install -e . (더 빠름)# 환경변수 설정
cp example.env .env
# .env 파일에 필수 API 키 추가

3. 프론트엔드 설정

cd frontend
npm install

4. 실행

백엔드 서버 (터미널 1):

cd backend
python -m app.api.server # FastAPI WebSocket 서버 (포트 8000)

프론트엔드 개발 서버 (터미널 2):

cd frontend
npm run dev # Vite 개발 서버 (포트 5173)

5. Chrome 확장 프로그램 설치

  1. Chrome에서 chrome://extensions/ 열기
  2. "개발자 모드" 활성화
  3. "압축 해제된 확장 프로그램 로드" 클릭
  4. frontend/dist 폴더 선택

📁 프로젝트 구조

백엔드 아키텍처

backend/
├── app/
│ ├── agents/ # AI 에이전트 시스템
│ │ ├── base.py # FactWaveAgent 기본 클래스
│ │ ├── academic_agent.py # 학술 연구 전문가
│ │ ├── news_agent.py # 뉴스 검증 전문가
│ │ ├── statistics_agent.py # 통계 데이터 전문가
│ │ ├── logic_agent.py # 논리 검증 전문가
│ │ ├── social_agent.py # 소셜 미디어 전문가
│ │ └── super_agent.py # 최종 종합 코디네이터
│ │
│ ├── services/tools/ # 도메인별 연구 도구
│ │ ├── base_tool.py # EnhancedBaseTool (캐싱, 재시도)
│ │ ├── academic/ # 학술 도구
│ │ │ ├── arxiv_tool.py
│ │ │ ├── openalex_tool.py
│ │ │ └── wikipedia_tool.py
│ │ ├── news/ # 뉴스 도구
│ │ │ ├── naver_news_tool.py
│ │ │ ├── newsapi_tool.py
│ │ │ └── factcheck_google_tool.py
│ │ ├── statistics/ # 통계 도구
│ │ │ ├── kosis_search_tool.py
│ │ │ ├── fred_search_tool.py
│ │ │ ├── worldbank_search_tool.py
│ │ │ └── owid_enhanced_rag.py
│ │ ├── community/ # 커뮤니티 도구
│ │ │ ├── twitter_tool.py
│ │ │ └── youtube_tool.py
│ │ └── verification/ # 검증 도구
│ │ ├── ai_image_detector.py
│ │ └── youtube_video_analyzer.py
│ │
│ ├── core/
│ │ ├── crew.py # FactWaveCrew 메인 오케스트레이터
│ │ └── streaming_crew.py # WebSocket 스트리밍 지원
│ │
│ ├── api/
│ │ └── server.py # FastAPI WebSocket 서버
│ │
│ ├── config/
│ │ └── prompts.yaml # 중앙화된 프롬프트 관리
│ │
│ └── utils/
│ ├── llm_config.py # LLM 설정 (GPT-4.1-mini)
│ ├── prompt_loader.py # 동적 프롬프트 로딩
│ └── websocket_manager.py # WebSocket 이벤트 관리
│
├── owid_enhanced_vectordb/ # ChromaDB 벡터 데이터베이스
└── owid_datasets/ # 40+ OWID 데이터셋

프론트엔드 구조

frontend/
├── manifest.json # Chrome Extension Manifest V3
├── background.js # Service Worker
├── src/
│ ├── App.jsx # 메인 앱 컴포넌트
│ ├── components/
│ │ ├── Discussion.jsx # 토론 탭 (실시간 팩트체킹)
│ │ ├── Results.jsx # 결과 탭 (검증 결과 표시)
│ │ ├── Library.jsx # 라이브러리 탭 (저장된 검증)
│ │ ├── LoadingMessage.jsx # 로딩 애니메이션
│ │ ├── ImageAnalysisResult.jsx
│ │ └── YouTubeThumbnail.jsx
│ └── utils/
│ └── youtube.js # YouTube 유틸리티

🛠️ 핵심 구현 세부사항

에이전트 시스템

  • 기본 클래스: FactWaveAgent - 모든 에이전트의 부모 클래스
  • Step별 LLM: GPT-4.1-mini 사용, 단계별 온도/토큰 최적화
  • 도구 로깅: 실시간 도구 사용 모니터링 및 결과 추적
  • 독립 실행: Step 1에서 개별 Crew 인스턴스로 독립성 보장

연구 도구 특징

  • EnhancedBaseTool: 모든 도구의 기본 클래스
  • MD5 캐싱: 도구별 TTL 설정 (학술: 72h, 뉴스: 1h, 소셜: 30m)
  • HTTP 재시도: 지수 백오프로 안정성 확보
  • 속도 제한: API별 rate limiting 자동 관리
  • 우아한 실패: 도구 실패 시 시스템 중단 없이 계속 진행

RAG 시스템 (OWID)

  • ChromaDB: 영구 벡터 저장소
  • 40+ 데이터셋: 기후, 경제, 건강, 교육 등 사전 인덱싱
  • 하이브리드 검색: 벡터 유사도 + BM25 순위
  • 메타데이터 필터: 카테고리, 날짜, 국가별 필터링

WebSocket 통신 프로토콜

// 클라이언트 → 서버{"action": "start","statement": "검증할 문장"}// 서버 → 클라이언트{"type": "task_started|task_completed|agent_analysis|tool_call|final_result","step": "step1|step2|step3","agent": "academic|news|logic|social|statistics|super","content": {...},"timestamp": "ISO 8601"}

프롬프트 관리 (prompts.yaml)

  • 중앙화된 관리: 모든 에이전트 프롬프트 YAML 파일 관리
  • 핫 리로딩: 시스템 재시작 없이 프롬프트 수정 가능
  • Step별 템플릿: 단계별 맞춤형 프롬프트
  • 판정 옵션: 13가지 세분화된 판정 카테고리

🛠️ 기술 스택

백엔드

  • Python 3.12+ / UV 패키지 관리자
  • FastAPI - WebSocket API 서버
  • CrewAI - 멀티 에이전트 오케스트레이션 프레임워크
  • OpenAI GPT-4.1-mini - 메인 LLM (모든 Step에서 사용)
  • ChromaDB - 벡터 데이터베이스 (OWID RAG 시스템)
  • Pydantic - 구조화된 응답 스키마 검증
  • Rich - 터미널 UI 및 로깅 시각화

프론트엔드

  • React 19.1.0 - 최신 UI 프레임워크
  • Vite - 차세대 번들러
  • Tailwind CSS - 유틸리티 기반 스타일링
  • Chrome Extension Manifest V3 - 최신 확장 프로그램 표준
  • Service Worker - 백그라운드 처리

연구 도구 API

  • OpenAlex - 240M+ 학술 논문 (API키 불필요)
  • ArXiv - 수학/물리/CS 프리프린트 논문
  • Naver News API - 한국 뉴스 검색
  • NewsAPI - 80,000+ 글로벌 언론사
  • Google Fact Check API - ClaimReview 팩트체크 데이터베이스
  • Wikipedia API - 다국어 백과사전
  • KOSIS API - 한국 통계청
  • FRED API - 미국 연방준비제도 경제 데이터
  • World Bank API - 세계은행 개발 지표
  • Twitter API (twscrape) - 소셜 미디어 트렌드

🧪 테스트 및 개발

테스트 실행

# WebSocket 클라이언트 테스트cd backend
python test_websocket_client.py
# 개별 도구 테스트
python tests/test_tavily.py
python tests/test_tool_usage.py
python tests/test_youtube_tool.py
# 유닛 테스트 전체 실행
python -m pytest tests/
# CLI 인터페이스 테스트
python main.py

개발 워크플로우

# 백엔드 개발cd backend
python -m app.api.server # 포트 8000에서 서버 시작# 프론트엔드 개발 cd frontend
npm run dev # 포트 5173에서 개발 서버 시작
npm run build # 프로덕션 빌드
npm run build:watch # 빌드 감시 모드# 코드 품질 관리cd backend
ruff check .# 린팅 검사
ruff format .# 코드 포매팅cd frontend
npm run lint # ESLint 검사

성능 최적화 팁

  • 캐시 관리: .cache/ 디렉토리 정기 정리
  • 벡터 DB 재구성: python build_owid_index.py (데이터셋 업데이트 시)
  • 도구별 TTL: 학술(72h), 뉴스(1h), 소셜(30m)로 최적화
  • 동시 실행: Step 1에서 5개 에이전트 병렬 처리

🌍 사용 시나리오

1. 뉴스 기사 검증

입력: "2024년 한국 GDP 성장률이 3.2%를 기록했다"

  • 📰 뉴스 에이전트: 최신 경제 뉴스 검색
  • 📊 통계 에이전트: KOSIS, FRED 경제 지표 확인
  • 🤔 논리 에이전트: 수치의 합리성 분석

2. 과학적 주장 검증

입력: "비타민 C가 감기를 예방한다는 연구 결과가 발표되었다"

  • 📚 학술 에이전트: ArXiv, OpenAlex 논문 검색
  • 📰 뉴스 에이전트: 의학 뉴스 및 팩트체크 결과
  • 🤔 논리 에이전트: 과학적 방법론 평가

3. 소셜 트렌드 검증

입력: "최근 젊은층 사이에서 환경 보호 관심이 급증했다"

  • 👥 소셜 에이전트: Twitter 트렌드 분석
  • 📊 통계 에이전트: 환경 관련 통계 데이터
  • 📰 뉴스 에이전트: 환경 관련 보도 현황

📊 13가지 판정 카테고리

✅ 사실 계열

  • : 확실하게 사실 (95-100% 신뢰도)
  • 대체로_참: 대부분 사실 (75-95% 신뢰도)
  • 부분적_참: 일부만 사실 (50-75% 신뢰도)

❓ 판단 어려움 계열

  • 불확실: 증거 부족으로 판단 어려움
  • 정보부족: 검증할 충분한 정보 없음
  • 논란중: 전문가들 사이에 의견 분분

❌ 거짓 계열

  • 부분적_거짓: 일부가 거짓 (25-50% 거짓)
  • 대체로_거짓: 대부분 거짓 (5-25% 사실)
  • 거짓: 확실하게 거짓 (0-5% 사실)

⚠️ 기타 계열

  • 과장됨: 사실이지만 과장된 표현
  • 오해소지: 오해의 여지가 있는 표현
  • 맥락오류: 맥락에서 벗어난 주장
  • 시대착오: 과거에는 맞았지만 현재는 부정확

🔑 API 키 설정

필수 API 키

# .env 파일에 추가
OPENAI_API_KEY=your_openai_api_key # GPT-4.1-mini 사용
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret

선택적 API 키 (고도화 기능)

# 국제 뉴스 확장
NEWSAPI_KEY=your_newsapi_key
# Google 팩트체크 데이터베이스
GOOGLE_API_KEY=your_google_api_key
# 경제 통계 데이터 
FRED_API_KEY=your_fred_key
# 한국 통계청
KOSIS_API_KEY=your_kosis_key
# 소셜 미디어 분석 (고급 기능)# Twitter 계정 설정은 TWITTER_ACCOUNTS_GUIDE.md 참조

📚 추가 문서

🤝 기여하기

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📝 라이선스

MIT License - LICENSE 파일 참조

🙏 감사의 말

  • CrewAI - 멀티 에이전트 오케스트레이션
  • OpenAlex - 오픈 학술 논문 데이터베이스
  • Our World in Data - 글로벌 통계 데이터
  • 모든 오픈소스 기여자들

FactWave - AI 협업으로 진실을 밝히다 🌊

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FactWave 🌊

AI 기반 다중 에이전트 실시간 팩트체킹 시스템

FactWave는 CrewAI 오케스트레이션을 활용하여 5개의 전문 AI 에이전트가 협업하는 3단계 검증 시스템입니다. 실시간 WebSocket 통신과 Chrome 확장 프로그램을 통해 웹 브라우징 중 즉시 정보 검증이 가능합니다.

✨ 주요 특징

  • 🤖 5개 전문 에이전트: 학술(25%), 뉴스(30%), 통계(20%), 논리(15%), 소셜(10%) 가중치 기반 협업
  • 실시간 스트리밍: WebSocket 기반 분석 과정 실시간 모니터링
  • 🎯 3단계 검증 파이프라인: 독립 분석 → 구조화된 토론 → 최종 종합
  • 🌐 Chrome 사이드 패널: Manifest V3 기반 450x600px 확장 프로그램
  • 📊 10+ 전문 연구 도구: 학술 논문, 뉴스, 통계 데이터, SNS 트렌드 통합 분석
  • 🧠 RAG 시스템: 40+ OWID 데이터셋 사전 인덱싱된 ChromaDB 벡터 검색
  • 🌍 다국어 지원: 한국어 우선, 영어 보조 지원

🏗️ 시스템 아키텍처

3단계 협업 검증 파이프라인

[입력 진술] → [Step 1: 독립 분석] → [Step 2: 구조화된 토론] → [Step 3: 최종 종합] → [검증 결과]

Step 1: 독립적 초기 분석

각 에이전트가 자신의 전문 도구를 활용하여 독립적으로 분석:

에이전트가중치전문 도구캐싱 전략
📚 학술 에이전트25%OpenAlex (240M+ 논문), ArXiv, Wikipedia, Tavily72시간
📰 뉴스 에이전트30%Naver News, NewsAPI (80K+ 언론사), Google Fact Check1시간
📊 통계 에이전트20%KOSIS, FRED, World Bank, OWID RAG72시간
🤔 논리 에이전트15%순수 논리 분석 (도구 미사용)-
👥 소셜 에이전트10%Twitter API (twscrape), YouTube30분

Step 2: 구조화된 토론

  • 모든 에이전트가 Step 1 결과를 공유하고 상호 검토
  • 외부 도구 없이 순수 토론과 분석
  • 다른 관점을 고려한 의견 개선 및 반박

Step 3: 최종 종합

  • Super Agent가 모든 분석 종합
  • 가중 신뢰도 매트릭스 생성
  • 최종 판정 및 상세 근거 제시

🚀 빠른 시작

1. 프로젝트 클론

git clone <repository-url>cd FactWave

2. 백엔드 설정

cd backend
pip install -e .# 또는 uv pip install -e . (더 빠름)# 환경변수 설정
cp example.env .env
# .env 파일에 필수 API 키 추가

3. 프론트엔드 설정

cd frontend
npm install

4. 실행

백엔드 서버 (터미널 1):

cd backend
python -m app.api.server # FastAPI WebSocket 서버 (포트 8000)

프론트엔드 개발 서버 (터미널 2):

cd frontend
npm run dev # Vite 개발 서버 (포트 5173)

5. Chrome 확장 프로그램 설치

  1. Chrome에서 chrome://extensions/ 열기
  2. "개발자 모드" 활성화
  3. "압축 해제된 확장 프로그램 로드" 클릭
  4. frontend/dist 폴더 선택

📁 프로젝트 구조

백엔드 아키텍처

backend/
├── app/
│ ├── agents/ # AI 에이전트 시스템
│ │ ├── base.py # FactWaveAgent 기본 클래스
│ │ ├── academic_agent.py # 학술 연구 전문가
│ │ ├── news_agent.py # 뉴스 검증 전문가
│ │ ├── statistics_agent.py # 통계 데이터 전문가
│ │ ├── logic_agent.py # 논리 검증 전문가
│ │ ├── social_agent.py # 소셜 미디어 전문가
│ │ └── super_agent.py # 최종 종합 코디네이터
│ │
│ ├── services/tools/ # 도메인별 연구 도구
│ │ ├── base_tool.py # EnhancedBaseTool (캐싱, 재시도)
│ │ ├── academic/ # 학술 도구
│ │ │ ├── arxiv_tool.py
│ │ │ ├── openalex_tool.py
│ │ │ └── wikipedia_tool.py
│ │ ├── news/ # 뉴스 도구
│ │ │ ├── naver_news_tool.py
│ │ │ ├── newsapi_tool.py
│ │ │ └── factcheck_google_tool.py
│ │ ├── statistics/ # 통계 도구
│ │ │ ├── kosis_search_tool.py
│ │ │ ├── fred_search_tool.py
│ │ │ ├── worldbank_search_tool.py
│ │ │ └── owid_enhanced_rag.py
│ │ ├── community/ # 커뮤니티 도구
│ │ │ ├── twitter_tool.py
│ │ │ └── youtube_tool.py
│ │ └── verification/ # 검증 도구
│ │ ├── ai_image_detector.py
│ │ └── youtube_video_analyzer.py
│ │
│ ├── core/
│ │ ├── crew.py # FactWaveCrew 메인 오케스트레이터
│ │ └── streaming_crew.py # WebSocket 스트리밍 지원
│ │
│ ├── api/
│ │ └── server.py # FastAPI WebSocket 서버
│ │
│ ├── config/
│ │ └── prompts.yaml # 중앙화된 프롬프트 관리
│ │
│ └── utils/
│ ├── llm_config.py # LLM 설정 (GPT-4.1-mini)
│ ├── prompt_loader.py # 동적 프롬프트 로딩
│ └── websocket_manager.py # WebSocket 이벤트 관리
│
├── owid_enhanced_vectordb/ # ChromaDB 벡터 데이터베이스
└── owid_datasets/ # 40+ OWID 데이터셋

프론트엔드 구조

frontend/
├── manifest.json # Chrome Extension Manifest V3
├── background.js # Service Worker
├── src/
│ ├── App.jsx # 메인 앱 컴포넌트
│ ├── components/
│ │ ├── Discussion.jsx # 토론 탭 (실시간 팩트체킹)
│ │ ├── Results.jsx # 결과 탭 (검증 결과 표시)
│ │ ├── Library.jsx # 라이브러리 탭 (저장된 검증)
│ │ ├── LoadingMessage.jsx # 로딩 애니메이션
│ │ ├── ImageAnalysisResult.jsx
│ │ └── YouTubeThumbnail.jsx
│ └── utils/
│ └── youtube.js # YouTube 유틸리티

🛠️ 핵심 구현 세부사항

에이전트 시스템

  • 기본 클래스: FactWaveAgent - 모든 에이전트의 부모 클래스
  • Step별 LLM: GPT-4.1-mini 사용, 단계별 온도/토큰 최적화
  • 도구 로깅: 실시간 도구 사용 모니터링 및 결과 추적
  • 독립 실행: Step 1에서 개별 Crew 인스턴스로 독립성 보장

연구 도구 특징

  • EnhancedBaseTool: 모든 도구의 기본 클래스
  • MD5 캐싱: 도구별 TTL 설정 (학술: 72h, 뉴스: 1h, 소셜: 30m)
  • HTTP 재시도: 지수 백오프로 안정성 확보
  • 속도 제한: API별 rate limiting 자동 관리
  • 우아한 실패: 도구 실패 시 시스템 중단 없이 계속 진행

RAG 시스템 (OWID)

  • ChromaDB: 영구 벡터 저장소
  • 40+ 데이터셋: 기후, 경제, 건강, 교육 등 사전 인덱싱
  • 하이브리드 검색: 벡터 유사도 + BM25 순위
  • 메타데이터 필터: 카테고리, 날짜, 국가별 필터링

WebSocket 통신 프로토콜

// 클라이언트 → 서버{"action": "start","statement": "검증할 문장"}// 서버 → 클라이언트{"type": "task_started|task_completed|agent_analysis|tool_call|final_result","step": "step1|step2|step3","agent": "academic|news|logic|social|statistics|super","content": {...},"timestamp": "ISO 8601"}

프롬프트 관리 (prompts.yaml)

  • 중앙화된 관리: 모든 에이전트 프롬프트 YAML 파일 관리
  • 핫 리로딩: 시스템 재시작 없이 프롬프트 수정 가능
  • Step별 템플릿: 단계별 맞춤형 프롬프트
  • 판정 옵션: 13가지 세분화된 판정 카테고리

🛠️ 기술 스택

백엔드

  • Python 3.12+ / UV 패키지 관리자
  • FastAPI - WebSocket API 서버
  • CrewAI - 멀티 에이전트 오케스트레이션 프레임워크
  • OpenAI GPT-4.1-mini - 메인 LLM (모든 Step에서 사용)
  • ChromaDB - 벡터 데이터베이스 (OWID RAG 시스템)
  • Pydantic - 구조화된 응답 스키마 검증
  • Rich - 터미널 UI 및 로깅 시각화

프론트엔드

  • React 19.1.0 - 최신 UI 프레임워크
  • Vite - 차세대 번들러
  • Tailwind CSS - 유틸리티 기반 스타일링
  • Chrome Extension Manifest V3 - 최신 확장 프로그램 표준
  • Service Worker - 백그라운드 처리

연구 도구 API

  • OpenAlex - 240M+ 학술 논문 (API키 불필요)
  • ArXiv - 수학/물리/CS 프리프린트 논문
  • Naver News API - 한국 뉴스 검색
  • NewsAPI - 80,000+ 글로벌 언론사
  • Google Fact Check API - ClaimReview 팩트체크 데이터베이스
  • Wikipedia API - 다국어 백과사전
  • KOSIS API - 한국 통계청
  • FRED API - 미국 연방준비제도 경제 데이터
  • World Bank API - 세계은행 개발 지표
  • Twitter API (twscrape) - 소셜 미디어 트렌드

🧪 테스트 및 개발

테스트 실행

# WebSocket 클라이언트 테스트cd backend
python test_websocket_client.py
# 개별 도구 테스트
python tests/test_tavily.py
python tests/test_tool_usage.py
python tests/test_youtube_tool.py
# 유닛 테스트 전체 실행
python -m pytest tests/
# CLI 인터페이스 테스트
python main.py

개발 워크플로우

# 백엔드 개발cd backend
python -m app.api.server # 포트 8000에서 서버 시작# 프론트엔드 개발 cd frontend
npm run dev # 포트 5173에서 개발 서버 시작
npm run build # 프로덕션 빌드
npm run build:watch # 빌드 감시 모드# 코드 품질 관리cd backend
ruff check .# 린팅 검사
ruff format .# 코드 포매팅cd frontend
npm run lint # ESLint 검사

성능 최적화 팁

  • 캐시 관리: .cache/ 디렉토리 정기 정리
  • 벡터 DB 재구성: python build_owid_index.py (데이터셋 업데이트 시)
  • 도구별 TTL: 학술(72h), 뉴스(1h), 소셜(30m)로 최적화
  • 동시 실행: Step 1에서 5개 에이전트 병렬 처리

🌍 사용 시나리오

1. 뉴스 기사 검증

입력: "2024년 한국 GDP 성장률이 3.2%를 기록했다"

  • 📰 뉴스 에이전트: 최신 경제 뉴스 검색
  • 📊 통계 에이전트: KOSIS, FRED 경제 지표 확인
  • 🤔 논리 에이전트: 수치의 합리성 분석

2. 과학적 주장 검증

입력: "비타민 C가 감기를 예방한다는 연구 결과가 발표되었다"

  • 📚 학술 에이전트: ArXiv, OpenAlex 논문 검색
  • 📰 뉴스 에이전트: 의학 뉴스 및 팩트체크 결과
  • 🤔 논리 에이전트: 과학적 방법론 평가

3. 소셜 트렌드 검증

입력: "최근 젊은층 사이에서 환경 보호 관심이 급증했다"

  • 👥 소셜 에이전트: Twitter 트렌드 분석
  • 📊 통계 에이전트: 환경 관련 통계 데이터
  • 📰 뉴스 에이전트: 환경 관련 보도 현황

📊 13가지 판정 카테고리

✅ 사실 계열

  • : 확실하게 사실 (95-100% 신뢰도)
  • 대체로_참: 대부분 사실 (75-95% 신뢰도)
  • 부분적_참: 일부만 사실 (50-75% 신뢰도)

❓ 판단 어려움 계열

  • 불확실: 증거 부족으로 판단 어려움
  • 정보부족: 검증할 충분한 정보 없음
  • 논란중: 전문가들 사이에 의견 분분

❌ 거짓 계열

  • 부분적_거짓: 일부가 거짓 (25-50% 거짓)
  • 대체로_거짓: 대부분 거짓 (5-25% 사실)
  • 거짓: 확실하게 거짓 (0-5% 사실)

⚠️ 기타 계열

  • 과장됨: 사실이지만 과장된 표현
  • 오해소지: 오해의 여지가 있는 표현
  • 맥락오류: 맥락에서 벗어난 주장
  • 시대착오: 과거에는 맞았지만 현재는 부정확

🔑 API 키 설정

필수 API 키

# .env 파일에 추가
OPENAI_API_KEY=your_openai_api_key # GPT-4.1-mini 사용
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret

선택적 API 키 (고도화 기능)

# 국제 뉴스 확장
NEWSAPI_KEY=your_newsapi_key
# Google 팩트체크 데이터베이스
GOOGLE_API_KEY=your_google_api_key
# 경제 통계 데이터 
FRED_API_KEY=your_fred_key
# 한국 통계청
KOSIS_API_KEY=your_kosis_key
# 소셜 미디어 분석 (고급 기능)# Twitter 계정 설정은 TWITTER_ACCOUNTS_GUIDE.md 참조

📚 추가 문서

🤝 기여하기

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📝 라이선스

MIT License - LICENSE 파일 참조

🙏 감사의 말

  • CrewAI - 멀티 에이전트 오케스트레이션
  • OpenAlex - 오픈 학술 논문 데이터베이스
  • Our World in Data - 글로벌 통계 데이터
  • 모든 오픈소스 기여자들

FactWave - AI 협업으로 진실을 밝히다 🌊

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FactWave 🌊

AI 기반 다중 에이전트 실시간 팩트체킹 시스템

FactWave는 CrewAI 오케스트레이션을 활용하여 5개의 전문 AI 에이전트가 협업하는 3단계 검증 시스템입니다. 실시간 WebSocket 통신과 Chrome 확장 프로그램을 통해 웹 브라우징 중 즉시 정보 검증이 가능합니다.

✨ 주요 특징

  • 🤖 5개 전문 에이전트: 학술(25%), 뉴스(30%), 통계(20%), 논리(15%), 소셜(10%) 가중치 기반 협업
  • 실시간 스트리밍: WebSocket 기반 분석 과정 실시간 모니터링
  • 🎯 3단계 검증 파이프라인: 독립 분석 → 구조화된 토론 → 최종 종합
  • 🌐 Chrome 사이드 패널: Manifest V3 기반 450x600px 확장 프로그램
  • 📊 10+ 전문 연구 도구: 학술 논문, 뉴스, 통계 데이터, SNS 트렌드 통합 분석
  • 🧠 RAG 시스템: 40+ OWID 데이터셋 사전 인덱싱된 ChromaDB 벡터 검색
  • 🌍 다국어 지원: 한국어 우선, 영어 보조 지원

🏗️ 시스템 아키텍처

3단계 협업 검증 파이프라인

[입력 진술] → [Step 1: 독립 분석] → [Step 2: 구조화된 토론] → [Step 3: 최종 종합] → [검증 결과]

Step 1: 독립적 초기 분석

각 에이전트가 자신의 전문 도구를 활용하여 독립적으로 분석:

에이전트가중치전문 도구캐싱 전략
📚 학술 에이전트25%OpenAlex (240M+ 논문), ArXiv, Wikipedia, Tavily72시간
📰 뉴스 에이전트30%Naver News, NewsAPI (80K+ 언론사), Google Fact Check1시간
📊 통계 에이전트20%KOSIS, FRED, World Bank, OWID RAG72시간
🤔 논리 에이전트15%순수 논리 분석 (도구 미사용)-
👥 소셜 에이전트10%Twitter API (twscrape), YouTube30분

Step 2: 구조화된 토론

  • 모든 에이전트가 Step 1 결과를 공유하고 상호 검토
  • 외부 도구 없이 순수 토론과 분석
  • 다른 관점을 고려한 의견 개선 및 반박

Step 3: 최종 종합

  • Super Agent가 모든 분석 종합
  • 가중 신뢰도 매트릭스 생성
  • 최종 판정 및 상세 근거 제시

🚀 빠른 시작

1. 프로젝트 클론

git clone <repository-url>cd FactWave

2. 백엔드 설정

cd backend
pip install -e .# 또는 uv pip install -e . (더 빠름)# 환경변수 설정
cp example.env .env
# .env 파일에 필수 API 키 추가

3. 프론트엔드 설정

cd frontend
npm install

4. 실행

백엔드 서버 (터미널 1):

cd backend
python -m app.api.server # FastAPI WebSocket 서버 (포트 8000)

프론트엔드 개발 서버 (터미널 2):

cd frontend
npm run dev # Vite 개발 서버 (포트 5173)

5. Chrome 확장 프로그램 설치

  1. Chrome에서 chrome://extensions/ 열기
  2. "개발자 모드" 활성화
  3. "압축 해제된 확장 프로그램 로드" 클릭
  4. frontend/dist 폴더 선택

📁 프로젝트 구조

백엔드 아키텍처

backend/
├── app/
│ ├── agents/ # AI 에이전트 시스템
│ │ ├── base.py # FactWaveAgent 기본 클래스
│ │ ├── academic_agent.py # 학술 연구 전문가
│ │ ├── news_agent.py # 뉴스 검증 전문가
│ │ ├── statistics_agent.py # 통계 데이터 전문가
│ │ ├── logic_agent.py # 논리 검증 전문가
│ │ ├── social_agent.py # 소셜 미디어 전문가
│ │ └── super_agent.py # 최종 종합 코디네이터
│ │
│ ├── services/tools/ # 도메인별 연구 도구
│ │ ├── base_tool.py # EnhancedBaseTool (캐싱, 재시도)
│ │ ├── academic/ # 학술 도구
│ │ │ ├── arxiv_tool.py
│ │ │ ├── openalex_tool.py
│ │ │ └── wikipedia_tool.py
│ │ ├── news/ # 뉴스 도구
│ │ │ ├── naver_news_tool.py
│ │ │ ├── newsapi_tool.py
│ │ │ └── factcheck_google_tool.py
│ │ ├── statistics/ # 통계 도구
│ │ │ ├── kosis_search_tool.py
│ │ │ ├── fred_search_tool.py
│ │ │ ├── worldbank_search_tool.py
│ │ │ └── owid_enhanced_rag.py
│ │ ├── community/ # 커뮤니티 도구
│ │ │ ├── twitter_tool.py
│ │ │ └── youtube_tool.py
│ │ └── verification/ # 검증 도구
│ │ ├── ai_image_detector.py
│ │ └── youtube_video_analyzer.py
│ │
│ ├── core/
│ │ ├── crew.py # FactWaveCrew 메인 오케스트레이터
│ │ └── streaming_crew.py # WebSocket 스트리밍 지원
│ │
│ ├── api/
│ │ └── server.py # FastAPI WebSocket 서버
│ │
│ ├── config/
│ │ └── prompts.yaml # 중앙화된 프롬프트 관리
│ │
│ └── utils/
│ ├── llm_config.py # LLM 설정 (GPT-4.1-mini)
│ ├── prompt_loader.py # 동적 프롬프트 로딩
│ └── websocket_manager.py # WebSocket 이벤트 관리
│
├── owid_enhanced_vectordb/ # ChromaDB 벡터 데이터베이스
└── owid_datasets/ # 40+ OWID 데이터셋

프론트엔드 구조

frontend/
├── manifest.json # Chrome Extension Manifest V3
├── background.js # Service Worker
├── src/
│ ├── App.jsx # 메인 앱 컴포넌트
│ ├── components/
│ │ ├── Discussion.jsx # 토론 탭 (실시간 팩트체킹)
│ │ ├── Results.jsx # 결과 탭 (검증 결과 표시)
│ │ ├── Library.jsx # 라이브러리 탭 (저장된 검증)
│ │ ├── LoadingMessage.jsx # 로딩 애니메이션
│ │ ├── ImageAnalysisResult.jsx
│ │ └── YouTubeThumbnail.jsx
│ └── utils/
│ └── youtube.js # YouTube 유틸리티

🛠️ 핵심 구현 세부사항

에이전트 시스템

  • 기본 클래스: FactWaveAgent - 모든 에이전트의 부모 클래스
  • Step별 LLM: GPT-4.1-mini 사용, 단계별 온도/토큰 최적화
  • 도구 로깅: 실시간 도구 사용 모니터링 및 결과 추적
  • 독립 실행: Step 1에서 개별 Crew 인스턴스로 독립성 보장

연구 도구 특징

  • EnhancedBaseTool: 모든 도구의 기본 클래스
  • MD5 캐싱: 도구별 TTL 설정 (학술: 72h, 뉴스: 1h, 소셜: 30m)
  • HTTP 재시도: 지수 백오프로 안정성 확보
  • 속도 제한: API별 rate limiting 자동 관리
  • 우아한 실패: 도구 실패 시 시스템 중단 없이 계속 진행

RAG 시스템 (OWID)

  • ChromaDB: 영구 벡터 저장소
  • 40+ 데이터셋: 기후, 경제, 건강, 교육 등 사전 인덱싱
  • 하이브리드 검색: 벡터 유사도 + BM25 순위
  • 메타데이터 필터: 카테고리, 날짜, 국가별 필터링

WebSocket 통신 프로토콜

// 클라이언트 → 서버{"action": "start","statement": "검증할 문장"}// 서버 → 클라이언트{"type": "task_started|task_completed|agent_analysis|tool_call|final_result","step": "step1|step2|step3","agent": "academic|news|logic|social|statistics|super","content": {...},"timestamp": "ISO 8601"}

프롬프트 관리 (prompts.yaml)

  • 중앙화된 관리: 모든 에이전트 프롬프트 YAML 파일 관리
  • 핫 리로딩: 시스템 재시작 없이 프롬프트 수정 가능
  • Step별 템플릿: 단계별 맞춤형 프롬프트
  • 판정 옵션: 13가지 세분화된 판정 카테고리

🛠️ 기술 스택

백엔드

  • Python 3.12+ / UV 패키지 관리자
  • FastAPI - WebSocket API 서버
  • CrewAI - 멀티 에이전트 오케스트레이션 프레임워크
  • OpenAI GPT-4.1-mini - 메인 LLM (모든 Step에서 사용)
  • ChromaDB - 벡터 데이터베이스 (OWID RAG 시스템)
  • Pydantic - 구조화된 응답 스키마 검증
  • Rich - 터미널 UI 및 로깅 시각화

프론트엔드

  • React 19.1.0 - 최신 UI 프레임워크
  • Vite - 차세대 번들러
  • Tailwind CSS - 유틸리티 기반 스타일링
  • Chrome Extension Manifest V3 - 최신 확장 프로그램 표준
  • Service Worker - 백그라운드 처리

연구 도구 API

  • OpenAlex - 240M+ 학술 논문 (API키 불필요)
  • ArXiv - 수학/물리/CS 프리프린트 논문
  • Naver News API - 한국 뉴스 검색
  • NewsAPI - 80,000+ 글로벌 언론사
  • Google Fact Check API - ClaimReview 팩트체크 데이터베이스
  • Wikipedia API - 다국어 백과사전
  • KOSIS API - 한국 통계청
  • FRED API - 미국 연방준비제도 경제 데이터
  • World Bank API - 세계은행 개발 지표
  • Twitter API (twscrape) - 소셜 미디어 트렌드

🧪 테스트 및 개발

테스트 실행

# WebSocket 클라이언트 테스트cd backend
python test_websocket_client.py
# 개별 도구 테스트
python tests/test_tavily.py
python tests/test_tool_usage.py
python tests/test_youtube_tool.py
# 유닛 테스트 전체 실행
python -m pytest tests/
# CLI 인터페이스 테스트
python main.py

개발 워크플로우

# 백엔드 개발cd backend
python -m app.api.server # 포트 8000에서 서버 시작# 프론트엔드 개발 cd frontend
npm run dev # 포트 5173에서 개발 서버 시작
npm run build # 프로덕션 빌드
npm run build:watch # 빌드 감시 모드# 코드 품질 관리cd backend
ruff check .# 린팅 검사
ruff format .# 코드 포매팅cd frontend
npm run lint # ESLint 검사

성능 최적화 팁

  • 캐시 관리: .cache/ 디렉토리 정기 정리
  • 벡터 DB 재구성: python build_owid_index.py (데이터셋 업데이트 시)
  • 도구별 TTL: 학술(72h), 뉴스(1h), 소셜(30m)로 최적화
  • 동시 실행: Step 1에서 5개 에이전트 병렬 처리

🌍 사용 시나리오

1. 뉴스 기사 검증

입력: "2024년 한국 GDP 성장률이 3.2%를 기록했다"

  • 📰 뉴스 에이전트: 최신 경제 뉴스 검색
  • 📊 통계 에이전트: KOSIS, FRED 경제 지표 확인
  • 🤔 논리 에이전트: 수치의 합리성 분석

2. 과학적 주장 검증

입력: "비타민 C가 감기를 예방한다는 연구 결과가 발표되었다"

  • 📚 학술 에이전트: ArXiv, OpenAlex 논문 검색
  • 📰 뉴스 에이전트: 의학 뉴스 및 팩트체크 결과
  • 🤔 논리 에이전트: 과학적 방법론 평가

3. 소셜 트렌드 검증

입력: "최근 젊은층 사이에서 환경 보호 관심이 급증했다"

  • 👥 소셜 에이전트: Twitter 트렌드 분석
  • 📊 통계 에이전트: 환경 관련 통계 데이터
  • 📰 뉴스 에이전트: 환경 관련 보도 현황

📊 13가지 판정 카테고리

✅ 사실 계열

  • : 확실하게 사실 (95-100% 신뢰도)
  • 대체로_참: 대부분 사실 (75-95% 신뢰도)
  • 부분적_참: 일부만 사실 (50-75% 신뢰도)

❓ 판단 어려움 계열

  • 불확실: 증거 부족으로 판단 어려움
  • 정보부족: 검증할 충분한 정보 없음
  • 논란중: 전문가들 사이에 의견 분분

❌ 거짓 계열

  • 부분적_거짓: 일부가 거짓 (25-50% 거짓)
  • 대체로_거짓: 대부분 거짓 (5-25% 사실)
  • 거짓: 확실하게 거짓 (0-5% 사실)

⚠️ 기타 계열

  • 과장됨: 사실이지만 과장된 표현
  • 오해소지: 오해의 여지가 있는 표현
  • 맥락오류: 맥락에서 벗어난 주장
  • 시대착오: 과거에는 맞았지만 현재는 부정확

🔑 API 키 설정

필수 API 키

# .env 파일에 추가
OPENAI_API_KEY=your_openai_api_key # GPT-4.1-mini 사용
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret

선택적 API 키 (고도화 기능)

# 국제 뉴스 확장
NEWSAPI_KEY=your_newsapi_key
# Google 팩트체크 데이터베이스
GOOGLE_API_KEY=your_google_api_key
# 경제 통계 데이터 
FRED_API_KEY=your_fred_key
# 한국 통계청
KOSIS_API_KEY=your_kosis_key
# 소셜 미디어 분석 (고급 기능)# Twitter 계정 설정은 TWITTER_ACCOUNTS_GUIDE.md 참조

📚 추가 문서

🤝 기여하기

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📝 라이선스

MIT License - LICENSE 파일 참조

🙏 감사의 말

  • CrewAI - 멀티 에이전트 오케스트레이션
  • OpenAlex - 오픈 학술 논문 데이터베이스
  • Our World in Data - 글로벌 통계 데이터
  • 모든 오픈소스 기여자들

FactWave - AI 협업으로 진실을 밝히다 🌊

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

FactWave 🌊

AI 기반 다중 에이전트 실시간 팩트체킹 시스템

FactWave는 CrewAI 오케스트레이션을 활용하여 5개의 전문 AI 에이전트가 협업하는 3단계 검증 시스템입니다. 실시간 WebSocket 통신과 Chrome 확장 프로그램을 통해 웹 브라우징 중 즉시 정보 검증이 가능합니다.

✨ 주요 특징

  • 🤖 5개 전문 에이전트: 학술(25%), 뉴스(30%), 통계(20%), 논리(15%), 소셜(10%) 가중치 기반 협업
  • 실시간 스트리밍: WebSocket 기반 분석 과정 실시간 모니터링
  • 🎯 3단계 검증 파이프라인: 독립 분석 → 구조화된 토론 → 최종 종합
  • 🌐 Chrome 사이드 패널: Manifest V3 기반 450x600px 확장 프로그램
  • 📊 10+ 전문 연구 도구: 학술 논문, 뉴스, 통계 데이터, SNS 트렌드 통합 분석
  • 🧠 RAG 시스템: 40+ OWID 데이터셋 사전 인덱싱된 ChromaDB 벡터 검색
  • 🌍 다국어 지원: 한국어 우선, 영어 보조 지원

🏗️ 시스템 아키텍처

3단계 협업 검증 파이프라인

[입력 진술] → [Step 1: 독립 분석] → [Step 2: 구조화된 토론] → [Step 3: 최종 종합] → [검증 결과]

Step 1: 독립적 초기 분석

각 에이전트가 자신의 전문 도구를 활용하여 독립적으로 분석:

에이전트가중치전문 도구캐싱 전략
📚 학술 에이전트25%OpenAlex (240M+ 논문), ArXiv, Wikipedia, Tavily72시간
📰 뉴스 에이전트30%Naver News, NewsAPI (80K+ 언론사), Google Fact Check1시간
📊 통계 에이전트20%KOSIS, FRED, World Bank, OWID RAG72시간
🤔 논리 에이전트15%순수 논리 분석 (도구 미사용)-
👥 소셜 에이전트10%Twitter API (twscrape), YouTube30분

Step 2: 구조화된 토론

  • 모든 에이전트가 Step 1 결과를 공유하고 상호 검토
  • 외부 도구 없이 순수 토론과 분석
  • 다른 관점을 고려한 의견 개선 및 반박

Step 3: 최종 종합

  • Super Agent가 모든 분석 종합
  • 가중 신뢰도 매트릭스 생성
  • 최종 판정 및 상세 근거 제시

🚀 빠른 시작

1. 프로젝트 클론

git clone <repository-url>cd FactWave

2. 백엔드 설정

cd backend
pip install -e .# 또는 uv pip install -e . (더 빠름)# 환경변수 설정
cp example.env .env
# .env 파일에 필수 API 키 추가

3. 프론트엔드 설정

cd frontend
npm install

4. 실행

백엔드 서버 (터미널 1):

cd backend
python -m app.api.server # FastAPI WebSocket 서버 (포트 8000)

프론트엔드 개발 서버 (터미널 2):

cd frontend
npm run dev # Vite 개발 서버 (포트 5173)

5. Chrome 확장 프로그램 설치

  1. Chrome에서 chrome://extensions/ 열기
  2. "개발자 모드" 활성화
  3. "압축 해제된 확장 프로그램 로드" 클릭
  4. frontend/dist 폴더 선택

📁 프로젝트 구조

백엔드 아키텍처

backend/
├── app/
│ ├── agents/ # AI 에이전트 시스템
│ │ ├── base.py # FactWaveAgent 기본 클래스
│ │ ├── academic_agent.py # 학술 연구 전문가
│ │ ├── news_agent.py # 뉴스 검증 전문가
│ │ ├── statistics_agent.py # 통계 데이터 전문가
│ │ ├── logic_agent.py # 논리 검증 전문가
│ │ ├── social_agent.py # 소셜 미디어 전문가
│ │ └── super_agent.py # 최종 종합 코디네이터
│ │
│ ├── services/tools/ # 도메인별 연구 도구
│ │ ├── base_tool.py # EnhancedBaseTool (캐싱, 재시도)
│ │ ├── academic/ # 학술 도구
│ │ │ ├── arxiv_tool.py
│ │ │ ├── openalex_tool.py
│ │ │ └── wikipedia_tool.py
│ │ ├── news/ # 뉴스 도구
│ │ │ ├── naver_news_tool.py
│ │ │ ├── newsapi_tool.py
│ │ │ └── factcheck_google_tool.py
│ │ ├── statistics/ # 통계 도구
│ │ │ ├── kosis_search_tool.py
│ │ │ ├── fred_search_tool.py
│ │ │ ├── worldbank_search_tool.py
│ │ │ └── owid_enhanced_rag.py
│ │ ├── community/ # 커뮤니티 도구
│ │ │ ├── twitter_tool.py
│ │ │ └── youtube_tool.py
│ │ └── verification/ # 검증 도구
│ │ ├── ai_image_detector.py
│ │ └── youtube_video_analyzer.py
│ │
│ ├── core/
│ │ ├── crew.py # FactWaveCrew 메인 오케스트레이터
│ │ └── streaming_crew.py # WebSocket 스트리밍 지원
│ │
│ ├── api/
│ │ └── server.py # FastAPI WebSocket 서버
│ │
│ ├── config/
│ │ └── prompts.yaml # 중앙화된 프롬프트 관리
│ │
│ └── utils/
│ ├── llm_config.py # LLM 설정 (GPT-4.1-mini)
│ ├── prompt_loader.py # 동적 프롬프트 로딩
│ └── websocket_manager.py # WebSocket 이벤트 관리
│
├── owid_enhanced_vectordb/ # ChromaDB 벡터 데이터베이스
└── owid_datasets/ # 40+ OWID 데이터셋

프론트엔드 구조

frontend/
├── manifest.json # Chrome Extension Manifest V3
├── background.js # Service Worker
├── src/
│ ├── App.jsx # 메인 앱 컴포넌트
│ ├── components/
│ │ ├── Discussion.jsx # 토론 탭 (실시간 팩트체킹)
│ │ ├── Results.jsx # 결과 탭 (검증 결과 표시)
│ │ ├── Library.jsx # 라이브러리 탭 (저장된 검증)
│ │ ├── LoadingMessage.jsx # 로딩 애니메이션
│ │ ├── ImageAnalysisResult.jsx
│ │ └── YouTubeThumbnail.jsx
│ └── utils/
│ └── youtube.js # YouTube 유틸리티

🛠️ 핵심 구현 세부사항

에이전트 시스템

  • 기본 클래스: FactWaveAgent - 모든 에이전트의 부모 클래스
  • Step별 LLM: GPT-4.1-mini 사용, 단계별 온도/토큰 최적화
  • 도구 로깅: 실시간 도구 사용 모니터링 및 결과 추적
  • 독립 실행: Step 1에서 개별 Crew 인스턴스로 독립성 보장

연구 도구 특징

  • EnhancedBaseTool: 모든 도구의 기본 클래스
  • MD5 캐싱: 도구별 TTL 설정 (학술: 72h, 뉴스: 1h, 소셜: 30m)
  • HTTP 재시도: 지수 백오프로 안정성 확보
  • 속도 제한: API별 rate limiting 자동 관리
  • 우아한 실패: 도구 실패 시 시스템 중단 없이 계속 진행

RAG 시스템 (OWID)

  • ChromaDB: 영구 벡터 저장소
  • 40+ 데이터셋: 기후, 경제, 건강, 교육 등 사전 인덱싱
  • 하이브리드 검색: 벡터 유사도 + BM25 순위
  • 메타데이터 필터: 카테고리, 날짜, 국가별 필터링

WebSocket 통신 프로토콜

// 클라이언트 → 서버{"action": "start","statement": "검증할 문장"}// 서버 → 클라이언트{"type": "task_started|task_completed|agent_analysis|tool_call|final_result","step": "step1|step2|step3","agent": "academic|news|logic|social|statistics|super","content": {...},"timestamp": "ISO 8601"}

프롬프트 관리 (prompts.yaml)

  • 중앙화된 관리: 모든 에이전트 프롬프트 YAML 파일 관리
  • 핫 리로딩: 시스템 재시작 없이 프롬프트 수정 가능
  • Step별 템플릿: 단계별 맞춤형 프롬프트
  • 판정 옵션: 13가지 세분화된 판정 카테고리

🛠️ 기술 스택

백엔드

  • Python 3.12+ / UV 패키지 관리자
  • FastAPI - WebSocket API 서버
  • CrewAI - 멀티 에이전트 오케스트레이션 프레임워크
  • OpenAI GPT-4.1-mini - 메인 LLM (모든 Step에서 사용)
  • ChromaDB - 벡터 데이터베이스 (OWID RAG 시스템)
  • Pydantic - 구조화된 응답 스키마 검증
  • Rich - 터미널 UI 및 로깅 시각화

프론트엔드

  • React 19.1.0 - 최신 UI 프레임워크
  • Vite - 차세대 번들러
  • Tailwind CSS - 유틸리티 기반 스타일링
  • Chrome Extension Manifest V3 - 최신 확장 프로그램 표준
  • Service Worker - 백그라운드 처리

연구 도구 API

  • OpenAlex - 240M+ 학술 논문 (API키 불필요)
  • ArXiv - 수학/물리/CS 프리프린트 논문
  • Naver News API - 한국 뉴스 검색
  • NewsAPI - 80,000+ 글로벌 언론사
  • Google Fact Check API - ClaimReview 팩트체크 데이터베이스
  • Wikipedia API - 다국어 백과사전
  • KOSIS API - 한국 통계청
  • FRED API - 미국 연방준비제도 경제 데이터
  • World Bank API - 세계은행 개발 지표
  • Twitter API (twscrape) - 소셜 미디어 트렌드

🧪 테스트 및 개발

테스트 실행

# WebSocket 클라이언트 테스트cd backend
python test_websocket_client.py
# 개별 도구 테스트
python tests/test_tavily.py
python tests/test_tool_usage.py
python tests/test_youtube_tool.py
# 유닛 테스트 전체 실행
python -m pytest tests/
# CLI 인터페이스 테스트
python main.py

개발 워크플로우

# 백엔드 개발cd backend
python -m app.api.server # 포트 8000에서 서버 시작# 프론트엔드 개발 cd frontend
npm run dev # 포트 5173에서 개발 서버 시작
npm run build # 프로덕션 빌드
npm run build:watch # 빌드 감시 모드# 코드 품질 관리cd backend
ruff check .# 린팅 검사
ruff format .# 코드 포매팅cd frontend
npm run lint # ESLint 검사

성능 최적화 팁

  • 캐시 관리: .cache/ 디렉토리 정기 정리
  • 벡터 DB 재구성: python build_owid_index.py (데이터셋 업데이트 시)
  • 도구별 TTL: 학술(72h), 뉴스(1h), 소셜(30m)로 최적화
  • 동시 실행: Step 1에서 5개 에이전트 병렬 처리

🌍 사용 시나리오

1. 뉴스 기사 검증

입력: "2024년 한국 GDP 성장률이 3.2%를 기록했다"

  • 📰 뉴스 에이전트: 최신 경제 뉴스 검색
  • 📊 통계 에이전트: KOSIS, FRED 경제 지표 확인
  • 🤔 논리 에이전트: 수치의 합리성 분석

2. 과학적 주장 검증

입력: "비타민 C가 감기를 예방한다는 연구 결과가 발표되었다"

  • 📚 학술 에이전트: ArXiv, OpenAlex 논문 검색
  • 📰 뉴스 에이전트: 의학 뉴스 및 팩트체크 결과
  • 🤔 논리 에이전트: 과학적 방법론 평가

3. 소셜 트렌드 검증

입력: "최근 젊은층 사이에서 환경 보호 관심이 급증했다"

  • 👥 소셜 에이전트: Twitter 트렌드 분석
  • 📊 통계 에이전트: 환경 관련 통계 데이터
  • 📰 뉴스 에이전트: 환경 관련 보도 현황

📊 13가지 판정 카테고리

✅ 사실 계열

  • : 확실하게 사실 (95-100% 신뢰도)
  • 대체로_참: 대부분 사실 (75-95% 신뢰도)
  • 부분적_참: 일부만 사실 (50-75% 신뢰도)

❓ 판단 어려움 계열

  • 불확실: 증거 부족으로 판단 어려움
  • 정보부족: 검증할 충분한 정보 없음
  • 논란중: 전문가들 사이에 의견 분분

❌ 거짓 계열

  • 부분적_거짓: 일부가 거짓 (25-50% 거짓)
  • 대체로_거짓: 대부분 거짓 (5-25% 사실)
  • 거짓: 확실하게 거짓 (0-5% 사실)

⚠️ 기타 계열

  • 과장됨: 사실이지만 과장된 표현
  • 오해소지: 오해의 여지가 있는 표현
  • 맥락오류: 맥락에서 벗어난 주장
  • 시대착오: 과거에는 맞았지만 현재는 부정확

🔑 API 키 설정

필수 API 키

# .env 파일에 추가
OPENAI_API_KEY=your_openai_api_key # GPT-4.1-mini 사용
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret

선택적 API 키 (고도화 기능)

# 국제 뉴스 확장
NEWSAPI_KEY=your_newsapi_key
# Google 팩트체크 데이터베이스
GOOGLE_API_KEY=your_google_api_key
# 경제 통계 데이터 
FRED_API_KEY=your_fred_key
# 한국 통계청
KOSIS_API_KEY=your_kosis_key
# 소셜 미디어 분석 (고급 기능)# Twitter 계정 설정은 TWITTER_ACCOUNTS_GUIDE.md 참조

📚 추가 문서

🤝 기여하기

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📝 라이선스

MIT License - LICENSE 파일 참조

🙏 감사의 말

  • CrewAI - 멀티 에이전트 오케스트레이션
  • OpenAlex - 오픈 학술 논문 데이터베이스
  • Our World in Data - 글로벌 통계 데이터
  • 모든 오픈소스 기여자들

FactWave - AI 협업으로 진실을 밝히다 🌊

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FactWave 🌊

AI 기반 다중 에이전트 실시간 팩트체킹 시스템

FactWave는 CrewAI 오케스트레이션을 활용하여 5개의 전문 AI 에이전트가 협업하는 3단계 검증 시스템입니다. 실시간 WebSocket 통신과 Chrome 확장 프로그램을 통해 웹 브라우징 중 즉시 정보 검증이 가능합니다.

✨ 주요 특징

  • 🤖 5개 전문 에이전트: 학술(25%), 뉴스(30%), 통계(20%), 논리(15%), 소셜(10%) 가중치 기반 협업
  • 실시간 스트리밍: WebSocket 기반 분석 과정 실시간 모니터링
  • 🎯 3단계 검증 파이프라인: 독립 분석 → 구조화된 토론 → 최종 종합
  • 🌐 Chrome 사이드 패널: Manifest V3 기반 450x600px 확장 프로그램
  • 📊 10+ 전문 연구 도구: 학술 논문, 뉴스, 통계 데이터, SNS 트렌드 통합 분석
  • 🧠 RAG 시스템: 40+ OWID 데이터셋 사전 인덱싱된 ChromaDB 벡터 검색
  • 🌍 다국어 지원: 한국어 우선, 영어 보조 지원

🏗️ 시스템 아키텍처

3단계 협업 검증 파이프라인

[입력 진술] → [Step 1: 독립 분석] → [Step 2: 구조화된 토론] → [Step 3: 최종 종합] → [검증 결과]

Step 1: 독립적 초기 분석

각 에이전트가 자신의 전문 도구를 활용하여 독립적으로 분석:

에이전트가중치전문 도구캐싱 전략
📚 학술 에이전트25%OpenAlex (240M+ 논문), ArXiv, Wikipedia, Tavily72시간
📰 뉴스 에이전트30%Naver News, NewsAPI (80K+ 언론사), Google Fact Check1시간
📊 통계 에이전트20%KOSIS, FRED, World Bank, OWID RAG72시간
🤔 논리 에이전트15%순수 논리 분석 (도구 미사용)-
👥 소셜 에이전트10%Twitter API (twscrape), YouTube30분

Step 2: 구조화된 토론

  • 모든 에이전트가 Step 1 결과를 공유하고 상호 검토
  • 외부 도구 없이 순수 토론과 분석
  • 다른 관점을 고려한 의견 개선 및 반박

Step 3: 최종 종합

  • Super Agent가 모든 분석 종합
  • 가중 신뢰도 매트릭스 생성
  • 최종 판정 및 상세 근거 제시

🚀 빠른 시작

1. 프로젝트 클론

git clone <repository-url>cd FactWave

2. 백엔드 설정

cd backend
pip install -e .# 또는 uv pip install -e . (더 빠름)# 환경변수 설정
cp example.env .env
# .env 파일에 필수 API 키 추가

3. 프론트엔드 설정

cd frontend
npm install

4. 실행

백엔드 서버 (터미널 1):

cd backend
python -m app.api.server # FastAPI WebSocket 서버 (포트 8000)

프론트엔드 개발 서버 (터미널 2):

cd frontend
npm run dev # Vite 개발 서버 (포트 5173)

5. Chrome 확장 프로그램 설치

  1. Chrome에서 chrome://extensions/ 열기
  2. "개발자 모드" 활성화
  3. "압축 해제된 확장 프로그램 로드" 클릭
  4. frontend/dist 폴더 선택

📁 프로젝트 구조

백엔드 아키텍처

backend/
├── app/
│ ├── agents/ # AI 에이전트 시스템
│ │ ├── base.py # FactWaveAgent 기본 클래스
│ │ ├── academic_agent.py # 학술 연구 전문가
│ │ ├── news_agent.py # 뉴스 검증 전문가
│ │ ├── statistics_agent.py # 통계 데이터 전문가
│ │ ├── logic_agent.py # 논리 검증 전문가
│ │ ├── social_agent.py # 소셜 미디어 전문가
│ │ └── super_agent.py # 최종 종합 코디네이터
│ │
│ ├── services/tools/ # 도메인별 연구 도구
│ │ ├── base_tool.py # EnhancedBaseTool (캐싱, 재시도)
│ │ ├── academic/ # 학술 도구
│ │ │ ├── arxiv_tool.py
│ │ │ ├── openalex_tool.py
│ │ │ └── wikipedia_tool.py
│ │ ├── news/ # 뉴스 도구
│ │ │ ├── naver_news_tool.py
│ │ │ ├── newsapi_tool.py
│ │ │ └── factcheck_google_tool.py
│ │ ├── statistics/ # 통계 도구
│ │ │ ├── kosis_search_tool.py
│ │ │ ├── fred_search_tool.py
│ │ │ ├── worldbank_search_tool.py
│ │ │ └── owid_enhanced_rag.py
│ │ ├── community/ # 커뮤니티 도구
│ │ │ ├── twitter_tool.py
│ │ │ └── youtube_tool.py
│ │ └── verification/ # 검증 도구
│ │ ├── ai_image_detector.py
│ │ └── youtube_video_analyzer.py
│ │
│ ├── core/
│ │ ├── crew.py # FactWaveCrew 메인 오케스트레이터
│ │ └── streaming_crew.py # WebSocket 스트리밍 지원
│ │
│ ├── api/
│ │ └── server.py # FastAPI WebSocket 서버
│ │
│ ├── config/
│ │ └── prompts.yaml # 중앙화된 프롬프트 관리
│ │
│ └── utils/
│ ├── llm_config.py # LLM 설정 (GPT-4.1-mini)
│ ├── prompt_loader.py # 동적 프롬프트 로딩
│ └── websocket_manager.py # WebSocket 이벤트 관리
│
├── owid_enhanced_vectordb/ # ChromaDB 벡터 데이터베이스
└── owid_datasets/ # 40+ OWID 데이터셋

프론트엔드 구조

frontend/
├── manifest.json # Chrome Extension Manifest V3
├── background.js # Service Worker
├── src/
│ ├── App.jsx # 메인 앱 컴포넌트
│ ├── components/
│ │ ├── Discussion.jsx # 토론 탭 (실시간 팩트체킹)
│ │ ├── Results.jsx # 결과 탭 (검증 결과 표시)
│ │ ├── Library.jsx # 라이브러리 탭 (저장된 검증)
│ │ ├── LoadingMessage.jsx # 로딩 애니메이션
│ │ ├── ImageAnalysisResult.jsx
│ │ └── YouTubeThumbnail.jsx
│ └── utils/
│ └── youtube.js # YouTube 유틸리티

🛠️ 핵심 구현 세부사항

에이전트 시스템

  • 기본 클래스: FactWaveAgent - 모든 에이전트의 부모 클래스
  • Step별 LLM: GPT-4.1-mini 사용, 단계별 온도/토큰 최적화
  • 도구 로깅: 실시간 도구 사용 모니터링 및 결과 추적
  • 독립 실행: Step 1에서 개별 Crew 인스턴스로 독립성 보장

연구 도구 특징

  • EnhancedBaseTool: 모든 도구의 기본 클래스
  • MD5 캐싱: 도구별 TTL 설정 (학술: 72h, 뉴스: 1h, 소셜: 30m)
  • HTTP 재시도: 지수 백오프로 안정성 확보
  • 속도 제한: API별 rate limiting 자동 관리
  • 우아한 실패: 도구 실패 시 시스템 중단 없이 계속 진행

RAG 시스템 (OWID)

  • ChromaDB: 영구 벡터 저장소
  • 40+ 데이터셋: 기후, 경제, 건강, 교육 등 사전 인덱싱
  • 하이브리드 검색: 벡터 유사도 + BM25 순위
  • 메타데이터 필터: 카테고리, 날짜, 국가별 필터링

WebSocket 통신 프로토콜

// 클라이언트 → 서버{"action": "start","statement": "검증할 문장"}// 서버 → 클라이언트{"type": "task_started|task_completed|agent_analysis|tool_call|final_result","step": "step1|step2|step3","agent": "academic|news|logic|social|statistics|super","content": {...},"timestamp": "ISO 8601"}

프롬프트 관리 (prompts.yaml)

  • 중앙화된 관리: 모든 에이전트 프롬프트 YAML 파일 관리
  • 핫 리로딩: 시스템 재시작 없이 프롬프트 수정 가능
  • Step별 템플릿: 단계별 맞춤형 프롬프트
  • 판정 옵션: 13가지 세분화된 판정 카테고리

🛠️ 기술 스택

백엔드

  • Python 3.12+ / UV 패키지 관리자
  • FastAPI - WebSocket API 서버
  • CrewAI - 멀티 에이전트 오케스트레이션 프레임워크
  • OpenAI GPT-4.1-mini - 메인 LLM (모든 Step에서 사용)
  • ChromaDB - 벡터 데이터베이스 (OWID RAG 시스템)
  • Pydantic - 구조화된 응답 스키마 검증
  • Rich - 터미널 UI 및 로깅 시각화

프론트엔드

  • React 19.1.0 - 최신 UI 프레임워크
  • Vite - 차세대 번들러
  • Tailwind CSS - 유틸리티 기반 스타일링
  • Chrome Extension Manifest V3 - 최신 확장 프로그램 표준
  • Service Worker - 백그라운드 처리

연구 도구 API

  • OpenAlex - 240M+ 학술 논문 (API키 불필요)
  • ArXiv - 수학/물리/CS 프리프린트 논문
  • Naver News API - 한국 뉴스 검색
  • NewsAPI - 80,000+ 글로벌 언론사
  • Google Fact Check API - ClaimReview 팩트체크 데이터베이스
  • Wikipedia API - 다국어 백과사전
  • KOSIS API - 한국 통계청
  • FRED API - 미국 연방준비제도 경제 데이터
  • World Bank API - 세계은행 개발 지표
  • Twitter API (twscrape) - 소셜 미디어 트렌드

🧪 테스트 및 개발

테스트 실행

# WebSocket 클라이언트 테스트cd backend
python test_websocket_client.py
# 개별 도구 테스트
python tests/test_tavily.py
python tests/test_tool_usage.py
python tests/test_youtube_tool.py
# 유닛 테스트 전체 실행
python -m pytest tests/
# CLI 인터페이스 테스트
python main.py

개발 워크플로우

# 백엔드 개발cd backend
python -m app.api.server # 포트 8000에서 서버 시작# 프론트엔드 개발 cd frontend
npm run dev # 포트 5173에서 개발 서버 시작
npm run build # 프로덕션 빌드
npm run build:watch # 빌드 감시 모드# 코드 품질 관리cd backend
ruff check .# 린팅 검사
ruff format .# 코드 포매팅cd frontend
npm run lint # ESLint 검사

성능 최적화 팁

  • 캐시 관리: .cache/ 디렉토리 정기 정리
  • 벡터 DB 재구성: python build_owid_index.py (데이터셋 업데이트 시)
  • 도구별 TTL: 학술(72h), 뉴스(1h), 소셜(30m)로 최적화
  • 동시 실행: Step 1에서 5개 에이전트 병렬 처리

🌍 사용 시나리오

1. 뉴스 기사 검증

입력: "2024년 한국 GDP 성장률이 3.2%를 기록했다"

  • 📰 뉴스 에이전트: 최신 경제 뉴스 검색
  • 📊 통계 에이전트: KOSIS, FRED 경제 지표 확인
  • 🤔 논리 에이전트: 수치의 합리성 분석

2. 과학적 주장 검증

입력: "비타민 C가 감기를 예방한다는 연구 결과가 발표되었다"

  • 📚 학술 에이전트: ArXiv, OpenAlex 논문 검색
  • 📰 뉴스 에이전트: 의학 뉴스 및 팩트체크 결과
  • 🤔 논리 에이전트: 과학적 방법론 평가

3. 소셜 트렌드 검증

입력: "최근 젊은층 사이에서 환경 보호 관심이 급증했다"

  • 👥 소셜 에이전트: Twitter 트렌드 분석
  • 📊 통계 에이전트: 환경 관련 통계 데이터
  • 📰 뉴스 에이전트: 환경 관련 보도 현황

📊 13가지 판정 카테고리

✅ 사실 계열

  • : 확실하게 사실 (95-100% 신뢰도)
  • 대체로_참: 대부분 사실 (75-95% 신뢰도)
  • 부분적_참: 일부만 사실 (50-75% 신뢰도)

❓ 판단 어려움 계열

  • 불확실: 증거 부족으로 판단 어려움
  • 정보부족: 검증할 충분한 정보 없음
  • 논란중: 전문가들 사이에 의견 분분

❌ 거짓 계열

  • 부분적_거짓: 일부가 거짓 (25-50% 거짓)
  • 대체로_거짓: 대부분 거짓 (5-25% 사실)
  • 거짓: 확실하게 거짓 (0-5% 사실)

⚠️ 기타 계열

  • 과장됨: 사실이지만 과장된 표현
  • 오해소지: 오해의 여지가 있는 표현
  • 맥락오류: 맥락에서 벗어난 주장
  • 시대착오: 과거에는 맞았지만 현재는 부정확

🔑 API 키 설정

필수 API 키

# .env 파일에 추가
OPENAI_API_KEY=your_openai_api_key # GPT-4.1-mini 사용
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret

선택적 API 키 (고도화 기능)

# 국제 뉴스 확장
NEWSAPI_KEY=your_newsapi_key
# Google 팩트체크 데이터베이스
GOOGLE_API_KEY=your_google_api_key
# 경제 통계 데이터 
FRED_API_KEY=your_fred_key
# 한국 통계청
KOSIS_API_KEY=your_kosis_key
# 소셜 미디어 분석 (고급 기능)# Twitter 계정 설정은 TWITTER_ACCOUNTS_GUIDE.md 참조

📚 추가 문서

🤝 기여하기

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📝 라이선스

MIT License - LICENSE 파일 참조

🙏 감사의 말

  • CrewAI - 멀티 에이전트 오케스트레이션
  • OpenAlex - 오픈 학술 논문 데이터베이스
  • Our World in Data - 글로벌 통계 데이터
  • 모든 오픈소스 기여자들

FactWave - AI 협업으로 진실을 밝히다 🌊

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FactWave 🌊

AI 기반 다중 에이전트 실시간 팩트체킹 시스템

FactWave는 CrewAI 오케스트레이션을 활용하여 5개의 전문 AI 에이전트가 협업하는 3단계 검증 시스템입니다. 실시간 WebSocket 통신과 Chrome 확장 프로그램을 통해 웹 브라우징 중 즉시 정보 검증이 가능합니다.

✨ 주요 특징

  • 🤖 5개 전문 에이전트: 학술(25%), 뉴스(30%), 통계(20%), 논리(15%), 소셜(10%) 가중치 기반 협업
  • 실시간 스트리밍: WebSocket 기반 분석 과정 실시간 모니터링
  • 🎯 3단계 검증 파이프라인: 독립 분석 → 구조화된 토론 → 최종 종합
  • 🌐 Chrome 사이드 패널: Manifest V3 기반 450x600px 확장 프로그램
  • 📊 10+ 전문 연구 도구: 학술 논문, 뉴스, 통계 데이터, SNS 트렌드 통합 분석
  • 🧠 RAG 시스템: 40+ OWID 데이터셋 사전 인덱싱된 ChromaDB 벡터 검색
  • 🌍 다국어 지원: 한국어 우선, 영어 보조 지원

🏗️ 시스템 아키텍처

3단계 협업 검증 파이프라인

[입력 진술] → [Step 1: 독립 분석] → [Step 2: 구조화된 토론] → [Step 3: 최종 종합] → [검증 결과]

Step 1: 독립적 초기 분석

각 에이전트가 자신의 전문 도구를 활용하여 독립적으로 분석:

에이전트가중치전문 도구캐싱 전략
📚 학술 에이전트25%OpenAlex (240M+ 논문), ArXiv, Wikipedia, Tavily72시간
📰 뉴스 에이전트30%Naver News, NewsAPI (80K+ 언론사), Google Fact Check1시간
📊 통계 에이전트20%KOSIS, FRED, World Bank, OWID RAG72시간
🤔 논리 에이전트15%순수 논리 분석 (도구 미사용)-
👥 소셜 에이전트10%Twitter API (twscrape), YouTube30분

Step 2: 구조화된 토론

  • 모든 에이전트가 Step 1 결과를 공유하고 상호 검토
  • 외부 도구 없이 순수 토론과 분석
  • 다른 관점을 고려한 의견 개선 및 반박

Step 3: 최종 종합

  • Super Agent가 모든 분석 종합
  • 가중 신뢰도 매트릭스 생성
  • 최종 판정 및 상세 근거 제시

🚀 빠른 시작

1. 프로젝트 클론

git clone <repository-url>cd FactWave

2. 백엔드 설정

cd backend
pip install -e .# 또는 uv pip install -e . (더 빠름)# 환경변수 설정
cp example.env .env
# .env 파일에 필수 API 키 추가

3. 프론트엔드 설정

cd frontend
npm install

4. 실행

백엔드 서버 (터미널 1):

cd backend
python -m app.api.server # FastAPI WebSocket 서버 (포트 8000)

프론트엔드 개발 서버 (터미널 2):

cd frontend
npm run dev # Vite 개발 서버 (포트 5173)

5. Chrome 확장 프로그램 설치

  1. Chrome에서 chrome://extensions/ 열기
  2. "개발자 모드" 활성화
  3. "압축 해제된 확장 프로그램 로드" 클릭
  4. frontend/dist 폴더 선택

📁 프로젝트 구조

백엔드 아키텍처

backend/
├── app/
│ ├── agents/ # AI 에이전트 시스템
│ │ ├── base.py # FactWaveAgent 기본 클래스
│ │ ├── academic_agent.py # 학술 연구 전문가
│ │ ├── news_agent.py # 뉴스 검증 전문가
│ │ ├── statistics_agent.py # 통계 데이터 전문가
│ │ ├── logic_agent.py # 논리 검증 전문가
│ │ ├── social_agent.py # 소셜 미디어 전문가
│ │ └── super_agent.py # 최종 종합 코디네이터
│ │
│ ├── services/tools/ # 도메인별 연구 도구
│ │ ├── base_tool.py # EnhancedBaseTool (캐싱, 재시도)
│ │ ├── academic/ # 학술 도구
│ │ │ ├── arxiv_tool.py
│ │ │ ├── openalex_tool.py
│ │ │ └── wikipedia_tool.py
│ │ ├── news/ # 뉴스 도구
│ │ │ ├── naver_news_tool.py
│ │ │ ├── newsapi_tool.py
│ │ │ └── factcheck_google_tool.py
│ │ ├── statistics/ # 통계 도구
│ │ │ ├── kosis_search_tool.py
│ │ │ ├── fred_search_tool.py
│ │ │ ├── worldbank_search_tool.py
│ │ │ └── owid_enhanced_rag.py
│ │ ├── community/ # 커뮤니티 도구
│ │ │ ├── twitter_tool.py
│ │ │ └── youtube_tool.py
│ │ └── verification/ # 검증 도구
│ │ ├── ai_image_detector.py
│ │ └── youtube_video_analyzer.py
│ │
│ ├── core/
│ │ ├── crew.py # FactWaveCrew 메인 오케스트레이터
│ │ └── streaming_crew.py # WebSocket 스트리밍 지원
│ │
│ ├── api/
│ │ └── server.py # FastAPI WebSocket 서버
│ │
│ ├── config/
│ │ └── prompts.yaml # 중앙화된 프롬프트 관리
│ │
│ └── utils/
│ ├── llm_config.py # LLM 설정 (GPT-4.1-mini)
│ ├── prompt_loader.py # 동적 프롬프트 로딩
│ └── websocket_manager.py # WebSocket 이벤트 관리
│
├── owid_enhanced_vectordb/ # ChromaDB 벡터 데이터베이스
└── owid_datasets/ # 40+ OWID 데이터셋

프론트엔드 구조

frontend/
├── manifest.json # Chrome Extension Manifest V3
├── background.js # Service Worker
├── src/
│ ├── App.jsx # 메인 앱 컴포넌트
│ ├── components/
│ │ ├── Discussion.jsx # 토론 탭 (실시간 팩트체킹)
│ │ ├── Results.jsx # 결과 탭 (검증 결과 표시)
│ │ ├── Library.jsx # 라이브러리 탭 (저장된 검증)
│ │ ├── LoadingMessage.jsx # 로딩 애니메이션
│ │ ├── ImageAnalysisResult.jsx
│ │ └── YouTubeThumbnail.jsx
│ └── utils/
│ └── youtube.js # YouTube 유틸리티

🛠️ 핵심 구현 세부사항

에이전트 시스템

  • 기본 클래스: FactWaveAgent - 모든 에이전트의 부모 클래스
  • Step별 LLM: GPT-4.1-mini 사용, 단계별 온도/토큰 최적화
  • 도구 로깅: 실시간 도구 사용 모니터링 및 결과 추적
  • 독립 실행: Step 1에서 개별 Crew 인스턴스로 독립성 보장

연구 도구 특징

  • EnhancedBaseTool: 모든 도구의 기본 클래스
  • MD5 캐싱: 도구별 TTL 설정 (학술: 72h, 뉴스: 1h, 소셜: 30m)
  • HTTP 재시도: 지수 백오프로 안정성 확보
  • 속도 제한: API별 rate limiting 자동 관리
  • 우아한 실패: 도구 실패 시 시스템 중단 없이 계속 진행

RAG 시스템 (OWID)

  • ChromaDB: 영구 벡터 저장소
  • 40+ 데이터셋: 기후, 경제, 건강, 교육 등 사전 인덱싱
  • 하이브리드 검색: 벡터 유사도 + BM25 순위
  • 메타데이터 필터: 카테고리, 날짜, 국가별 필터링

WebSocket 통신 프로토콜

// 클라이언트 → 서버{"action": "start","statement": "검증할 문장"}// 서버 → 클라이언트{"type": "task_started|task_completed|agent_analysis|tool_call|final_result","step": "step1|step2|step3","agent": "academic|news|logic|social|statistics|super","content": {...},"timestamp": "ISO 8601"}

프롬프트 관리 (prompts.yaml)

  • 중앙화된 관리: 모든 에이전트 프롬프트 YAML 파일 관리
  • 핫 리로딩: 시스템 재시작 없이 프롬프트 수정 가능
  • Step별 템플릿: 단계별 맞춤형 프롬프트
  • 판정 옵션: 13가지 세분화된 판정 카테고리

🛠️ 기술 스택

백엔드

  • Python 3.12+ / UV 패키지 관리자
  • FastAPI - WebSocket API 서버
  • CrewAI - 멀티 에이전트 오케스트레이션 프레임워크
  • OpenAI GPT-4.1-mini - 메인 LLM (모든 Step에서 사용)
  • ChromaDB - 벡터 데이터베이스 (OWID RAG 시스템)
  • Pydantic - 구조화된 응답 스키마 검증
  • Rich - 터미널 UI 및 로깅 시각화

프론트엔드

  • React 19.1.0 - 최신 UI 프레임워크
  • Vite - 차세대 번들러
  • Tailwind CSS - 유틸리티 기반 스타일링
  • Chrome Extension Manifest V3 - 최신 확장 프로그램 표준
  • Service Worker - 백그라운드 처리

연구 도구 API

  • OpenAlex - 240M+ 학술 논문 (API키 불필요)
  • ArXiv - 수학/물리/CS 프리프린트 논문
  • Naver News API - 한국 뉴스 검색
  • NewsAPI - 80,000+ 글로벌 언론사
  • Google Fact Check API - ClaimReview 팩트체크 데이터베이스
  • Wikipedia API - 다국어 백과사전
  • KOSIS API - 한국 통계청
  • FRED API - 미국 연방준비제도 경제 데이터
  • World Bank API - 세계은행 개발 지표
  • Twitter API (twscrape) - 소셜 미디어 트렌드

🧪 테스트 및 개발

테스트 실행

# WebSocket 클라이언트 테스트cd backend
python test_websocket_client.py
# 개별 도구 테스트
python tests/test_tavily.py
python tests/test_tool_usage.py
python tests/test_youtube_tool.py
# 유닛 테스트 전체 실행
python -m pytest tests/
# CLI 인터페이스 테스트
python main.py

개발 워크플로우

# 백엔드 개발cd backend
python -m app.api.server # 포트 8000에서 서버 시작# 프론트엔드 개발 cd frontend
npm run dev # 포트 5173에서 개발 서버 시작
npm run build # 프로덕션 빌드
npm run build:watch # 빌드 감시 모드# 코드 품질 관리cd backend
ruff check .# 린팅 검사
ruff format .# 코드 포매팅cd frontend
npm run lint # ESLint 검사

성능 최적화 팁

  • 캐시 관리: .cache/ 디렉토리 정기 정리
  • 벡터 DB 재구성: python build_owid_index.py (데이터셋 업데이트 시)
  • 도구별 TTL: 학술(72h), 뉴스(1h), 소셜(30m)로 최적화
  • 동시 실행: Step 1에서 5개 에이전트 병렬 처리

🌍 사용 시나리오

1. 뉴스 기사 검증

입력: "2024년 한국 GDP 성장률이 3.2%를 기록했다"

  • 📰 뉴스 에이전트: 최신 경제 뉴스 검색
  • 📊 통계 에이전트: KOSIS, FRED 경제 지표 확인
  • 🤔 논리 에이전트: 수치의 합리성 분석

2. 과학적 주장 검증

입력: "비타민 C가 감기를 예방한다는 연구 결과가 발표되었다"

  • 📚 학술 에이전트: ArXiv, OpenAlex 논문 검색
  • 📰 뉴스 에이전트: 의학 뉴스 및 팩트체크 결과
  • 🤔 논리 에이전트: 과학적 방법론 평가

3. 소셜 트렌드 검증

입력: "최근 젊은층 사이에서 환경 보호 관심이 급증했다"

  • 👥 소셜 에이전트: Twitter 트렌드 분석
  • 📊 통계 에이전트: 환경 관련 통계 데이터
  • 📰 뉴스 에이전트: 환경 관련 보도 현황

📊 13가지 판정 카테고리

✅ 사실 계열

  • : 확실하게 사실 (95-100% 신뢰도)
  • 대체로_참: 대부분 사실 (75-95% 신뢰도)
  • 부분적_참: 일부만 사실 (50-75% 신뢰도)

❓ 판단 어려움 계열

  • 불확실: 증거 부족으로 판단 어려움
  • 정보부족: 검증할 충분한 정보 없음
  • 논란중: 전문가들 사이에 의견 분분

❌ 거짓 계열

  • 부분적_거짓: 일부가 거짓 (25-50% 거짓)
  • 대체로_거짓: 대부분 거짓 (5-25% 사실)
  • 거짓: 확실하게 거짓 (0-5% 사실)

⚠️ 기타 계열

  • 과장됨: 사실이지만 과장된 표현
  • 오해소지: 오해의 여지가 있는 표현
  • 맥락오류: 맥락에서 벗어난 주장
  • 시대착오: 과거에는 맞았지만 현재는 부정확

🔑 API 키 설정

필수 API 키

# .env 파일에 추가
OPENAI_API_KEY=your_openai_api_key # GPT-4.1-mini 사용
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret

선택적 API 키 (고도화 기능)

# 국제 뉴스 확장
NEWSAPI_KEY=your_newsapi_key
# Google 팩트체크 데이터베이스
GOOGLE_API_KEY=your_google_api_key
# 경제 통계 데이터 
FRED_API_KEY=your_fred_key
# 한국 통계청
KOSIS_API_KEY=your_kosis_key
# 소셜 미디어 분석 (고급 기능)# Twitter 계정 설정은 TWITTER_ACCOUNTS_GUIDE.md 참조

📚 추가 문서

🤝 기여하기

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📝 라이선스

MIT License - LICENSE 파일 참조

🙏 감사의 말

  • CrewAI - 멀티 에이전트 오케스트레이션
  • OpenAlex - 오픈 학술 논문 데이터베이스
  • Our World in Data - 글로벌 통계 데이터
  • 모든 오픈소스 기여자들

FactWave - AI 협업으로 진실을 밝히다 🌊

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

FactWave 🌊

AI 기반 다중 에이전트 실시간 팩트체킹 시스템

FactWave는 CrewAI 오케스트레이션을 활용하여 5개의 전문 AI 에이전트가 협업하는 3단계 검증 시스템입니다. 실시간 WebSocket 통신과 Chrome 확장 프로그램을 통해 웹 브라우징 중 즉시 정보 검증이 가능합니다.

✨ 주요 특징

  • 🤖 5개 전문 에이전트: 학술(25%), 뉴스(30%), 통계(20%), 논리(15%), 소셜(10%) 가중치 기반 협업
  • 실시간 스트리밍: WebSocket 기반 분석 과정 실시간 모니터링
  • 🎯 3단계 검증 파이프라인: 독립 분석 → 구조화된 토론 → 최종 종합
  • 🌐 Chrome 사이드 패널: Manifest V3 기반 450x600px 확장 프로그램
  • 📊 10+ 전문 연구 도구: 학술 논문, 뉴스, 통계 데이터, SNS 트렌드 통합 분석
  • 🧠 RAG 시스템: 40+ OWID 데이터셋 사전 인덱싱된 ChromaDB 벡터 검색
  • 🌍 다국어 지원: 한국어 우선, 영어 보조 지원

🏗️ 시스템 아키텍처

3단계 협업 검증 파이프라인

[입력 진술] → [Step 1: 독립 분석] → [Step 2: 구조화된 토론] → [Step 3: 최종 종합] → [검증 결과]

Step 1: 독립적 초기 분석

각 에이전트가 자신의 전문 도구를 활용하여 독립적으로 분석:

에이전트가중치전문 도구캐싱 전략
📚 학술 에이전트25%OpenAlex (240M+ 논문), ArXiv, Wikipedia, Tavily72시간
📰 뉴스 에이전트30%Naver News, NewsAPI (80K+ 언론사), Google Fact Check1시간
📊 통계 에이전트20%KOSIS, FRED, World Bank, OWID RAG72시간
🤔 논리 에이전트15%순수 논리 분석 (도구 미사용)-
👥 소셜 에이전트10%Twitter API (twscrape), YouTube30분

Step 2: 구조화된 토론

  • 모든 에이전트가 Step 1 결과를 공유하고 상호 검토
  • 외부 도구 없이 순수 토론과 분석
  • 다른 관점을 고려한 의견 개선 및 반박

Step 3: 최종 종합

  • Super Agent가 모든 분석 종합
  • 가중 신뢰도 매트릭스 생성
  • 최종 판정 및 상세 근거 제시

🚀 빠른 시작

1. 프로젝트 클론

git clone <repository-url>cd FactWave

2. 백엔드 설정

cd backend
pip install -e .# 또는 uv pip install -e . (더 빠름)# 환경변수 설정
cp example.env .env
# .env 파일에 필수 API 키 추가

3. 프론트엔드 설정

cd frontend
npm install

4. 실행

백엔드 서버 (터미널 1):

cd backend
python -m app.api.server # FastAPI WebSocket 서버 (포트 8000)

프론트엔드 개발 서버 (터미널 2):

cd frontend
npm run dev # Vite 개발 서버 (포트 5173)

5. Chrome 확장 프로그램 설치

  1. Chrome에서 chrome://extensions/ 열기
  2. "개발자 모드" 활성화
  3. "압축 해제된 확장 프로그램 로드" 클릭
  4. frontend/dist 폴더 선택

📁 프로젝트 구조

백엔드 아키텍처

backend/
├── app/
│ ├── agents/ # AI 에이전트 시스템
│ │ ├── base.py # FactWaveAgent 기본 클래스
│ │ ├── academic_agent.py # 학술 연구 전문가
│ │ ├── news_agent.py # 뉴스 검증 전문가
│ │ ├── statistics_agent.py # 통계 데이터 전문가
│ │ ├── logic_agent.py # 논리 검증 전문가
│ │ ├── social_agent.py # 소셜 미디어 전문가
│ │ └── super_agent.py # 최종 종합 코디네이터
│ │
│ ├── services/tools/ # 도메인별 연구 도구
│ │ ├── base_tool.py # EnhancedBaseTool (캐싱, 재시도)
│ │ ├── academic/ # 학술 도구
│ │ │ ├── arxiv_tool.py
│ │ │ ├── openalex_tool.py
│ │ │ └── wikipedia_tool.py
│ │ ├── news/ # 뉴스 도구
│ │ │ ├── naver_news_tool.py
│ │ │ ├── newsapi_tool.py
│ │ │ └── factcheck_google_tool.py
│ │ ├── statistics/ # 통계 도구
│ │ │ ├── kosis_search_tool.py
│ │ │ ├── fred_search_tool.py
│ │ │ ├── worldbank_search_tool.py
│ │ │ └── owid_enhanced_rag.py
│ │ ├── community/ # 커뮤니티 도구
│ │ │ ├── twitter_tool.py
│ │ │ └── youtube_tool.py
│ │ └── verification/ # 검증 도구
│ │ ├── ai_image_detector.py
│ │ └── youtube_video_analyzer.py
│ │
│ ├── core/
│ │ ├── crew.py # FactWaveCrew 메인 오케스트레이터
│ │ └── streaming_crew.py # WebSocket 스트리밍 지원
│ │
│ ├── api/
│ │ └── server.py # FastAPI WebSocket 서버
│ │
│ ├── config/
│ │ └── prompts.yaml # 중앙화된 프롬프트 관리
│ │
│ └── utils/
│ ├── llm_config.py # LLM 설정 (GPT-4.1-mini)
│ ├── prompt_loader.py # 동적 프롬프트 로딩
│ └── websocket_manager.py # WebSocket 이벤트 관리
│
├── owid_enhanced_vectordb/ # ChromaDB 벡터 데이터베이스
└── owid_datasets/ # 40+ OWID 데이터셋

프론트엔드 구조

frontend/
├── manifest.json # Chrome Extension Manifest V3
├── background.js # Service Worker
├── src/
│ ├── App.jsx # 메인 앱 컴포넌트
│ ├── components/
│ │ ├── Discussion.jsx # 토론 탭 (실시간 팩트체킹)
│ │ ├── Results.jsx # 결과 탭 (검증 결과 표시)
│ │ ├── Library.jsx # 라이브러리 탭 (저장된 검증)
│ │ ├── LoadingMessage.jsx # 로딩 애니메이션
│ │ ├── ImageAnalysisResult.jsx
│ │ └── YouTubeThumbnail.jsx
│ └── utils/
│ └── youtube.js # YouTube 유틸리티

🛠️ 핵심 구현 세부사항

에이전트 시스템

  • 기본 클래스: FactWaveAgent - 모든 에이전트의 부모 클래스
  • Step별 LLM: GPT-4.1-mini 사용, 단계별 온도/토큰 최적화
  • 도구 로깅: 실시간 도구 사용 모니터링 및 결과 추적
  • 독립 실행: Step 1에서 개별 Crew 인스턴스로 독립성 보장

연구 도구 특징

  • EnhancedBaseTool: 모든 도구의 기본 클래스
  • MD5 캐싱: 도구별 TTL 설정 (학술: 72h, 뉴스: 1h, 소셜: 30m)
  • HTTP 재시도: 지수 백오프로 안정성 확보
  • 속도 제한: API별 rate limiting 자동 관리
  • 우아한 실패: 도구 실패 시 시스템 중단 없이 계속 진행

RAG 시스템 (OWID)

  • ChromaDB: 영구 벡터 저장소
  • 40+ 데이터셋: 기후, 경제, 건강, 교육 등 사전 인덱싱
  • 하이브리드 검색: 벡터 유사도 + BM25 순위
  • 메타데이터 필터: 카테고리, 날짜, 국가별 필터링

WebSocket 통신 프로토콜

// 클라이언트 → 서버{"action": "start","statement": "검증할 문장"}// 서버 → 클라이언트{"type": "task_started|task_completed|agent_analysis|tool_call|final_result","step": "step1|step2|step3","agent": "academic|news|logic|social|statistics|super","content": {...},"timestamp": "ISO 8601"}

프롬프트 관리 (prompts.yaml)

  • 중앙화된 관리: 모든 에이전트 프롬프트 YAML 파일 관리
  • 핫 리로딩: 시스템 재시작 없이 프롬프트 수정 가능
  • Step별 템플릿: 단계별 맞춤형 프롬프트
  • 판정 옵션: 13가지 세분화된 판정 카테고리

🛠️ 기술 스택

백엔드

  • Python 3.12+ / UV 패키지 관리자
  • FastAPI - WebSocket API 서버
  • CrewAI - 멀티 에이전트 오케스트레이션 프레임워크
  • OpenAI GPT-4.1-mini - 메인 LLM (모든 Step에서 사용)
  • ChromaDB - 벡터 데이터베이스 (OWID RAG 시스템)
  • Pydantic - 구조화된 응답 스키마 검증
  • Rich - 터미널 UI 및 로깅 시각화

프론트엔드

  • React 19.1.0 - 최신 UI 프레임워크
  • Vite - 차세대 번들러
  • Tailwind CSS - 유틸리티 기반 스타일링
  • Chrome Extension Manifest V3 - 최신 확장 프로그램 표준
  • Service Worker - 백그라운드 처리

연구 도구 API

  • OpenAlex - 240M+ 학술 논문 (API키 불필요)
  • ArXiv - 수학/물리/CS 프리프린트 논문
  • Naver News API - 한국 뉴스 검색
  • NewsAPI - 80,000+ 글로벌 언론사
  • Google Fact Check API - ClaimReview 팩트체크 데이터베이스
  • Wikipedia API - 다국어 백과사전
  • KOSIS API - 한국 통계청
  • FRED API - 미국 연방준비제도 경제 데이터
  • World Bank API - 세계은행 개발 지표
  • Twitter API (twscrape) - 소셜 미디어 트렌드

🧪 테스트 및 개발

테스트 실행

# WebSocket 클라이언트 테스트cd backend
python test_websocket_client.py
# 개별 도구 테스트
python tests/test_tavily.py
python tests/test_tool_usage.py
python tests/test_youtube_tool.py
# 유닛 테스트 전체 실행
python -m pytest tests/
# CLI 인터페이스 테스트
python main.py

개발 워크플로우

# 백엔드 개발cd backend
python -m app.api.server # 포트 8000에서 서버 시작# 프론트엔드 개발 cd frontend
npm run dev # 포트 5173에서 개발 서버 시작
npm run build # 프로덕션 빌드
npm run build:watch # 빌드 감시 모드# 코드 품질 관리cd backend
ruff check .# 린팅 검사
ruff format .# 코드 포매팅cd frontend
npm run lint # ESLint 검사

성능 최적화 팁

  • 캐시 관리: .cache/ 디렉토리 정기 정리
  • 벡터 DB 재구성: python build_owid_index.py (데이터셋 업데이트 시)
  • 도구별 TTL: 학술(72h), 뉴스(1h), 소셜(30m)로 최적화
  • 동시 실행: Step 1에서 5개 에이전트 병렬 처리

🌍 사용 시나리오

1. 뉴스 기사 검증

입력: "2024년 한국 GDP 성장률이 3.2%를 기록했다"

  • 📰 뉴스 에이전트: 최신 경제 뉴스 검색
  • 📊 통계 에이전트: KOSIS, FRED 경제 지표 확인
  • 🤔 논리 에이전트: 수치의 합리성 분석

2. 과학적 주장 검증

입력: "비타민 C가 감기를 예방한다는 연구 결과가 발표되었다"

  • 📚 학술 에이전트: ArXiv, OpenAlex 논문 검색
  • 📰 뉴스 에이전트: 의학 뉴스 및 팩트체크 결과
  • 🤔 논리 에이전트: 과학적 방법론 평가

3. 소셜 트렌드 검증

입력: "최근 젊은층 사이에서 환경 보호 관심이 급증했다"

  • 👥 소셜 에이전트: Twitter 트렌드 분석
  • 📊 통계 에이전트: 환경 관련 통계 데이터
  • 📰 뉴스 에이전트: 환경 관련 보도 현황

📊 13가지 판정 카테고리

✅ 사실 계열

  • : 확실하게 사실 (95-100% 신뢰도)
  • 대체로_참: 대부분 사실 (75-95% 신뢰도)
  • 부분적_참: 일부만 사실 (50-75% 신뢰도)

❓ 판단 어려움 계열

  • 불확실: 증거 부족으로 판단 어려움
  • 정보부족: 검증할 충분한 정보 없음
  • 논란중: 전문가들 사이에 의견 분분

❌ 거짓 계열

  • 부분적_거짓: 일부가 거짓 (25-50% 거짓)
  • 대체로_거짓: 대부분 거짓 (5-25% 사실)
  • 거짓: 확실하게 거짓 (0-5% 사실)

⚠️ 기타 계열

  • 과장됨: 사실이지만 과장된 표현
  • 오해소지: 오해의 여지가 있는 표현
  • 맥락오류: 맥락에서 벗어난 주장
  • 시대착오: 과거에는 맞았지만 현재는 부정확

🔑 API 키 설정

필수 API 키

# .env 파일에 추가
OPENAI_API_KEY=your_openai_api_key # GPT-4.1-mini 사용
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret

선택적 API 키 (고도화 기능)

# 국제 뉴스 확장
NEWSAPI_KEY=your_newsapi_key
# Google 팩트체크 데이터베이스
GOOGLE_API_KEY=your_google_api_key
# 경제 통계 데이터 
FRED_API_KEY=your_fred_key
# 한국 통계청
KOSIS_API_KEY=your_kosis_key
# 소셜 미디어 분석 (고급 기능)# Twitter 계정 설정은 TWITTER_ACCOUNTS_GUIDE.md 참조

📚 추가 문서

🤝 기여하기

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📝 라이선스

MIT License - LICENSE 파일 참조

🙏 감사의 말

  • CrewAI - 멀티 에이전트 오케스트레이션
  • OpenAlex - 오픈 학술 논문 데이터베이스
  • Our World in Data - 글로벌 통계 데이터
  • 모든 오픈소스 기여자들

FactWave - AI 협업으로 진실을 밝히다 🌊

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages