从零构建多智能体舆情分析系统实战:微舆(BettaFish)全流程解析

核心问题: 如何从零搭建一个可自动化、多智能体驱动、支持多模态分析的舆情分析系统?

在信息爆炸的时代,想真正理解网络舆论的脉动,光靠关键词监控早已不够。
本文将带你从实战角度,完整了解一个从零实现的多智能体舆情分析系统——「微舆(BettaFish)」,并手把手演示如何部署、运行、定制它。
这不是一个简单的爬虫项目,而是一套融合了 AI 智能体协作、情感分析、数据挖掘与可视化报告生成 的完整系统。


一、项目概述:小而强大的“微舆”系统

核心问题: 微舆是什么?它解决了传统舆情分析系统的哪些痛点?

“微舆”是一个由零开始构建的创新型多智能体舆情分析系统
它的目标不是简单地抓取数据,而是还原舆情原貌、预测趋势、辅助决策

它能像与你聊天一样,通过自然语言提问启动分析,随后多个智能体(Agent)自动协作,跨平台搜索、筛选、分析,并最终输出一份结构化、图文并茂的舆情报告。

🧩 微舆的六大核心优势

  1. AI 驱动的全域监控

    • 7×24 小时自动爬取国内外主流平台(微博、小红书、抖音、快手等)。
    • 支持下钻评论区,真实还原大众情绪。
  2. 复合分析引擎

    • 结合微调模型、统计模型与 LLM 智能体,实现多角度交叉验证。
    • 确保结论既“懂语言”,又“懂数据”。
  3. 强大的多模态能力

    • 不仅能分析文本,还能解析视频、图像等内容。
    • 支持提取天气、股票、日历等结构化信息。
  4. Agent“论坛”协作机制

    • 多个 Agent 以“论坛辩论”形式互动。
    • 避免单一模型的偏见,让分析更全面。
  5. 公私域数据融合

    • 可无缝连接企业内部数据库,打通外部舆情与内部数据壁垒。
    • 实现真正的“业务智能 + 舆情智能”。
  6. 轻量化与高扩展性框架

    • 全 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": "当前市场的公众情绪趋势"}]
)

八、开发与贡献

核心问题: 如何参与项目开发与维护?

贡献步骤

  1. Fork 仓库
  2. 创建分支 feature/your-feature
  3. 提交修改并推送
  4. 发起 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 驱动的新时代,舆情分析将不再只是数据的堆积,而是洞察与理解的艺术。