Skip to content

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

License

Notifications You must be signed in to change notification settings

666ghj/BettaFish

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
BettaFish Logo

666ghj%2FBettaFish | Trendshift

666ghj%2FBettaFish | Trendshift666ghj%2FBettaFish | Trendshift666ghj%2FBettaFish | Trendshift

666ghj%2FBettaFish | Trendshift

GitHub Stars GitHub Watchers GitHub Forks GitHub Issues GitHub Pull Requests

GitHub License Version Docker

English | 中文文档

🌟 加入官方交流群

欢迎加入我们的技术交流QQ群! BettaFish 技术交流群二维码

⚡ 项目概述

微舆” 是一个从0实现的创新型 多智能体 舆情分析系统,帮助大家破除信息茧房,还原舆情原貌,预测未来走向,辅助决策。用户只需像聊天一样提出分析需求,智能体开始全自动分析 国内外30+主流社媒 与 数百万条大众评论。

“微舆”谐音“微鱼”,BettaFish是一种体型很小但非常好斗、漂亮的鱼,它象征着“小而强大,不畏挑战”

查看系统以“武汉大学舆情”为例,生成的研究报告:武汉大学品牌声誉深度分析报告

查看系统以“武汉大学舆情”为例,一次完整运行的视频:视频-武汉大学品牌声誉深度分析报告

不仅仅体现在报告质量上,相比同类产品,我们拥有🚀六大优势:

  1. AI驱动的全域监控:AI爬虫集群7x24小时不间断作业,全面覆盖微博、小红书、抖音、快手等10+国内外关键社媒。不仅实时捕获热点内容,更能下钻至海量用户评论,让您听到最真实、最广泛的大众声音。

  2. 超越LLM的复合分析引擎:我们不仅依赖设计的5类专业Agent,更融合了微调模型、统计模型等中间件。通过多模型协同工作,确保了分析结果的深度、准度与多维视角。

  3. 强大的多模态能力:突破图文限制,能深度解析抖音、快手等短视频内容,并精准提取现代搜索引擎中的天气、日历、股票等结构化多模态信息卡片,让您全面掌握舆情动态。

  4. Agent“论坛”协作机制:为不同Agent赋予独特的工具集与思维模式,引入辩论主持人模型,通过“论坛”机制进行链式思维碰撞与辩论。这不仅避免了单一模型的思维局限与交流导致的同质化,更催生出更高质量的集体智能与决策支持。

  5. 公私域数据无缝融合:平台不仅分析公开舆情,还提供高安全性的接口,支持您将内部业务数据库与舆情数据无缝集成。打通数据壁垒,为垂直业务提供“外部趋势+内部洞察”的强大分析能力。

  6. 轻量化与高扩展性框架:基于纯Python模块化设计,实现轻量化、一键式部署。代码结构清晰,开发者可轻松集成自定义模型与业务逻辑,实现平台的快速扩展与深度定制。

始于舆情,而不止于舆情。“微舆”的目标,是成为驱动一切业务场景的简洁通用的数据分析引擎。

举个例子. 你只需简单修改Agent工具集的api参数与prompt,就可以把他变成一个金融领域的市场分析系统

附一个比较活跃的L站项目讨论帖:https://linux.do/t/topic/1009280

查看L站佬友做的测评 开源项目(微舆)与manus|minimax|ChatGPT对比

banner

告别传统的数据看板,在“微舆”,一切由一个简单的问题开始,您只需像对话一样,提出您的分析需求

🪄 赞助商

LLM模型API赞助:666ghj%2FBettaFish | Trendshift

有赞助LLM算力福利!编程拼车codecodex.ai;编程算力VibeCodingAPI.ai:666ghj%2FBettaFish | Trendshift
  1. 所罗门博客LionCC.ai已更新《BettaFish 微舆系统 - LionCC API 部署配置完全指南》正在二开优化一键部署和云服务器调用方案。
  2. VibeCodingapi.ai狮子算力平台已经适配《BettaFish 微舆系统》所有LLM模型含claude code和openai codex和gemini cli编程开发三巨头算力。额度价格,只要一比一(100元等于100美刀额度)
  3. Codecodex.ai狮子编程拼车系统,已实现无IP门槛绕过claude code和openai codex封锁,按官方部署教程后切换BASE_URL调用地址和Token key调用密钥即可使用最强编程模型。

