[!IMPORTANT]
查看我们最新发布的预测引擎:MiroFish-简洁通用的群体智能引擎,预测万物“数据分析三板斧”全线贯通:我们激动的宣布 MiroFish 正式发布!随着最后一块版图补齐,我们构建了从 BettaFish(数据收集与分析)到 MiroFish(全景预测)的完整链路。至此,从原始数据到智能决策的闭环已成,让预见未来成为可能!
⚡ 项目概述
“微舆” 是一个从0实现的创新型 多智能体 舆情分析系统,帮助大家破除信息茧房,还原舆情原貌,预测未来走向,辅助决策。用户只需像聊天一样提出分析需求,智能体开始全自动分析 国内外30+主流社媒 与 数百万条大众评论。
“微舆”谐音“微鱼”,BettaFish是一种体型很小但非常好斗、漂亮的鱼,它象征着“小而强大,不畏挑战”
查看系统以“武汉大学舆情”为例,生成的研究报告:武汉大学品牌声誉深度分析报告
查看系统以“武汉大学舆情”为例,一次完整运行的视频:视频-武汉大学品牌声誉深度分析报告
不仅仅体现在报告质量上,相比同类产品,我们拥有🚀六大优势:
AI驱动的全域监控:AI爬虫集群7x24小时不间断作业,全面覆盖微博、小红书、抖音、快手等10+国内外关键社媒。不仅实时捕获热点内容,更能下钻至海量用户评论,让您听到最真实、最广泛的大众声音。
超越LLM的复合分析引擎:我们不仅依赖设计的5类专业Agent,更融合了微调模型、统计模型等中间件。通过多模型协同工作,确保了分析结果的深度、准度与多维视角。
强大的多模态能力:突破图文限制,能深度解析抖音、快手等短视频内容,并精准提取现代搜索引擎中的天气、日历、股票等结构化多模态信息卡片,让您全面掌握舆情动态。
Agent“论坛”协作机制:为不同Agent赋予独特的工具集与思维模式,引入辩论主持人模型,通过“论坛”机制进行链式思维碰撞与辩论。这不仅避免了单一模型的思维局限与交流导致的同质化,更催生出更高质量的集体智能与决策支持。
公私域数据无缝融合:平台不仅分析公开舆情,还提供高安全性的接口,支持您将内部业务数据库与舆情数据无缝集成。打通数据壁垒,为垂直业务提供“外部趋势+内部洞察”的强大分析能力。
轻量化与高扩展性框架:基于纯Python模块化设计,实现轻量化、一键式部署。代码结构清晰,开发者可轻松集成自定义模型与业务逻辑,实现平台的快速扩展与深度定制。
始于舆情,而不止于舆情。“微舆”的目标,是成为驱动一切业务场景的简洁通用的数据分析引擎。
举个例子. 你只需简单修改Agent工具集的api参数与prompt,就可以把他变成一个金融领域的市场分析系统
附一个比较活跃的L站项目讨论帖:https://linux.do/t/topic/1009280
查看L站佬友做的测评 开源项目(微舆)与manus|minimax|ChatGPT|Perplexity对比
🪄 赞助商
AI联网搜索、文件解析及网页内容抓取等智能体核心能力提供商:
安思派开放平台(Anspire Open)是面向智能体时代的领先的基础设施提供商。我们为开发者提供构建强大智能体所需的核心能力栈,现已上线AI联网搜索【多版本,极具竞争力的价格】、文件解析【限免】及网页内容抓取【限免】、云端浏览器自动化(Anspire Browser Agent)【内测】、多轮改写等服务,持续为智能体连接并操作复杂的数字世界提供坚实基础。可无缝集成至Dify、Coze、元器等主流智能体平台。通过透明点数计费体系与模块化设计,为企业提供高效、低成本的定制化支持,加速智能化升级进程。
🏗️ 系统架构
整体架构图
Insight Agent 私有数据库挖掘:私有舆情数据库深度分析AI代理
Media Agent 多模态内容分析:具备强大多模态能力的AI代理
Query Agent 精准信息搜索:具备国内外网页搜索能力的AI代理
Report Agent 智能报告生成:内置模板的多轮报告生成AI代理
一次完整分析流程
| 步骤 | 阶段名称 | 主要操作 | 参与组件 | 循环特性 |
|---|---|---|---|---|
| 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 | IR中间表示 | 动态选择模板和样式,多轮生成元数据,装订为IR中间表示 | Report Agent + 模板引擎 | - |
| N+3 | 报告生成 | 分块进行质量检测,基于IR渲染成交互式 HTML 报告 | Report Agent + 装订引擎 | - |
当前代码结构(截至 2026-04-09)
下面这棵树反映的是当前仓库的真实分层。现在的主开发路径已经从“根目录堆模块”切换到“应用层 + 服务层 + 支撑层 + 运行时目录”的结构,根目录保留的旧目录大多只承担兼容职责。
AI-Agent-Platform/
├─ apps/ # 面向用户的应用入口层
│ ├─ web_api/ # Flask + Socket.IO 主站装配入口
│ ├─ web_ui/ # Vue 3 + Vite + TypeScript 前端工程
│ └─ engine_console/ # Query / Media / Insight 三个 Streamlit 单引擎入口
├─ services/ # 真实业务实现层
│ ├─ engines/ # query / media / insight / report / forum 五大引擎
│ ├─ crawler/ # mindspider、外部爬虫适配层、crawler 服务
│ └─ shared/ # 共享配置、LLM、日志、工具函数
├─ backend/ # Flask 蓝图、研究任务 API、爬虫控制 API
├─ scripts/ # 本地开发、启动、修复、迁移脚本
│ └─ dev/ # bootstrap / start_local / prepare_local_postgres 等
├─ tools/ # 报告导出、质量检查、辅助运维工具
├─ infra/ # Docker / Compose / 本地 requirements 等基础设施文件
├─ research/ # 研究模型、训练脚本、实验资产
├─ vendor/ # 第三方源码镜像或子模块(当前为 mediacrawler)
├─ tests/ # unit / integration / e2e / fixtures
├─ static/ # 前端构建产物、图片和静态资源
├─ templates/ # Flask HTML 模板
├─ utils/ # 运行时路径、兼容 shim、跨模块小工具
├─ var/ # 日志、报告、数据库、浏览器数据、缓存、备份
└─ start_local.bat # Windows 本地一键启动入口
当前功能分层说明
-
apps/web_api/是整个平台的主装配入口。它负责启动 Flask 主站、注册backend/蓝图、连接services/engines/report、接管爬虫控制接口,并管理三个 Streamlit 单引擎子进程。 -
apps/web_ui/是统一 Web 前端。这里承载 Vue 3 页面、Vite 构建和 TypeScript 代码;本地开发默认通过 Vite dev server 在9527提供热更新,部署兼容构建产物仍输出到static/frontend/。 -
apps/engine_console/是单引擎调试入口,适合单独启动 Query / Media / Insight 引擎,做开发联调、能力验证和问题定位。 -
services/engines/是核心业务层。query负责广度检索,media负责多模态分析,insight负责私有/结构化数据与情感分析,report负责报告生成,forum负责多 Agent 协作与主持。 -
services/crawler/是爬虫能力层。mindspider承担主爬虫流程,adapters/用于隔离对外部vendor/mediacrawler的调用,web/预留给爬虫侧 Web 服务边界。 -
services/shared/是共享基础设施层。当前已经承接共享配置、LLM 封装、日志与通用工具,是后续继续消除跨模块重复代码的主要落点。 -
backend/是 Web 控制层而不是业务核心层。这里主要存放 Flask 蓝图、研究任务路由、爬虫控制路由和配置管理接口。 -
research/存放研究与训练资产,不直接承担线上主流程装配职责;vendor/明确隔离第三方源码;var/专门存放运行时产物,避免日志、数据库和缓存污染源码目录。
推荐入口与职责边界
- 推荐从
python -m scripts.dev.start_local启动整个本地开发栈;默认会以前后端分离模式拉起Vite HMR + Flask API。 - 如需生成供 Flask / Docker 单服务部署继续托管的静态前端,可使用
python -m scripts.dev.start_local --frontend-mode build;--build-frontend仅作为兼容别名保留。 - 推荐从
python -m apps.web_api启动后端 API;Web API 的 canonical Python 入口已完全收口到apps/web_api/。 - 推荐在
apps/web_ui/下进行前端开发与构建;历史根目录前端兼容目录已移除。 - 推荐通过
services.engines.*和services.crawler.*导入真实业务代码;历史根目录兼容包目录已移除,不再作为任何开发入口。 - 推荐使用
python -m scripts.dev.prepare_local_postgres --check-only、python -m scripts.dev.prepare_local_postgres --ensure-db --apply-schema和python -m scripts.dev.repair_local_postgres处理本地数据库准备与修复。
兼容目录说明
T-517 之后,历史根目录兼容包目录与兼容 CLI 目录已经从仓库中移除。T-525 进一步删除了根目录 app.py,当前仅保留 start_local.bat 作为 Windows 一键启动薄入口;Docker 入口也已统一收口到 infra/docker/,真实实现统一分布在 apps/、services/、tools/、infra/、research/ 和 vendor/。
历史目录树(已过时,仅供兼容背景参考)
T-518 之后,主 README 不再内嵌整段旧目录大树,避免继续把已删除的兼容目录误读为当前开发入口。
如需追溯历史迁移背景,请查看:
🚀 快速开始(纯本地,推荐)
1. 准备环境文件
推荐直接复制 .env.local.example 为 .env.local,再填写你自己的模型 API 配置:
# PowerShell
Copy-Item .env.local.example .env.local
如果你同时保留了给 Docker 用的
.env,源码启动会优先读取.env.local,两套配置可以并存。
2. 启动本地数据库
纯本地模式推荐使用本机 PostgreSQL 15+,默认本地模板已经给出如下参数,也支持按需切换到 MySQL:
| 配置项 | 默认值 | 说明 |
|---|---|---|
DB_HOST |
127.0.0.1 |
本机数据库地址 |
DB_PORT |
5432 |
本机 PostgreSQL 默认端口 |
DB_USER |
bettafish |
数据库用户名 |
DB_PASSWORD |
bettafish |
数据库密码 |
DB_NAME |
bettafish |
数据库名称 |
说明:
.env.local.example默认仍优先指向系统本地 PostgreSQL127.0.0.1:5432。如果执行python -m scripts.dev.repair_local_postgres,仓库会自动创建项目自管实例,并将当前.env.local切换到127.0.0.1:55432。
3. 安装依赖
python -m scripts.dev.bootstrap_local
在启动主站前,建议先检查本地 PostgreSQL 是否真的可用:
python -m scripts.dev.prepare_local_postgres --check-only
如果 PostgreSQL 服务已经启动,但数据库或表结构还没准备好,可以执行:
python -m scripts.dev.prepare_local_postgres --ensure-db --apply-schema
该脚本只负责诊断、建库和初始化表结构,不会替你安装 PostgreSQL 系统服务。
如果本机已经有 PostgreSQL,但 5432 上的现成实例账号密码对不上,也可以直接执行:
python -m scripts.dev.repair_local_postgres
该修复脚本会优先复用当前 .env.local 里的 DB_USER / DB_PASSWORD / DB_NAME,在仓库内创建一个项目自管的本地 PostgreSQL 实例,默认落到 var/db/postgres-local/,并把 .env.local 自动切到 127.0.0.1:55432。
如果你只想手动执行,等价命令如下:
pip install -r infra/python/requirements-local.txt
playwright install chromium
npm --prefix apps/web_ui install
4. 启动项目
python -m scripts.dev.start_local
Windows 一键启动入口:
start_local.bat
也可以直接执行真实脚本入口:
powershell -ExecutionPolicy Bypass -NoProfile -File .\scripts\dev\start_local_stack.ps1
该脚本会自动处理 .env.local 预检、缺失依赖时的 bootstrap_local、前端依赖检查、5000/9527 端口复用检测,以及本地 PostgreSQL 自修复。默认模式下,后端只提供 API,前端通过 Vite dev server 独立运行并支持热更新;若系统 5432 实例不可用或凭据不匹配,它会自动切换到仓库内的项目自管 PostgreSQL 实例并完成建库 / schema 初始化;若你只想手动排查,也可以继续执行 python -m scripts.dev.prepare_local_postgres --check-only、python -m scripts.dev.prepare_local_postgres --ensure-db --apply-schema 或 python -m scripts.dev.repair_local_postgres。
- 前端开发入口:http://127.0.0.1:9527
- 后端 API:http://127.0.0.1:5000
- 如需生成供 Flask / Docker 单服务部署使用的静态前端,请执行
python -m scripts.dev.start_local --frontend-mode build
如果
9527已被其他本地项目占用,可执行python -m scripts.dev.start_local --frontend-port 9528,或在 Windows 下运行start_local.bat -FrontendPort 9528。
🐳 Docker 兼容启动(可选)
1. 准备 .env
复制一份 .env.example 文件,命名为 .env,并按需配置 .env 文件中的环境变量。
2. 启动项目
执行以下命令在后台启动所有服务:
docker compose -f infra/docker/docker-compose.yml -f infra/docker/docker-compose.override.yml up -d --build
注:镜像拉取速度慢,在 canonical 文件
infra/docker/docker-compose.yml中,我们已经通过注释的方式提供了备用镜像地址供您替换。根目录 Docker / Compose 兼容副本已移除,请始终使用infra/docker/下的 canonical 文件。
3. Docker 模式下的数据库配置(PostgreSQL)
请按照以下参数配置数据库连接信息,也支持Mysql可自行修改:
| 配置项 | 填写值 | 说明 |
|---|---|---|
DB_HOST |
db |
数据库服务名称 (对应 infra/docker/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. 配置本地环境与数据库
推荐复制项目根目录 .env.local.example 文件,命名为 .env.local。
如果你还要保留 Docker 启动,请继续把 .env 留给 compose;纯本地启动会优先读取 .env.local。
编辑 .env.local 文件,填入您的 API 密钥(您也可以选择自己的模型、搜索代理,详情见根目录 .env.example、.env.local.example 文件内或 services/shared/config/app_settings.py 中的字段说明):
# ====================== BettaFish 本地启动 ======================
HOST=127.0.0.1
PORT=5000
# ====================== 数据库配置 ======================
DB_HOST=127.0.0.1
DB_PORT=5432
DB_USER=bettafish
DB_PASSWORD=bettafish
DB_NAME=bettafish
# 数据库字符集,推荐utf8mb4,兼容emoji
DB_CHARSET=utf8mb4
# 数据库类型 postgresql 或 mysql
DB_DIALECT=postgresql
# 数据库不需要手工初始化,执行启动脚本时会自动检测
# ====================== LLM配置 ======================
# 您可以更改每个部分LLM使用的API,只要兼容OpenAI请求格式都可以
# 配置文件内部给了每一个Agent的推荐LLM,初次部署请先参考推荐设置
# Insight Agent
INSIGHT_ENGINE_API_KEY=
INSIGHT_ENGINE_BASE_URL=
INSIGHT_ENGINE_MODEL_NAME=
# Media Agent
...
6. 启动系统
6.1 完整系统启动(推荐)
# 在项目根目录下,激活conda环境
conda activate your_conda_name
# 默认以前后端分离模式启动:Vite 热更新 + Flask API
python -m scripts.dev.start_local
uv 版本启动命令
# 在项目根目录下,激活uv环境
.venv\Scripts\activate
# 默认以前后端分离模式启动:Vite 热更新 + Flask API
python -m scripts.dev.start_local
如需单独启动后端,可使用
python -m apps.web_api。默认仍推荐本地启动脚本python -m scripts.dev.start_local。注1:如果你需要为 Flask / Docker 单服务部署生成静态前端产物,可执行
python -m scripts.dev.start_local --frontend-mode build;兼容别名--build-frontend仍然可用,但不再作为本地开发主入口。注2:数据爬取需要单独操作,见6.3指引
注3:如果你是第一次在本机拉起项目,建议先运行
python -m scripts.dev.bootstrap_local,它会把 Python 依赖、Playwright 浏览器和前端依赖一次性准备好。注4:Windows 下可直接运行根目录
start_local.bat。它会转发到scripts/dev/start_local_stack.ps1,默认拉起9527前端热更新服务和5000后端 API,并复用纯本地启动链路中的依赖预检、PostgreSQL 诊断与自动修复逻辑。注4.1:如果
9527已被占用,可改用start_local.bat -FrontendPort 9528,或直接执行python -m scripts.dev.start_local --frontend-port 9528。注5:如果你已经装好了 PostgreSQL,但还不确定数据库和 schema 是否就绪,可运行
python -m scripts.dev.prepare_local_postgres --check-only;如需自动建库和初始化表结构,可运行python -m scripts.dev.prepare_local_postgres --ensure-db --apply-schema。
访问 http://127.0.0.1:9527 使用前端,后端 API 位于 http://127.0.0.1:5000
6.2 单独启动某个Agent
# 启动QueryEngine
streamlit run apps/engine_console/query_engine_streamlit_app.py --server.port 8503
# 启动MediaEngine
streamlit run apps/engine_console/media_engine_streamlit_app.py --server.port 8502
# 启动InsightEngine
streamlit run apps/engine_console/insight_engine_streamlit_app.py --server.port 8501
6.3 爬虫系统单独使用
这部分有详细的配置文档:MindSpider使用说明
推荐从项目根目录使用 python -m services.crawler.mindspider.main --status。
# 进入爬虫目录
cd services/crawler/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 界面的情况下生成综合报告(同时省略文件增量校验步骤),默认会在 PDF 之后自动生成 Markdown(可用参数关闭)。通常用于对报告生成结果不满意、需要快速重试的场景,或在调试 Report Engine 时启用。
# 基本使用(自动从文件名提取主题)
python -m tools.reports.report_engine_only
# 指定报告主题
python -m tools.reports.report_engine_only --query "土木工程行业分析"
# 跳过PDF生成(即使系统支持)
python -m tools.reports.report_engine_only --skip-pdf
# 跳过Markdown生成
python -m tools.reports.report_engine_only --skip-markdown
# 显示详细日志
python -m tools.reports.report_engine_only --verbose
# 查看帮助信息
python -m tools.reports.report_engine_only --help
功能说明:
- 自动检查依赖:程序会自动检查PDF生成所需的系统依赖,如果缺失会给出安装提示
-
获取最新文件:自动从三个引擎目录(
var/reports/engines/insight/、var/reports/engines/media/、var/reports/engines/query/)获取最新的分析报告 -
文件确认:显示所有选择的文件名、路径和修改时间,等待用户确认(默认输入
y继续,输入n退出) - 直接生成报告:跳过文件增加审核程序,直接调用Report Engine生成综合报告
-
自动保存文件:
- HTML报告保存到
var/reports/final/目录 - PDF报告(如果有依赖)保存到
var/reports/final/pdf/目录 - Markdown报告(可用
--skip-markdown关闭)保存到var/reports/final/md/目录 - 文件命名格式:
final_report_{主题}_{时间戳}.html/pdf/md
- HTML报告保存到
注意事项:
- 确保三个引擎目录中至少有一个包含
.md报告文件 - 命令行工具与Web界面相互独立,不会相互影响
- PDF生成需要安装系统依赖,详见上文"安装 PDF 导出所需系统依赖"部分
快速重渲染最新结果:
-
python -m tools.reports.regenerate_latest_html/python -m tools.reports.regenerate_latest_md:从CHAPTER_OUTPUT_DIR中最新一次运行的章节 JSON 重装订 Document IR,并直接渲染 HTML 或 Markdown。 -
python -m tools.reports.regenerate_latest_pdf:读取var/reports/final/ir里最新的 IR,使用 SVG 矢量图表重新导出 PDF。
⚙️ 高级配置(已过时,已经统一为项目根目录.env文件管理,其他子agent自动继承根目录配置)
修改关键参数
Agent配置参数
每个Agent都有专门的配置文件,可根据需求调整,下面是部分示例:
# services/engines/query/utils/config.py
class Config:
max_reflections = 2 # 反思轮次
max_search_results = 15 # 最大搜索结果数
max_content_length = 8000 # 最大内容长度
# services/engines/media/utils/config.py
class Config:
comprehensive_search_limit = 10 # 综合搜索限制
web_search_limit = 15 # 网页搜索限制
# services/engines/insight/utils/config.py
class Config:
default_search_topic_globally_limit = 200 # 全局搜索限制
default_get_comments_limit = 500 # 评论获取限制
max_search_results_for_llm = 50 # 传给LLM的最大结果数
情感分析模型配置
# services/engines/insight/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 提供商,只需要在 .env.local 中填写对应的 KEY、BASE_URL、MODEL_NAME 即可;字段定义可参考 services/shared/config/app_settings.py。
什么是openAI调用格式?下面提供一个简单的例子:
from openai import OpenAI client = OpenAI(api_key="your_api_key", base_url="https://aihubmix.com/v1") response = client.chat.completions.create( model="gpt-4o-mini", messages=[ {'role': 'user', 'content': "推理模型会给市场带来哪些新的机会"} ], ) complete_response = response.choices[0].message.content print(complete_response)
更改情感分析模型
系统集成了多种情感分析方法,可根据需求选择:
多语言情感分析研究示例现已迁移到 research/sentiment_models/WeiboMultilingualSentiment/。
InsightEngine 运行时使用的多语言情感模型工作目录现由 INSIGHT_SENTIMENT_MODEL_DIR 控制,默认值已切到 var/models/insight_weibo_multilingual。
1. 多语言情感分析
cd research/sentiment_models/WeiboMultilingualSentiment
python predict.py --text "This product is amazing!" --lang "en"
2. 小参数Qwen3微调
cd research/sentiment_models/WeiboSentiment_SmallQwen
python predict_universal.py --text "这次活动办得很成功"
3. 基于BERT的微调模型
# 使用BERT中文模型
cd research/sentiment_models/WeiboSentiment_Finetuned/BertChinese-Lora
python predict.py --text "这个产品真的很不错"
4. GPT-2 LoRA微调模型
cd research/sentiment_models/WeiboSentiment_Finetuned/GPT2-Lora
python predict.py --text "今天心情不太好"
5. 传统机器学习方法
cd research/sentiment_models/WeiboSentiment_MachineLearning
python predict.py --model_type "svm" --text "服务态度需要改进"
接入自定义业务数据库
1. 修改数据库连接配置
如果你准备扩展业务数据库能力,请先在 services/shared/config/app_settings.py 中补充对应字段,再把实际值写入 .env.local:
# 在 `.env.local` 中提供业务数据库配置
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. 创建自定义数据访问工具
# services/engines/insight/tools/custom_db_tool.py
from services.shared.config import settings
class CustomBusinessDBTool:
"""自定义业务数据库查询工具"""
def __init__(self):
self.connection_config = {
'host': settings.BUSINESS_DB_HOST,
'port': settings.BUSINESS_DB_PORT,
'user': settings.BUSINESS_DB_USER,
'password': settings.BUSINESS_DB_PASSWORD,
'database': settings.BUSINESS_DB_NAME,
}
def search_business_data(self, query: str, table: str):
"""查询业务数据"""
# 实现您的业务逻辑
pass
def get_customer_feedback(self, product_id: str):
"""获取客户反馈数据"""
# 实现客户反馈查询逻辑
pass
3. 集成到InsightEngine
# services/engines/insight/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. 创建模板文件
在 services/engines/report/report_template/ 目录下创建新的模板,我们的Agent会自行选用最合适的模板。
🤝 贡献指南
我们欢迎所有形式的贡献!
请阅读以下贡献指南:
🦖 下一步开发计划
现在系统完成了最后一步预测!访问查看【MiroFish-预测万物】:https://github.com/666ghj/MiroFish
⚠️ 免责声明
重要提醒:本项目仅供学习、学术研究和教育目的使用
-
合规性声明:
- 本项目中的所有代码、工具和功能均仅供学习、学术研究和教育目的使用
- 严禁将本项目用于任何商业用途或盈利性活动
- 严禁将本项目用于任何违法、违规或侵犯他人权益的行为
-
爬虫功能免责:
- 项目中的爬虫功能仅用于技术学习和研究目的
- 使用者必须遵守目标网站的robots.txt协议和使用条款
- 使用者必须遵守相关法律法规,不得进行恶意爬取或数据滥用
- 因使用爬虫功能产生的任何法律后果由使用者自行承担
-
数据使用免责:
- 项目涉及的数据分析功能仅供学术研究使用
- 严禁将分析结果用于商业决策或盈利目的
- 使用者应确保所分析数据的合法性和合规性
-
技术免责:
- 本项目按"现状"提供,不提供任何明示或暗示的保证
- 作者不对使用本项目造成的任何直接或间接损失承担责任
- 使用者应自行评估项目的适用性和风险
-
责任限制:
- 使用者在使用本项目前应充分了解相关法律法规
- 使用者应确保其使用行为符合当地法律法规要求
- 因违反法律法规使用本项目而产生的任何后果由使用者自行承担
请在使用本项目前仔细阅读并理解上述免责声明。使用本项目即表示您已同意并接受上述所有条款。
📄 许可证
本项目采用 GPL-2.0许可证。详细信息请参阅LICENSE文件。
🎉 支持与联系
获取帮助
常见问题解答:https://github.com/666ghj/BettaFish/issues/185
- 项目主页:GitHub仓库
- 问题反馈:Issues页面
- 功能建议:Discussions页面
联系方式
- 📧 邮箱:hangjiang@bupt.edu.cn
商务合作
- 企业定制开发
- 大数据服务
- 学术合作
- 技术培训
👥 贡献者
感谢以下优秀的贡献者们:





