666ghj/BettaFish

微舆:人人可用的多Agent舆情分析助手,打破信息茧房,还原舆情原貌,预测未来走向,辅助决策!从0实现,不依赖任何框架。

BettaFish – 다중 에이전트 소셜미디어 인사이트 플랫폼

무엇인가요 – BettaFish는 오픈소스이며 Python 기반의 시스템으로, Weibo, Xiaohongshu, TikTok 등 수십 개의 소셜미디어 플랫폼에서 공개된 여론을 수집, 분석, 보고하는 데 사용되는 여러 전문 AI 에이전트를 통합합니다. 사용자는 간단한 채팅 스타일의 질의를 통해 시스템과 상호작용하며, 플랫폼은 데이터 크롤링, 다중모달(텍스트 + 이미지 + 동영상) 분석, 감성 및 주제 모델링을 수행한 후, 완성도 높은 인터랙티브 HTML(또는 PDF/Markdown) 보고서를 생성하는 에이전트 파이프라인을 실행합니다.


핵심 구성 요소

엔진 역할 주요 업무
QueryEngine 광범위 검색 에이전트 LLM 기반 프롬프트를 사용해 웹 검색을 수행하고, 뉴스 및 댓글을 가져오며, 초기 발견 내용을 요약합니다.
MediaEngine 다중모달 에이전트 짧은 동영상/오디오, 이미지를 다운로드하고 분석하며, 검색 결과에서 구조화된 카드(날씨, 주식, 캘린더 등)를 추출합니다.
InsightEngine 개인 데이터 및 심층 감성 에이전트 사용자가 제공한 PostgreSQL/MySQL 저장소에 연결하고, 키워드 최적화된 쿼리를 실행하며, 파인튜닝된 감성 분석(BERT-LoRA, Qwen-3 등)을 수행합니다.
ReportEngine 보고서 생성기 에이전트의 출력을 수집하고, 마크다운 템플릿을 선택하며, 챕터 길이를 계획하고, JSON 기반 중간 표현(IR)을 검증한 후 인터랙티브 HTML 보고서를 렌더링합니다(WeasyPrint를 통해 PDF는 선택 사항).
ForumEngine 에이전트 협업 허브 "포럼"을 구현하여 LLM 호스팅 모더레이터가 세 개의 분석 에이전트 간의 논의를 조율함으로써 반복적인 정교화를 가능하게 하고, 단일 모델 편향을 피합니다.
MindSpider 크롤링 서브시스템 Playwright 기반 스파이더들로 지원되는 플랫폼에서 주제, 댓글, 동영상을 수집하며, 광범위한 주제 추출기와 심층 감성 크롤러를 포함합니다.

작동 방식 (고수준 흐름)

  1. 사용자 질의 – Flask 엔드포인트가 자연어 요청을 수신합니다 (예: "우한대학교의 명성 분석").
  2. 병렬 실행 – QueryEngine, MediaEngine, InsightEngine이 동시에 시작되며, 각각 고유한 도구 세트를 사용합니다.
  3. 초기 개요 – 에이전트들이 빠른 검색을 수행하고 간결한 요약을 반환합니다.
  4. 전략 계획 – 개요를 바탕으로 시스템은 문제를 하위 작업으로 분할하는 방식을 결정합니다.
  5. 반복적 포럼 루프 – ForumEngine이 에이전트를 모니터링하고, LLM 모더레이터가 더 깊은 검색을 유도하며, 에이전트들이 서로의 발견을 반영하고, 정지 조건이 충족될 때까지 루프를 반복합니다.
  6. 보고서 조립 – ReportEngine이 모든 중간 결과를 수집하고, JSON IR을 구성하고, 검증하고, 마크다운 템플릿을 선택하며, 최종 HTML(옵션으로 PDF/Markdown)을 렌더링합니다.

주요 기능

  • 10개 이상의 국내외 플랫폼에서 AI 기반 24시간 크롤링.
  • 하이브리드 분석: LLM 추론, 파인튜닝된 감성 모델, 전통적인 통계 방법을 결합.
  • 다중모달 기능 – 짧은 동영상, 이미지, 구조화된 검색 엔진 카드를 분석 가능.
  • 포럼 스타일의 에이전트 협업 – 논의를 주도하는 LLM이 여러 에이전트를 이끌어 더 풍부하고 균일하지 않은 인사이트를 도출.
  • 개인 데이터 통합 – 기업이 내부 데이터베이스를 공개 여론과 결합할 수 있는 안전한 연결 기능.
  • 모듈식, 가벼운 Python 설계 – 각 엔진은 별도 패키지에 있으며, 설정 변경 하나로 프롬프트, 도구, 모델을 교체 가능.
  • 한 번의 클릭으로 Docker 배포 및 각 엔진용 선택적 Streamlit 프론트엔드.
  • 보고서 생성 – SVG 차트를 포함한 인터랙티브 HTML 보고서, WeasyPrint를 통한 PDF 내보내기, 마크다운 백업.

시작하기 (Docker 빠른 시작)

# env 템플릿 복사 및 인증 정보 편집
cp .env.example .env
# 모든 서비스 시작 (Flask + PostgreSQL + 에이전트)
docker compose up -d
# 이후 UI 열기
open http://localhost:5000

개발 시에는 streamlit run SingleEngineApp/query_engine_streamlit_app.py 와 같이 각 엔진을 Streamlit으로 개별 실행할 수 있습니다.


확장성

  • 프롬프트 교체*/prompts/ 내의 어떤 에이전트 프롬프트 파일도 변경하여 시스템의 타겟을 브랜드 평판에서 금융 시장 분석 등으로 재설정 가능.
  • 모델 플러그인 – 모든 LLM 호출은 OpenAI 호환 래퍼를 사용하며, *_ENGINE_BASE_URL 환경 변수를 Azure, Anthropic, 또는 자체 호스팅 모델로 지정 가능.
  • 사용자 정의 도구tools/ 디렉터리에 새로운 검색 또는 미디어 추출 유틸리티를 추가하면 에이전트가 자동으로 인식합니다.

라이선스 및 커뮤니티

  • 라이선스: GPL-2.0 (see LICENSE).
  • 기여 방법: CONTRIBUTING.md 에 안내되어 있음.
  • 지원: Inferera의 LLM-API 후원; Anspire Open(검색, 파일 파싱, 브라우저 자동화)의 추가 인프라.
  • 데모 및 문서: 우한대학교에 대한 완전 실행 보고서가 final_reports/ 에 포함되어 있으며, README에 워크스루 비디오 링크 있음.

TL;DR

BettaFish는 공개 소셜미디어 데이터를 크롤링하고, 다중모달 및 감성 모델을 실행하며, 포럼 메커니즘을 통해 에이전트가 토론하고, 인터랙티브 보고서를 생성하는 완전 기능의 다중에이전트 여론 분석 엔진입니다. Python, Flask, Docker로 조율되며, 웹 UI를 통해 엔드유저와 개발자 모두에게 사용 가능합니다. 다른 도메인에 맞게 에이전트를 맞춤화하고 싶은 개발자에게도 적합합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트