所罗门LionCC赞助BettaFish 微舆福利:打开codecodex.ai狮子编程频道扫码加入微信社群,注册VibeCodingapi.ai狮子算力,统一送20刀API额度(仅限前一千名)

按用量付费的企业级AI资源平台,提供市场上全面的AI模型和API,以及多种在线AI应用:666ghj%2FBettaFish | Trendshift banner302.AI是一个按用量付费的企业级AI资源平台,提供市场上最新、最全面的AI模型和API,以及多种开箱即用的在线AI应用。
AI联网搜索、文件解析及网页内容抓取等智能体核心能力提供商:666ghj%2FBettaFish | Trendshift 安思派开放平台(Anspire Open)是面向智能体时代的领先的基础设施提供商。我们为开发者提供构建强大智能体所需的核心能力栈,现已上线AI联网搜索【多版本,极具竞争力的价格】、文件解析【限免】及网页内容抓取【限免】、云端浏览器自动化(Anspire Browser Agent)【内测】、多轮改写等服务,持续为智能体连接并操作复杂的数字世界提供坚实基础。可无缝集成至Dify、Coze、元器等主流智能体平台。通过透明点数计费体系与模块化设计,为企业提供高效、低成本的定制化支持,加速智能化升级进程。

🏗️ 系统架构

整体架构图

Insight Agent 私有数据库挖掘:私有舆情数据库深度分析AI代理

Media Agent 多模态内容分析:具备强大多模态能力的AI代理

Query Agent 精准信息搜索:具备国内外网页搜索能力的AI代理

Report Agent 智能报告生成:内置模板的多轮报告生成AI代理

banner

一次完整分析流程

步骤 阶段名称 主要操作 参与组件 循环特性
1 用户提问 Flask主应用接收查询 Flask主应用 -
2 并行启动 三个Agent同时开始工作 Query Agent、Media Agent、Insight Agent -
3 初步分析 各Agent使用专属工具进行概览搜索 各Agent + 专属工具集 -
4 策略制定 基于初步结果制定分块研究策略 各Agent内部决策模块 -
5-N 循环阶段 论坛协作 + 深度研究 ForumEngine + 所有Agent 多轮循环
5.1 深度研究 各Agent基于论坛主持人引导进行专项搜索 各Agent + 反思机制 + 论坛引导 每轮循环
5.2 论坛协作 ForumEngine监控Agent发言并生成主持人总结 ForumEngine + LLM主持人 每轮循环
5.3 交流融合 各Agent根据讨论调整研究方向 各Agent + forum_reader工具 每轮循环
N+1 结果整合 Report Agent收集所有分析结果和论坛内容 Report Agent -
N+2 报告生成 动态选择模板和样式,多轮生成最终报告 Report Agent + 模板引擎 -

🆕 Report Engine 新增能力

  • IR → HTML/PDF 渲染链路:新增 ReportEngine/renderers/html_renderer.pypdf_renderer.py,内置思源宋体子集和MathJax/Chart.js/html2canvas等离线依赖,report_engine_only.py 支持纯命令行生成报告。
  • PDF 导出接口:新增 /api/report/export/pdf/<task_id>/api/report/export/pdf-from-ir,导出前自动检查 Pango 依赖并给出可读提示,前端一键触发即可获得矢量PDF。
  • Chart.js 安全校验utils/chart_validator.py + LLM 修复链路确保图表数据合法,防止错误配置导致前端崩溃或XSS注入。
  • 多源日志控制台:前端控制台双缓冲虚拟列表 + SSE 历史补偿,后端提供 /api/report/log/api/report/log/clear 便捷查看/清空日志。
  • 数据清洗回归测试tests/test_report_engine_sanitization.py 覆盖章节表格的容错修复,保证渲染端稳定。

项目代码结构树

