从零构建多智能体舆情分析系统实战:微舆(BettaFish)全流程解析
核心问题: 如何从零搭建一个可自动化、多智能体驱动、支持多模态分析的舆情分析系统?
在信息爆炸的时代,想真正理解网络舆论的脉动,光靠关键词监控早已不够。
本文将带你从实战角度,完整了解一个从零实现的多智能体舆情分析系统——「微舆(BettaFish)」,并手把手演示如何部署、运行、定制它。
这不是一个简单的爬虫项目,而是一套融合了 AI 智能体协作、情感分析、数据挖掘与可视化报告生成 的完整系统。
一、项目概述:小而强大的“微舆”系统
核心问题: 微舆是什么?它解决了传统舆情分析系统的哪些痛点?
“微舆”是一个由零开始构建的创新型多智能体舆情分析系统。
它的目标不是简单地抓取数据,而是还原舆情原貌、预测趋势、辅助决策。
它能像与你聊天一样,通过自然语言提问启动分析,随后多个智能体(Agent)自动协作,跨平台搜索、筛选、分析,并最终输出一份结构化、图文并茂的舆情报告。
🧩 微舆的六大核心优势
-
AI 驱动的全域监控
-
7×24 小时自动爬取国内外主流平台(微博、小红书、抖音、快手等)。 -
支持下钻评论区,真实还原大众情绪。
-
-
复合分析引擎
-
结合微调模型、统计模型与 LLM 智能体,实现多角度交叉验证。 -
确保结论既“懂语言”,又“懂数据”。
-
-
强大的多模态能力
-
不仅能分析文本,还能解析视频、图像等内容。 -
支持提取天气、股票、日历等结构化信息。
-
-
Agent“论坛”协作机制
-
多个 Agent 以“论坛辩论”形式互动。 -
避免单一模型的偏见,让分析更全面。
-
-
公私域数据融合
-
可无缝连接企业内部数据库,打通外部舆情与内部数据壁垒。 -
实现真正的“业务智能 + 舆情智能”。
-
-
轻量化与高扩展性框架
-
全 Python 模块化实现,支持一键部署与自定义扩展。
-
💡 作者反思:
传统舆情系统往往停留在“监控”层面,而“微舆”更像一个具备独立思考能力的分析师。
它不仅告诉你“发生了什么”,还尝试回答“为什么发生、接下来会怎样”。
二、系统架构:多智能体的协同大脑
核心问题: “微舆”系统内部是如何实现多智能体协作与任务分工的?
整个系统采用 模块化多智能体架构,核心由四个主要 Agent 和一个协作引擎组成:
| 模块 | 功能说明 | 关键词 |
|---|---|---|
| Insight Agent | 深入挖掘私有数据库,提炼洞察 | 数据挖掘 / 内部分析 |
| Media Agent | 多模态理解视频与图片 | 多模态 / 图像理解 |
| Query Agent | 精准搜索国内外信息源 | 信息检索 / 搜索聚合 |
| Report Agent | 生成结构化舆情报告 | 模板生成 / 自动报告 |
| Forum Engine | 组织 Agent 辩论、总结结果 | 智能协作 / 主持机制 |
📊 完整分析流程
| 步骤 | 名称 | 主要操作 | 参与组件 |
|---|---|---|---|
| 1 | 用户提问 | 接收查询请求 | Flask 主应用 |
| 2 | 并行启动 | 启动多个 Agent | Query / Media / Insight |
| 3 | 初步分析 | 各 Agent 使用专属工具搜索 | 各 Agent |
| 4 | 策略制定 | 制定研究方向与搜索策略 | 决策模块 |
| 5 | 论坛循环 | ForumEngine 主持多轮讨论 | ForumEngine + Agents |
| 6 | 结果整合 | 汇总所有分析与对话 | Report Agent |
| 7 | 报告生成 | 自动选择模板并输出 HTML 报告 | 模板引擎 |
系统示意图如下:

图片来源:项目自带文档
🧠 作者见解:
ForumEngine 的“辩论式协作”是这个系统的灵魂。
它让多个 Agent 互相“挑战”彼此观点,而非简单拼接结果。
这种多轮反思机制,让模型分析更具逻辑闭环与自洽性。
三、实战部署:从环境到运行的全流程指南
核心问题: 如何在本地或服务器上部署“微舆”系统?
这一节我们将完整演示部署步骤,帮助你在最短时间内搭建并运行系统。
🧩 环境要求
| 组件 | 要求 |
|---|---|
| 操作系统 | Windows / Linux / macOS |
| Python | 3.9+(推荐 3.11) |
| Conda | Anaconda 或 Miniconda |
| 数据库 | MySQL(可使用云数据库服务) |
| 内存 | 2GB 以上 |
1. 创建 Conda 环境
conda create -n weiyu_env python=3.11
conda activate weiyu_env
2. 安装依赖包
pip install -r requirements.txt
💡 如果算力有限,可注释掉
requirements.txt中的“机器学习”部分,系统将使用轻量模型运行。
3. 安装 Playwright 浏览器驱动
爬虫模块依赖浏览器内核执行:
playwright install chromium
4. 系统配置:填写 API Key 与数据库
编辑 config.py,配置数据库与 LLM:
# MySQL配置
DB_HOST = "localhost"
DB_PORT = 3306
DB_USER = "your_username"
DB_PASSWORD = "your_password"
DB_NAME = "your_db_name"
# LLM配置(示例)
INSIGHT_ENGINE_API_KEY = "your_api_key"
INSIGHT_ENGINE_BASE_URL = "https://api.moonshot.cn/v1"
INSIGHT_ENGINE_MODEL_NAME = "kimi-k2-0711-preview"
✅ 兼容所有 OpenAI 接口格式的模型提供商,只需替换 Base URL 与 Model Name。
5. 初始化数据库
方案一:使用本地 MySQL
cd MindSpider
python schema/init_database.py
方案二:申请云数据库(推荐)
项目团队提供每日 10 万+ 实时舆情数据的云数据库服务(2025 年 10 月后暂停申请)。
6. 启动主系统
conda activate weiyu_env
python app.py
访问 👉http://localhost:5000 即可打开主界面。
常见问题
-
若 Streamlit 占用端口,可通过任务管理器终止进程。 -
若远程部署显示异常,可参考项目 PR#45 修复方案。
四、模块拆解:Agent 内部逻辑详解
核心问题: 各 Agent 内部是如何执行任务与协同工作的?
系统以“责任分层”思路实现,每个 Agent 都是独立的可扩展单元:
Weibo_PublicOpinion_AnalysisSystem/
├── QueryEngine/ # 搜索引擎 Agent
├── MediaEngine/ # 多模态理解 Agent
├── InsightEngine/ # 私有数据挖掘 Agent
├── ReportEngine/ # 报告生成 Agent
└── ForumEngine/ # 论坛协作引擎
🔍 QueryEngine:广度搜索核心
-
支持国内外网页聚合搜索。 -
内部包含 tools/、nodes/、llms/等子模块。 -
参数可调节最大搜索数量与反思轮数:
class Config:
max_reflections = 2
max_search_results = 15
max_content_length = 8000
🖼 MediaEngine:多模态理解中枢
-
解析短视频与图像内容。 -
提取视觉要素与文本嵌入,支持跨模态检索。 -
可设定网页搜索限制与综合搜索数量。
💡 InsightEngine:内部洞察分析师
-
与私有数据库交互,执行关键词优化与情感分析。
-
内置中间件:
-
keyword_optimizer.py(Qwen关键词优化) -
sentiment_analyzer.py(情感分类器) -
search.py(数据库查询)
-
情感分析配置示例:
SENTIMENT_CONFIG = {
'model_type': 'multilingual',
'confidence_threshold': 0.8,
'batch_size': 32,
'max_sequence_length': 512,
}
📑 ReportEngine:报告生成中心
-
动态模板选择机制(Markdown / HTML)。 -
自动匹配主题(如“品牌舆情”“热点事件”)。 -
输出多轮生成的报告文件(存储于 final_reports/)。
🧭 ForumEngine:智能体的辩论场
ForumEngine 是微舆最具创新性的模块。
它让不同 Agent 通过“主持人模型”协作讨论,每一轮都由 LLM 生成总结并推动下一步研究。
🗣️ 作者反思:
ForumEngine 的设计让 AI 从“工具”变成了“合作者”。
多智能体的思想碰撞让系统的结论更具可信度与多样性。
五、情感分析与多语言模型实操
核心问题: 如何选择与使用不同的情感分析模型?
系统内置多种模型方案,可根据应用场景自由切换:
| 模型类型 | 特点 | 适用场景 |
|---|---|---|
| 多语言模型 | 自动检测语言,跨国舆情分析 | 全球社媒 |
| 小参数 Qwen3 | 轻量高效,适合本地运行 | 中小型部署 |
| BERT 微调 | 中文精度高 | 国内舆情 |
| GPT-2 LoRA | 强生成能力 | 舆情生成式分析 |
| 传统机器学习 | 算法透明 | 快速验证与教学 |
示例命令:
cd SentimentAnalysisModel/WeiboMultilingualSentiment
python predict.py --text "这款产品真的很棒" --lang "zh"
六、扩展与定制:让系统为你而生
核心问题: 如何接入自定义数据库与报告模板?
🧱 接入业务数据库
在 config.py 中添加业务库配置:
BUSINESS_DB_HOST = "your_business_db_host"
BUSINESS_DB_NAME = "your_business_database"
创建自定义工具:
class CustomBusinessDBTool:
def search_business_data(self, query, table):
pass
然后在 InsightEngine/agent.py 中调用:
self.custom_db_tool.search_business_data(query, "feedback_table")
🧩 自定义报告模板
-
在 ReportEngine/report_template/目录添加.md或.txt模板。 -
或直接在 Web 界面上传。 -
系统将自动匹配最相关模板进行报告生成。
七、进阶配置与调优
核心问题: 如何通过参数调整提升系统性能?
-
调整 Agent 搜索上限、反思轮次、内容长度。 -
修改情感分析阈值与批处理大小。 -
替换 LLM 模型(任意兼容 OpenAI 接口的模型均可)。
示例调用方式:
from openai import OpenAI
client = OpenAI(api_key="your_api_key",
base_url="https://api.siliconflow.cn/v1")
response = client.chat.completions.create(
model="Qwen/Qwen2.5-72B-Instruct",
messages=[{"role": "user", "content": "当前市场的公众情绪趋势"}]
)
八、开发与贡献
核心问题: 如何参与项目开发与维护?
贡献步骤
-
Fork 仓库 -
创建分支 feature/your-feature -
提交修改并推送 -
发起 Pull Request
开发规范
-
遵循 PEP8 -
提交信息双语说明 -
新功能需附测试用例与文档更新
九、未来计划:让舆情分析具备预测力
核心问题: “微舆”的下一步是什么?
当前系统已实现“舆情采集—分析—报告生成”三大核心能力。
团队下一步将基于海量时序舆情数据,引入 图神经网络(GNN)与时序预测模型,实现真正的数据驱动舆情趋势预测。
🔍 一页速览(One-page Summary)
| 分类 | 内容概要 |
|---|---|
| 系统名称 | 微舆(BettaFish)多智能体舆情分析系统 |
| 核心功能 | 自动采集、智能分析、报告生成 |
| 技术亮点 | 多智能体协作 / 多模态解析 / 论坛机制 |
| 主要模块 | Query、Media、Insight、Report、Forum |
| 环境依赖 | Python 3.9+、MySQL、Playwright |
| 运行入口 | python app.py |
| 输出结果 | HTML 舆情分析报告 |
| 扩展方式 | 自定义数据库、模板与模型 |
🧭 实用总结与操作清单
-
✅ 创建 Conda 环境并安装依赖 -
✅ 配置数据库与 API Key -
✅ 初始化数据库(本地或云端) -
✅ 启动主应用或单独 Agent -
✅ 调整配置文件以优化性能 -
✅ 运行爬虫系统收集数据 -
✅ 自动生成可视化舆情报告
💬 常见问答(FAQ)
Q1:系统必须使用 GPU 吗?
A:非必须。默认模型支持 CPU 运行,适合轻量部署。
Q2:可以分析英文或多语言舆情吗?
A:支持多语言模型,能识别并分析多国社媒文本。
Q3:如何自定义报告样式?
A:在 ReportEngine/report_template/ 中新增模板文件即可。
Q4:ForumEngine 的主持人模型是什么?
A:它是一个 LLM,用于总结与引导多 Agent 的讨论。
Q5:数据库可以替换为 PostgreSQL 吗?
A:当前版本默认 MySQL,但代码层结构开放,可自行适配。
Q6:如何查看爬虫运行结果?
A:所有采集数据存储在 MindSpider 的数据库中,可生成日志与图表。
Q7:报告生成失败怎么办?
A:检查模板文件路径与 Flask 接口状态;ReportEngine 需正常启动。
Q8:是否支持远程服务器部署?
A:支持,可通过 Conda 环境+Flask 服务在云端运行。
✍️ 作者结语:
“微舆”展示了一个极具前瞻性的方向:
让多智能体不仅协作完成任务,更像一支研究团队那样思考、讨论、反思。在 AI 驱动的新时代,舆情分析将不再只是数据的堆积,而是洞察与理解的艺术。

