보도자료, 정책 초안, 재무 보고서 하나를 업로드하면 수백 명의 고유한 성격을 가진 AI 에이전트가 소셜 미디어에서 어떻게 반응하는지 시간 단위로 시뮬레이션하는 엔진이 있다. MiroFish-Offline은 중국에서 개발된 멀티에이전트 소셜 반응 시뮬레이션 프레임워크 MiroFish의 영어·완전 로컬 포크다. 원본이 의존했던 클라우드 서비스(Zep Cloud, DashScope)를 Neo4j Community Edition과 Ollama로 교체해 인터넷 연결 없이 동작한다.
원본 MiroFish와의 차이
| 항목 | 원본 MiroFish | MiroFish-Offline |
|---|---|---|
| UI 언어 | 중국어 | 영어 (1,000개 이상 문자열 번역) |
| 그래프 메모리 | Zep Cloud | Neo4j Community Edition 5.15 |
| LLM | DashScope / OpenAI API | Ollama (qwen2.5, llama3 등) |
| 임베딩 | Zep Cloud | nomic-embed-text (Ollama) |
| 클라우드 의존성 | 필수 | 없음 |
시뮬레이션 원리
문서를 업로드하면 에이전트들이 고유한 성격(페르소나)을 바탕으로 게시물을 작성하고 서로 논쟁하거나 의견을 바꾸는 과정이 시간별로 진행된다. 그래프 메모리(Neo4j)가 에이전트 간 관계와 기억을 추적하고, 로컬 LLM이 각 에이전트의 반응을 생성한다.
시뮬레이션 엔진은 CAMEL-AI 팀의 OASIS 프레임워크 위에 구축되었다.
아키텍처
Flask API
└── Service Layer (EntityReader, GraphToolsService, GraphMemoryUpdater)
└── GraphStorage (추상 인터페이스)
└── Neo4jStorage
├── EmbeddingService ← Ollama (nomic-embed-text)
├── NERExtractor ← Ollama LLM
└── SearchService (벡터 0.7 + BM25 0.3 하이브리드)
└── Neo4j CE 5.15핵심 설계 원칙:
GraphStorage가 추상 인터페이스로 구현되어 Neo4j 이외의 그래프 DB로 교체 가능- Flask
app.extensions를 통한 의존성 주입 — 전역 싱글턴 없음 - 하이브리드 검색: 벡터 유사도 70% + BM25 키워드 검색 30%
하드웨어 요구사항
Neo4j와 Ollama를 로컬에서 구동하므로 상당한 리소스가 필요하다:
- RAM 16GB 이상 권장
- Ollama 모델(qwen2.5, llama3 등) 저장 공간
빠른 시작
Docker를 사용하는 방법이 가장 간단하다:
git clone https://github.com/nikmcfly/MiroFish-Offline
cd MiroFish-Offline
docker compose up -d누가 쓰면 좋은가
- 신제품 발표·정책 변경 전 여론 반응을 사전에 테스트하고 싶은 팀
- 소셜 미디어 시뮬레이션 연구를 완전 로컬 환경에서 수행하려는 연구자
- 클라우드 API 비용 없이 멀티에이전트 소셜 다이나믹스를 실험하려는 개발자
라이선스
Apache 2.0 (원본 MiroFish 라이선스 계승)
참고 자료
- nikmcfly/MiroFish-Offline — GitHub 공식 저장소