BettaFish/
├── QueryEngine/                            # 国内外新闻广度搜索Agent
│   ├── agent.py                            # Agent主逻辑,协调搜索与分析流程
│   ├── llms/                               # LLM接口封装
│   │   └── base.py                         # 统一的OpenAI兼容客户端
│   ├── nodes/                              # 处理节点:搜索、格式化、总结等
│   │   ├── base_node.py                    # 基础节点类
│   │   ├── search_node.py                  # 搜索节点
│   │   ├── formatting_node.py              # 格式化节点
│   │   ├── report_structure_node.py        # 报告结构节点
│   │   └── summary_node.py                 # 总结节点
│   ├── tools/                              # 搜索工具
│   │   └── search.py                       # 网页搜索工具集
│   ├── utils/                              # 工具函数
│   │   ├── config.py                       # 配置管理
│   │   └── text_processing.py              # 文本处理工具
│   ├── state/                              # 状态管理
│   │   └── state.py                        # Agent状态定义
│   ├── prompts/                            # 提示词模板
│   │   └── prompts.py                      # 各类提示词
│   └── __init__.py
├── MediaEngine/                            # 强大的多模态理解Agent
│   ├── agent.py                            # Agent主逻辑,处理视频/图片等多模态内容
│   ├── llms/                               # LLM接口封装
│   │   └── base.py                         # 统一的OpenAI兼容客户端
│   ├── nodes/                              # 处理节点:搜索、格式化、总结等
│   │   ├── base_node.py                    # 基础节点类
│   │   ├── search_node.py                  # 搜索节点
│   │   ├── formatting_node.py              # 格式化节点
│   │   ├── report_structure_node.py        # 报告结构节点
│   │   └── summary_node.py                 # 总结节点
│   ├── tools/                              # 多模态搜索工具
│   │   └── search.py                       # 多模态内容搜索工具集
│   ├── utils/                              # 工具函数
│   │   ├── config.py                       # 配置管理
│   │   └── text_processing.py              # 文本处理工具
│   ├── state/                              # 状态管理
│   │   └── state.py                        # Agent状态定义
│   ├── prompts/                            # 提示词模板
│   │   └── prompts.py                      # 各类提示词
│   └── __init__.py
├── InsightEngine/                          # 私有数据库挖掘Agent
│   ├── agent.py                            # Agent主逻辑,协调数据库查询与分析
│   ├── llms/                               # LLM接口封装
│   │   └── base.py                         # 统一的OpenAI兼容客户端
│   ├── nodes/                              # 处理节点:搜索、格式化、总结等
│   │   ├── base_node.py                    # 基础节点类
│   │   ├── search_node.py                  # 搜索节点
│   │   ├── formatting_node.py              # 格式化节点
│   │   ├── report_structure_node.py        # 报告结构节点
│   │   └── summary_node.py                 # 总结节点
│   ├── tools/                              # 数据库查询和分析工具
│   │   ├── keyword_optimizer.py            # Qwen关键词优化中间件
│   │   ├── search.py                       # 数据库操作工具集(话题搜索、评论获取等)
│   │   └── sentiment_analyzer.py           # 情感分析集成工具
│   ├── utils/                              # 工具函数
│   │   ├── config.py                       # 配置管理
│   │   ├── db.py                           # SQLAlchemy异步引擎与只读查询封装
│   │   └── text_processing.py              # 文本处理工具
│   ├── state/                              # 状态管理
│   │   └── state.py                        # Agent状态定义
│   ├── prompts/                            # 提示词模板
│   │   └── prompts.py                      # 各类提示词
│   └── __init__.py
├── ReportEngine/                           # 多轮报告生成Agent
│   ├── agent.py                            # 总调度器:模板选择→布局→篇幅→章节→渲染
│   ├── flask_interface.py                  # Flask/SSE入口,管理任务排队与流式事件
│   ├── llms/                               # OpenAI兼容LLM封装
│   │   └── base.py                         # 统一的流式/重试客户端
│   ├── core/                               # 核心功能:模板解析、章节存储、文档装订
│   │   ├── template_parser.py              # Markdown模板切片与slug生成
│   │   ├── chapter_storage.py              # 章节run目录、manifest与raw流写入
│   │   └── stitcher.py                     # Document IR装订器,补齐锚点/元数据
│   ├── ir/                                 # 报告中间表示(IR)契约与校验
│   │   ├── schema.py                       # 块/标记Schema常量定义
│   │   └── validator.py                    # 章节JSON结构校验器
│   ├── nodes/                              # 全流程推理节点
│   │   ├── base_node.py                    # 节点基类+日志/状态钩子
│   │   ├── template_selection_node.py      # 模板候选收集与LLM筛选
│   │   ├── document_layout_node.py         # 标题/目录/主题设计
│   │   ├── word_budget_node.py             # 篇幅规划与章节指令生成
│   │   └── chapter_generation_node.py      # 章节级JSON生成+校验
│   ├── prompts/                            # 提示词库与Schema说明
│   │   └── prompts.py                      # 模板选择/布局/篇幅/章节提示词
│   ├── renderers/                          # IR渲染器
│   │   ├── html_renderer.py                # Document IR → 交互式HTML
│   │   ├── pdf_renderer.py                 # HTML → PDF导出(WeasyPrint)
│   │   ├── pdf_layout_optimizer.py         # PDF布局优化器
│   │   └── chart_to_svg.py                 # 图表转SVG工具
│   ├── state/                              # 任务/元数据状态模型
│   │   └── state.py                        # ReportState与序列化工具
│   ├── utils/                              # 配置与辅助工具
│   │   ├── config.py                       # Pydantic Settings与打印助手
│   │   ├── dependency_check.py             # 依赖检查工具
│   │   ├── json_parser.py                  # JSON解析工具
│   │   ├── chart_validator.py              # 图表校验工具
│   │   └── chart_repair_api.py             # 图表修复API
│   ├── report_template/                    # Markdown模板库
│   │   ├── 企业品牌声誉分析报告.md
│   │   └── ...
│   └── __init__.py
├── ForumEngine/                            # 论坛引擎:Agent协作机制
│   ├── monitor.py                          # 日志监控和论坛管理核心
│   ├── llm_host.py                         # 论坛主持人LLM模块
│   └── __init__.py
├── MindSpider/                             # 社交媒体爬虫系统
│   ├── main.py                             # 爬虫主程序入口
│   ├── config.py                           # 爬虫配置文件
│   ├── BroadTopicExtraction/               # 话题提取模块
│   │   ├── main.py                         # 话题提取主程序
│   │   ├── database_manager.py             # 数据库管理器
│   │   ├── get_today_news.py               # 今日新闻获取
│   │   └── topic_extractor.py              # 话题提取器
│   ├── DeepSentimentCrawling/              # 深度舆情爬取模块
│   │   ├── main.py                         # 深度爬取主程序
│   │   ├── keyword_manager.py              # 关键词管理器
│   │   ├── platform_crawler.py             # 平台爬虫管理
│   │   └── MediaCrawler/                   # 媒体爬虫核心(微博/抖音/小红书等)
│   │       ├── main.py
│   │       ├── config/                     # 各平台配置
│   │       ├── media_platform/             # 各平台爬虫实现
│   │       └── ...
│   └── schema/                             # 数据库结构定义
│       ├── db_manager.py                   # 数据库管理器
│       ├── init_database.py                # 数据库初始化脚本
│       ├── mindspider_tables.sql           # 数据库表结构SQL
│       ├── models_bigdata.py               # 大规模媒体舆情表的SQLAlchemy映射
│       └── models_sa.py                    # DailyTopic/Task等扩展表ORM模型
├── SentimentAnalysisModel/                 # 情感分析模型集合
│   ├── WeiboSentiment_Finetuned/           # 微调BERT/GPT-2模型
│   │   ├── BertChinese-Lora/               # BERT中文LoRA微调
│   │   │   ├── train.py
│   │   │   ├── predict.py
│   │   │   └── ...
│   │   └── GPT2-Lora/                      # GPT-2 LoRA微调
│   │       ├── train.py
│   │       ├── predict.py
│   │       └── ...
│   ├── WeiboMultilingualSentiment/         # 多语言情感分析(推荐使用)
│   │   ├── train.py
│   │   ├── predict.py
│   │   └── ...
│   ├── WeiboSentiment_SmallQwen/           # 小参数Qwen3微调
│   │   ├── train.py
│   │   ├── predict_universal.py
│   │   └── ...
│   └── WeiboSentiment_MachineLearning/     # 传统机器学习方法
│       ├── train.py
│       ├── predict.py
│       └── ...
├── SingleEngineApp/                        # 单独Agent的Streamlit应用
│   ├── query_engine_streamlit_app.py       # QueryEngine独立应用
│   ├── media_engine_streamlit_app.py       # MediaEngine独立应用
│   └── insight_engine_streamlit_app.py     # InsightEngine独立应用
├── query_engine_streamlit_reports/         # QueryEngine单应用运行输出
├── media_engine_streamlit_reports/         # MediaEngine单应用运行输出
├── insight_engine_streamlit_reports/       # InsightEngine单应用运行输出
├── templates/                              # Flask前端模板
│   └── index.html                          # 主界面HTML
├── static/                                 # 静态资源
│   └── image/                              # 图片资源
│       ├── logo_compressed.png
│       ├── framework.png
│       └── ...
├── logs/                                   # 运行日志目录
├── final_reports/                          # 最终生成的报告文件
│   ├── ir/                                 # 报告IR JSON文件
│   └── *.html                              # 最终HTML报告
├── utils/                                  # 通用工具函数
│   ├── forum_reader.py                     # Agent间论坛通信工具
│   ├── github_issues.py                    # 统一生成GitHub Issue链接与错误提示
│   └── retry_helper.py                     # 网络请求重试机制工具
├── tests/                                  # 单元测试与集成测试
│   ├── run_tests.py                        # pytest入口脚本
│   ├── test_monitor.py                     # ForumEngine监控单元测试
│   ├── test_report_engine_sanitization.py  # ReportEngine安全性测试
│   └── ...
├── app.py                                  # Flask主应用入口
├── config.py                               # 全局配置文件(统一管理所有LLM/DB配置)
├── .env.example                            # 环境变量示例文件
├── docker-compose.yml                      # Docker多服务编排配置
├── Dockerfile                              # Docker镜像构建文件
├── requirements.txt                        # Python依赖包清单
├── regenerate_latest_pdf.py                # PDF重新生成工具脚本
├── report_engine_only.py                   # Report Engine命令行版本(无需Web界面)
├── README.md                               # 中文说明文档
├── README-EN.md                            # 英文说明文档
├── CONTRIBUTING.md                         # 中文贡献指南
├── CONTRIBUTING-EN.md                      # 英文贡献指南
└── LICENSE                                 # GPL-2.0开源许可证

