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 기반 스파이더들로 지원되는 플랫폼에서 주제, 댓글, 동영상을 수집하며, 광범위한 주제 추출기와 심층 감성 크롤러를 포함합니다. |
작동 방식 (고수준 흐름)
- 사용자 질의 – Flask 엔드포인트가 자연어 요청을 수신합니다 (예: "우한대학교의 명성 분석").
- 병렬 실행 – QueryEngine, MediaEngine, InsightEngine이 동시에 시작되며, 각각 고유한 도구 세트를 사용합니다.
- 초기 개요 – 에이전트들이 빠른 검색을 수행하고 간결한 요약을 반환합니다.
- 전략 계획 – 개요를 바탕으로 시스템은 문제를 하위 작업으로 분할하는 방식을 결정합니다.
- 반복적 포럼 루프 – ForumEngine이 에이전트를 모니터링하고, LLM 모더레이터가 더 깊은 검색을 유도하며, 에이전트들이 서로의 발견을 반영하고, 정지 조건이 충족될 때까지 루프를 반복합니다.
- 보고서 조립 – 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를 통해 엔드유저와 개발자 모두에게 사용 가능합니다. 다른 도메인에 맞게 에이전트를 맞춤화하고 싶은 개발자에게도 적합합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트