BettaFish Docker 部署完全指南:一键搭建你的专属舆情分析系统
BettaFish 是一个创新的多智能体舆情分析系统,支持 Docker 一键部署。本文详细介绍如何使用 Docker 快速部署 BettaFish,包括环境配置、LLM 接入、使用指南和故障排除等完整流程。
本文发布于 315 天前,内容可能已过时,请注意甄别。
BettaFish 是一个相当有意思的开源项目,它让舆情分析变得像聊天一样简单。你只需要提出分析需求,系统就会自动调动多个 AI 智能体去分析微博、小红书、抖音等 30+ 个主流平台的内容,最后生成一份专业的分析报告。
这个项目的名字很有意思——BettaFish(斗鱼),正如它的寓意”小而强大,无畏挑战”。今天我们就来看看如何用 Docker 快速部署这个强大的舆情分析系统。
想象一下,你只需要问一句”最近大家对新能源汽车怎么看?“,系统就能帮你分析全网的讨论,这种感觉是不是很酷?
🚀 核心优势
- AI 驱动的全面监控:AI 爬虫集群 24/7 不间断运行,全面覆盖微博、小红书、抖音、快手等 10+ 国内外重点社交媒体平台
- 超越 LLM 的复合分析引擎:集成 5 种专业设计的智能体和多种中间件模型
- 强大的多模态能力:突破文本和图像限制,深度分析短视频内容
- 智能体”论坛”协作机制:通过辩论主持人模式进行思维碰撞和辩论
- 公私域数据无缝融合:支持内部业务数据库与舆情数据的无缝集成
- 轻量级高扩展框架:基于纯 Python 模块化设计,实现轻量级一键部署
🏗️ 系统架构
核心组件
- Insight Agent:私有数据库挖掘智能体
- Media Agent:多模态内容分析智能体
- Query Agent:精准信息搜索智能体
- Report Agent:智能报告生成智能体
- Forum Engine:论坛协作引擎
完整分析工作流程
| 步骤 | 阶段名称 | 主要操作 | 参与组件 | 循环性质 |
|---|---|---|---|---|
| 1 | 用户查询 | Flask 主应用接收查询 | Flask 主应用 | - |
| 2 | 并行启动 | 三个智能体同时开始工作 | Query Agent, Media Agent, Insight Agent | - |
| 3 | 初步分析 | 各智能体使用专用工具进行概览搜索 | 各智能体 + 专用工具集 | - |
| 4 | 策略制定 | 根据初步结果制定分段研究策略 | 各智能体内部决策模块 | - |
| 5-N | 迭代阶段 | 论坛协作 + 深度研究 | ForumEngine + 所有智能体 | 多轮循环 |
| N+1 | 结果整合 | Report Agent 收集所有分析结果 | Report Agent | - |
| N+2 | 报告生成 | 动态选择模板和风格,多轮生成最终报告 | Report Agent + 模板引擎 | - |
🐳 Docker 快速部署
系统要求
- 操作系统:Windows、Linux、MacOS
- Docker:Docker 20.10+ 和 Docker Compose
- 内存:推荐 4GB+
- 存储空间:至少 10GB 可用空间
1. 获取项目代码
# 克隆项目仓库
git clone https://github.com/666ghj/BettaFish.git
cd BettaFish
2. 环境配置
2.1 复制配置文件
# 复制环境配置文件
cp .env.example .env
2.2 编辑配置文件
编辑 .env 文件,配置以下关键参数:
# ====================== 数据库配置 ======================
# 数据库主机(Docker 环境中使用服务名)
DB_HOST=db
# 数据库端口
DB_PORT=5432
# 数据库用户名
DB_USER=bettafish
# 数据库密码
DB_PASSWORD=bettafish
# 数据库名称
DB_NAME=bettafish
# 数据库类型
DB_DIALECT=postgresql
# ====================== LLM 配置 ======================
# Insight Agent LLM 配置
INSIGHT_ENGINE_API_KEY=your_api_key_here
INSIGHT_ENGINE_BASE_URL=https://api.openai.com/v1
INSIGHT_ENGINE_MODEL_NAME=gpt-3.5-turbo
# Query Agent LLM 配置
QUERY_ENGINE_API_KEY=your_api_key_here
QUERY_ENGINE_BASE_URL=https://api.openai.com/v1
QUERY_ENGINE_MODEL_NAME=gpt-3.5-turbo
# Media Agent LLM 配置
MEDIA_ENGINE_API_KEY=your_api_key_here
MEDIA_ENGINE_BASE_URL=https://api.openai.com/v1
MEDIA_ENGINE_MODEL_NAME=gpt-4-vision-preview
# Report Agent LLM 配置
REPORT_ENGINE_API_KEY=your_api_key_here
REPORT_ENGINE_BASE_URL=https://api.openai.com/v1
REPORT_ENGINE_MODEL_NAME=gpt-4
# Forum Host LLM 配置
FORUM_HOST_API_KEY=your_api_key_here
FORUM_HOST_BASE_URL=https://api.openai.com/v1
FORUM_HOST_MODEL_NAME=gpt-3.5-turbo
# ====================== 搜索引擎配置 ======================
# Serper API Key(用于网络搜索)
SERPER_API_KEY=your_serper_api_key
# ====================== 其他配置 ======================
# Flask 应用密钥
FLASK_SECRET_KEY=your_secret_key_here
# 日志级别
LOG_LEVEL=INFO
3. 启动服务
3.1 后台启动所有服务
# 启动所有服务(后台运行)
docker compose up -d
3.2 查看服务状态
# 查看服务运行状态
docker compose ps
# 查看服务日志
docker compose logs -f
# 查看特定服务日志
docker compose logs -f app
docker compose logs -f db
4. 访问应用
服务启动成功后,可以通过以下地址访问:
- 主应用界面:http://localhost:5000
- 数据库管理:PostgreSQL 运行在 localhost:5432
⚙️ 详细配置说明
数据库配置
系统支持 PostgreSQL(推荐)和 MySQL 数据库:
| 配置项 | Docker 环境值 | 说明 |
|---|---|---|
DB_HOST | db | 数据库服务名(在 docker-compose.yml 中定义) |
DB_PORT | 5432 | PostgreSQL 默认端口 |
DB_USER | bettafish | 数据库用户名 |
DB_PASSWORD | bettafish | 数据库密码 |
DB_NAME | bettafish | 数据库名称 |
| 其他 | 保持默认 | 其他参数如数据库连接池设置请保持默认值 |
LLM 模型配置
系统所有 LLM 调用都使用 OpenAI API 接口标准。您可以使用:
- OpenAI 官方 API
- 兼容 OpenAI 格式的其他服务商(如 Azure OpenAI、Claude、国产大模型等)
- 本地部署的模型(如 Ollama、vLLM 等)
推荐的 LLM API 服务商:
- aihubmix
- Azure OpenAI Service
- 阿里云通义千问
- 腾讯云混元
网络搜索配置
系统使用 Serper API 进行网络搜索,需要:
- 注册 Serper 账号
- 获取 API Key
- 在
.env文件中配置SERPER_API_KEY
🎯 使用指南
基本使用流程
- 访问主界面:打开 http://localhost:5000
- 输入分析需求:在对话框中输入您的舆情分析需求
- 等待分析完成:系统会自动调用多个智能体进行分析
- 查看分析报告:系统会生成详细的 HTML 格式分析报告
使用示例
示例 1:品牌舆情分析
请分析”华为手机”在最近一周的网络舆情,包括用户评价、热点话题和情感倾向
示例 2:热点事件分析
分析”人工智能发展”相关的最新讨论,重点关注技术趋势和公众态度
示例 3:竞品对比分析
对比分析”特斯拉”和”比亚迪”在电动汽车领域的品牌声誉和用户反馈
高级功能
1. 单独使用各个智能体
# 启动 Query Engine(搜索智能体)
docker compose exec app streamlit run SingleEngineApp/query_engine_streamlit_app.py --server.port 8503
# 启动 Media Engine(多媒体分析智能体)
docker compose exec app streamlit run SingleEngineApp/media_engine_streamlit_app.py --server.port 8502
# 启动 Insight Engine(洞察分析智能体)
docker compose exec app streamlit run SingleEngineApp/insight_engine_streamlit_app.py --server.port 8501
2. 爬虫系统独立使用
# 进入容器
docker compose exec app bash
# 进入爬虫目录
cd MindSpider
# 项目初始化
python main.py --setup
# 运行话题提取
python main.py --broad-topic
# 运行完整爬虫工作流
python main.py --complete --date 2024-01-20
# 仅运行深度爬取
python main.py --deep-sentiment --platforms xhs dy wb
🔧 故障排除
常见问题
1. 容器启动失败
问题:docker compose up -d 失败
解决方案:
# 检查 Docker 服务状态
docker --version
docker compose --version
# 清理旧容器和镜像
docker compose down
docker system prune -f
# 重新构建并启动
docker compose up -d --build
2. 数据库连接失败
问题:应用无法连接到数据库
解决方案:
# 检查数据库容器状态
docker compose logs db
# 检查数据库配置
cat .env | grep DB_
# 重启数据库服务
docker compose restart db
3. LLM API 调用失败
问题:智能体无法调用 LLM API
解决方案:
- 检查 API Key 是否正确配置
- 验证网络连接和 API 服务可用性
- 检查 API 配额和限制
# 查看应用日志
docker compose logs app | grep -i error
# 测试 API 连接
curl -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"Hello"}]}' \
https://api.openai.com/v1/chat/completions
4. 端口冲突
问题:端口 5000 被占用
解决方案:
# 查找占用端口的进程
netstat -tulpn | grep :5000
# 修改 docker-compose.yml 中的端口映射
# 将 "5000:5000" 改为 "5001:5000"
# 重新启动服务
docker compose down
docker compose up -d
5. 内存不足
问题:系统运行缓慢或崩溃
解决方案:
# 检查系统资源使用情况
docker stats
# 增加 Docker 内存限制
# 在 docker-compose.yml 中添加:
# deploy:
# resources:
# limits:
# memory: 4G
# 清理不使用的 Docker 资源
docker system prune -f
docker volume prune -f
性能优化
1. 数据库优化
# 进入数据库容器
docker compose exec db psql -U bettafish -d bettafish
-- 创建索引优化查询性能
CREATE INDEX IF NOT EXISTS idx_content_created_at ON content(created_at);
CREATE INDEX IF NOT EXISTS idx_content_platform ON content(platform);
2. 应用优化
在 .env 文件中调整以下参数:
# 减少并发请求数量
MAX_CONCURRENT_REQUESTS=5
# 调整超时时间
REQUEST_TIMEOUT=30
# 启用缓存
ENABLE_CACHE=true
CACHE_TTL=3600
📊 监控和维护
日志管理
# 查看所有服务日志
docker compose logs
# 实时查看日志
docker compose logs -f
# 查看特定时间范围的日志
docker compose logs --since="2024-01-01T00:00:00" --until="2024-01-02T00:00:00"
# 将日志保存到文件
docker compose logs > bettafish.log
数据备份
# 备份 PostgreSQL 数据库
docker compose exec db pg_dump -U bettafish bettafish > backup_$(date +%Y%m%d_%H%M%S).sql
# 恢复数据库
docker compose exec -T db psql -U bettafish bettafish < backup_20240101_120000.sql
系统更新
# 拉取最新代码
git pull origin main
# 重新构建并启动服务
docker compose down
docker compose up -d --build
# 清理旧镜像
docker image prune -f
🤝 社区和支持
获取帮助
- GitHub Issues:https://github.com/666ghj/BettaFish/issues
注意:本指南基于 BettaFish 项目的当前版本编写,随着项目的更新,部分配置和使用方法可能会有所变化。建议定期查看项目的官方文档以获取最新信息。
更多文章