🚀 快速开始(Docker)

1. 启动项目

复制一份 .env.example 文件,命名为 .env ,并按需配置 .env 文件中的环境变量

执行以下命令在后台启动所有服务:

docker compose up -d

注:镜像拉取速度慢,在原 docker-compose.yml 文件中,我们已经通过注释的方式提供了备用镜像地址供您替换

2. 配置说明

数据库配置(PostgreSQL)

请按照以下参数配置数据库连接信息,也支持Mysql可自行修改:

配置项 填写值 说明
DB_HOST db 数据库服务名称 (对应 docker-compose.yml 中的服务名)
DB_PORT 5432 默认 PostgreSQL 端口
DB_USER bettafish 数据库用户名
DB_PASSWORD bettafish 数据库密码
DB_NAME bettafish 数据库名称
其他 保持默认 数据库连接池等其他参数请保持默认设置。

大模型配置

我们所有 LLM 调用使用 OpenAI 的 API 接口标准

在完成数据库配置后,请正常配置所有大模型相关的参数,确保系统能够连接到您选择的大模型服务。

完成上述所有配置并保存后,系统即可正常运行。

🔧 源码启动指南

如果你是初次学习一个Agent系统的搭建,可以从一个非常简单的demo开始:Deep Search Agent Demo

环境要求

  • 操作系统: Windows、Linux、MacOS
  • Python版本: 3.9+
  • Conda: Anaconda或Miniconda
  • 数据库: PostgreSQL(推荐)或MySQL
  • 内存: 建议2GB以上

1. 创建环境

如果使用Conda

# 创建conda环境
conda create -n your_conda_name python=3.11
conda activate your_conda_name

如果使用uv

# 创建uv环境
uv venv --python 3.11 # 创建3.11环境

2. 安装 PDF 导出所需系统依赖(可选)

这部分有详细的配置说明:配置所需依赖

3. 安装依赖包

如果跳过了步骤2,weasyprint库可能无法安装,PDF功能可能无法正常使用。

# 基础依赖安装
pip install -r requirements.txt

# uv版本命令(更快速安装)
uv pip install -r requirements.txt
# 如果不想使用本地情感分析模型(算力需求很小,默认安装cpu版本),可以将该文件中的"机器学习"部分注释掉再执行指令

4. 安装Playwright浏览器驱动

# 安装浏览器驱动(用于爬虫功能)
playwright install chromium

5. 配置LLM与数据库

复制一份项目根目录 .env.example 文件,命名为 .env

编辑 .env 文件,填入您的API密钥(您也可以选择自己的模型、搜索代理,详情见根目录.env.example文件内或根目录config.py中的说明):

# ====================== 数据库配置 ======================
# 数据库主机,例如localhost 或 127.0.0.1
DB_HOST=your_db_host
# 数据库端口号,默认为3306
DB_PORT=3306
# 数据库用户名
DB_USER=your_db_user
# 数据库密码
DB_PASSWORD=your_db_password
# 数据库名称
DB_NAME=your_db_name
# 数据库字符集,推荐utf8mb4,兼容emoji
DB_CHARSET=utf8mb4
# 数据库类型postgresql或mysql
DB_DIALECT=postgresql
# 数据库不需要初始化,执行app.py时会自动检测

# ====================== LLM配置 ======================
# 您可以更改每个部分LLM使用的API,只要兼容OpenAI请求格式都可以

# Insight Agent
INSIGHT_ENGINE_API_KEY=
# Insight Agent LLM接口BaseUrl,可自定义厂商API
INSIGHT_ENGINE_BASE_URL=
# Insight Agent LLM模型名称,如kimi-k2-0711-preview
INSIGHT_ENGINE_MODEL_NAME=

# Media Agent
...

推荐LLM API供应商:推理时代

6. 启动系统

6.1 完整系统启动(推荐)

# 在项目根目录下,激活conda环境
conda activate your_conda_name

# 启动主应用即可
python app.py

uv 版本启动命令

# 在项目根目录下,激活uv环境
.venv\Scripts\activate

# 启动主应用即可
python app.py

注1:一次运行终止后,streamlit app可能结束异常仍然占用端口,此时搜索占用端口的进程kill掉即可

注2:数据爬取需要单独操作,见6.3指引

注3:如果服务器远程部署出现页面显示问题,见PR#45

访问 http://localhost:5000 即可使用完整系统

6.2 单独启动某个Agent

# 启动QueryEngine
streamlit run SingleEngineApp/query_engine_streamlit_app.py --server.port 8503

# 启动MediaEngine  
streamlit run SingleEngineApp/media_engine_streamlit_app.py --server.port 8502

# 启动InsightEngine
streamlit run SingleEngineApp/insight_engine_streamlit_app.py --server.port 8501

6.3 爬虫系统单独使用

这部分有详细的配置文档:MindSpider使用说明

banner

MindSpider 运行示例

# 进入爬虫目录
cd MindSpider

# 项目初始化
python main.py --setup

# 运行话题提取(获取热点新闻和关键词)
python main.py --broad-topic

# 运行完整爬虫流程
python main.py --complete --date 2024-01-20

# 仅运行话题提取
python main.py --broad-topic --date 2024-01-20

# 仅运行深度爬取
python main.py --deep-sentiment --platforms xhs dy wb

6.4 命令行报告生成工具

如果您不需要Web界面,可以使用命令行工具直接生成报告。该工具会自动获取三个分析引擎的最新报告文件,跳过文件增加审核,直接生成综合报告。

# 基本使用(自动从文件名提取主题)
python report_engine_only.py

# 指定报告主题
python report_engine_only.py --query "土木工程行业分析"

# 跳过PDF生成(即使系统支持)
python report_engine_only.py --skip-pdf

# 显示详细日志
python report_engine_only.py --verbose

# 查看帮助信息
python report_engine_only.py --help

功能说明:

  1. 自动检查依赖:程序会自动检查PDF生成所需的系统依赖,如果缺失会给出安装提示
  2. 获取最新文件:自动从三个引擎目录(insight_engine_streamlit_reportsmedia_engine_streamlit_reportsquery_engine_streamlit_reports)获取最新的分析报告
  3. 文件确认:显示所有选择的文件名、路径和修改时间,等待用户确认(默认输入 y 继续,输入 n 退出)
  4. 直接生成报告:跳过文件增加审核程序,直接调用Report Engine生成综合报告
  5. 自动保存文件
    • HTML报告保存到 final_reports/ 目录
    • PDF报告(如果有依赖)保存到 final_reports/pdf/ 目录
    • 文件命名格式:final_report_{主题}_{时间戳}.html/pdf

注意事项:

  • 确保三个引擎目录中至少有一个包含.md报告文件
  • 命令行工具与Web界面相互独立,不会相互影响
  • PDF生成需要安装系统依赖,详见上文"安装 PDF 导出所需系统依赖"部分

⚙️ 高级配置(已过时,已经统一为项目根目录.env文件管理,其他子agent自动继承根目录配置)

修改关键参数

Agent配置参数

每个Agent都有专门的配置文件,可根据需求调整,下面是部分示例:

# QueryEngine/utils/config.py
class Config:
    max_reflections = 2           # 反思轮次
    max_search_results = 15       # 最大搜索结果数
    max_content_length = 8000     # 最大内容长度
    
# MediaEngine/utils/config.py  
class Config:
    comprehensive_search_limit = 10  # 综合搜索限制
    web_search_limit = 15           # 网页搜索限制
    
# InsightEngine/utils/config.py
class Config:
    default_search_topic_globally_limit = 200    # 全局搜索限制
    default_get_comments_limit = 500             # 评论获取限制
    max_search_results_for_llm = 50              # 传给LLM的最大结果数

情感分析模型配置

# InsightEngine/tools/sentiment_analyzer.py
SENTIMENT_CONFIG = {
    'model_type': 'multilingual',     # 可选: 'bert', 'multilingual', 'qwen'等
    'confidence_threshold': 0.8,      # 置信度阈值
    'batch_size': 32,                 # 批处理大小
    'max_sequence_length': 512,       # 最大序列长度
}

接入不同的LLM模型

支持任意openAI调用格式的LLM提供商,只需要在/config.py中填写对应的KEY、BASE_URL、MODEL_NAME即可。

什么是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': "推理模型会给市场带来哪些新的机会"}
   ],
)

complete_response = response.choices[0].message.content
print(complete_response)

更改情感分析模型

系统集成了多种情感分析方法,可根据需求选择:

1. 多语言情感分析

cd SentimentAnalysisModel/WeiboMultilingualSentiment
python predict.py --text "This product is amazing!" --lang "en"

2. 小参数Qwen3微调

cd SentimentAnalysisModel/WeiboSentiment_SmallQwen
python predict_universal.py --text "这次活动办得很成功"

3. 基于BERT的微调模型

# 使用BERT中文模型
cd SentimentAnalysisModel/WeiboSentiment_Finetuned/BertChinese-Lora
python predict.py --text "这个产品真的很不错"

4. GPT-2 LoRA微调模型

cd SentimentAnalysisModel/WeiboSentiment_Finetuned/GPT2-Lora
python predict.py --text "今天心情不太好"

5. 传统机器学习方法

cd SentimentAnalysisModel/WeiboSentiment_MachineLearning
python predict.py --model_type "svm" --text "服务态度需要改进"

接入自定义业务数据库

1. 修改数据库连接配置

# config.py 中添加您的业务数据库配置
BUSINESS_DB_HOST = "your_business_db_host"
BUSINESS_DB_PORT = 3306
BUSINESS_DB_USER = "your_business_user"
BUSINESS_DB_PASSWORD = "your_business_password"
BUSINESS_DB_NAME = "your_business_database"

2. 创建自定义数据访问工具

# InsightEngine/tools/custom_db_tool.py
class CustomBusinessDBTool:
    """自定义业务数据库查询工具"""
    
    def __init__(self):
        self.connection_config = {
            'host': config.BUSINESS_DB_HOST,
            'port': config.BUSINESS_DB_PORT,
            'user': config.BUSINESS_DB_USER,
            'password': config.BUSINESS_DB_PASSWORD,
            'database': config.BUSINESS_DB_NAME,
        }
    
    def search_business_data(self, query: str, table: str):
        """查询业务数据"""
        # 实现您的业务逻辑
        pass
    
    def get_customer_feedback(self, product_id: str):
        """获取客户反馈数据"""
        # 实现客户反馈查询逻辑
        pass

3. 集成到InsightEngine

# InsightEngine/agent.py 中集成自定义工具
from .tools.custom_db_tool import CustomBusinessDBTool

class DeepSearchAgent:
    def __init__(self, config=None):
        # ... 其他初始化代码
        self.custom_db_tool = CustomBusinessDBTool()
    
    def execute_custom_search(self, query: str):
        """执行自定义业务数据搜索"""
        return self.custom_db_tool.search_business_data(query, "your_table")

自定义报告模板

1. 在Web界面中上传

系统支持上传自定义模板文件(.md或.txt格式),可在生成报告时选择使用。

2. 创建模板文件

ReportEngine/report_template/ 目录下创建新的模板,我们的Agent会自行选用最合适的模板。

🤝 贡献指南

我们欢迎所有形式的贡献!

请阅读以下贡献指南:

🦖 下一步开发计划

现在系统只完成了"三板斧"中的前两步,即:输入要求->详细分析,还缺少一步预测,直接将他继续交给LLM是不具有说服力的。

banner

目前我们经过很长一段时间的爬取收集,拥有了大量全网话题热度随时间、爆点等的变化趋势热度数据,已经具备了可以开发预测模型的条件。我们团队将运用时序模型、图神经网络、多模态融合等预测模型技术储备于此,实现真正基于数据驱动的舆情预测功能。

⚠️ 免责声明

重要提醒:本项目仅供学习、学术研究和教育目的使用

  1. 合规性声明

    • 本项目中的所有代码、工具和功能均仅供学习、学术研究和教育目的使用
    • 严禁将本项目用于任何商业用途或盈利性活动
    • 严禁将本项目用于任何违法、违规或侵犯他人权益的行为
  2. 爬虫功能免责

    • 项目中的爬虫功能仅用于技术学习和研究目的
    • 使用者必须遵守目标网站的robots.txt协议和使用条款
    • 使用者必须遵守相关法律法规,不得进行恶意爬取或数据滥用
    • 因使用爬虫功能产生的任何法律后果由使用者自行承担
  3. 数据使用免责

    • 项目涉及的数据分析功能仅供学术研究使用
    • 严禁将分析结果用于商业决策或盈利目的
    • 使用者应确保所分析数据的合法性和合规性
  4. 技术免责

    • 本项目按"现状"提供,不提供任何明示或暗示的保证
    • 作者不对使用本项目造成的任何直接或间接损失承担责任
    • 使用者应自行评估项目的适用性和风险
  5. 责任限制

    • 使用者在使用本项目前应充分了解相关法律法规
    • 使用者应确保其使用行为符合当地法律法规要求
    • 因违反法律法规使用本项目而产生的任何后果由使用者自行承担

请在使用本项目前仔细阅读并理解上述免责声明。使用本项目即表示您已同意并接受上述所有条款。

📄 许可证

本项目采用 GPL-2.0许可证。详细信息请参阅LICENSE文件。

🎉 支持与联系

获取帮助

常见问题解答:#185

联系方式

商务合作

  • 企业定制开发
  • 大数据服务
  • 学术合作
  • 技术培训

👥 贡献者

感谢以下优秀的贡献者们:

Contributors

📈 项目统计

Star History Chart

Alt

About

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

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Languages