去掉大模型

This commit is contained in:
dekun
2026-05-26 10:20:45 +08:00
parent 1845018151
commit b91721d315
13 changed files with 39 additions and 962 deletions
+19 -77
View File
@@ -13,10 +13,10 @@
| 项目 | 说明 |
|------|------|
| 系统 | Linux(推荐 Ubuntu 22.04+ / Debian 12+ |
| 时区 | `Asia/Shanghai`(定时任务 08:00 / 08:05 / 08:10 北京时间) |
| 网络 | 能访问 `fapi.binance.com`;大模型需能访问 `LLM_BASE_URL`(默认 `http://op.bz121.com` |
| 代理 | 币安不可直连时开启 SOCKS5(见第节) |
| 内存 | 建议 ≥ **1GB**(含 `matplotlib` 生成日 K 图供大模型) |
| 时区 | `Asia/Shanghai`(定时任务 08:00 / 08:10 北京时间) |
| 网络 | 能访问 `fapi.binance.com` |
| 代理 | 币安不可直连时开启 SOCKS5(见第节) |
| 内存 | 建议 ≥ 512MB |
| 磁盘 | ≥ 500MB(含日志、SQLite、日 K 缓存) |
| Python | 3.10+**PM2 部署必须使用项目内 `.venv`** 安装依赖 |
@@ -36,7 +36,7 @@ sudo chown -R $USER:$USER /opt/Binance_Altcoin_Monitor
# 3. 配置环境变量
cd /opt/Binance_Altcoin_Monitor
cp .env.example .env
nano .env # 至少填写 WECOM_WEBHOOK_URL;大模型解读需填 LLM_API_KEY
nano .env # 至少填写 WECOM_WEBHOOK_URL
```
`.env` 常用项:
@@ -53,13 +53,6 @@ REFRESH_MINUTES=240
PROXY_ENABLED=false
PROXY_URL=socks5h://192.168.8.4:1081
PROXY_FOR=binance
# 大模型解读(OpenAI 兼容网关)
LLM_BASE_URL=http://op.bz121.com
LLM_API_KEY=sk-你的密钥
LLM_MODEL=gemma4:e4b
LLM_SYMBOL_INTERVAL_SEC=180
LLM_AUTO_ON_STARTUP=true
```
完整变量说明见仓库 [`.env.example`](./.env.example) 与 [README.md](./README.md)。
@@ -68,7 +61,7 @@ LLM_AUTO_ON_STARTUP=true
## 二点五、Python 依赖与虚拟环境(重要)
本项目 **所有 Python 依赖** 均来自 `backend/requirements.txt`(含 `matplotlib`,用于服务端渲染日 K PNG 并喂给大模型)
本项目 **所有 Python 依赖** 均来自 `backend/requirements.txt`
| 部署方式 | 依赖安装位置 | 说明 |
|----------|--------------|------|
@@ -94,10 +87,10 @@ pm2 restart binance-altcoin-monitor
### 验证依赖是否装在 venv 内
```bash
.venv/bin/python -c "import matplotlib; import fastapi; print('ok')"
.venv/bin/python -c "import fastapi; print('ok')"
```
若报 `No module named matplotlib`,说明未在 **`.venv`** 中安装,请执行上节 `pip install` 后重启 PM2。
若报 `No module named ...`,说明未在 **`.venv`** 中安装,请执行上节 `pip install` 后重启 PM2。
### Docker:更新依赖
@@ -147,8 +140,6 @@ docker compose down
# 手动测试企微推送
curl -X POST http://127.0.0.1:21450/api/push/test
# 查看大模型解读状态(需已配置 LLM_API_KEY
curl http://127.0.0.1:21450/api/llm/status
```
### 3.4 访问 Web
@@ -173,7 +164,7 @@ sudo apt install -y nodejs
sudo npm install -g pm2
```
> **注意**:业务依赖(`fastapi`、`matplotlib` 等)**不要**只执行 `sudo pip install`,应交给脚本或 `.venv/bin/pip`(见 **二点五**)。
> **注意**:业务依赖(`fastapi`、`httpx` 等)**不要**只执行 `sudo pip install`,应交给脚本或 `.venv/bin/pip`(见 **二点五**)。
### 4.2 一键部署
@@ -200,53 +191,7 @@ pm2 save
---
## 五、大模型解读(可选
**连续三日成交额均为 Top30 的交集币种** 进行 AI 简析(涨跌幅不限)。服务端用 `matplotlib` 生成日 K+成交量 PNG,通过 OpenAI 兼容接口发给网关。
| 变量 | 说明 |
|------|------|
| `LLM_BASE_URL` | 网关根地址,默认 `http://op.bz121.com` |
| `LLM_API_KEY` | `Authorization: Bearer sk-...`**勿提交 git** |
| `LLM_MODEL` | 与网关模型 ID 一致,默认 `gemma4:e4b` |
| `LLM_SYMBOL_INTERVAL_SEC` | 批量解读时每币间隔,默认 `180`3 分钟) |
| `LLM_AUTO_ON_STARTUP` | 服务启动后是否后台自动跑一轮,默认 `true` |
### 定时与行为
| 时间(北京时间) | 行为 |
|------------------|------|
| **08:05** | 自动对三日交集币种排队解读 |
| **启动时** | 若已配置 `LLM_API_KEY``LLM_AUTO_ON_STARTUP=true`,后台自动启动一轮 |
Web「数据统计」页可查看解读结果,或点击 **「开始解读」** 手动触发。
### API 速查
```bash
# 任务状态(是否在跑、当前币种、进度)
curl http://127.0.0.1:21450/api/llm/status
# 手动启动批量解读(后台异步,勿重复点击)
curl -X POST http://127.0.0.1:21450/api/llm/interpret/run
# 最近一批解读文本
curl http://127.0.0.1:21450/api/llm/interpretations
# 单币日 K PNG(调试用)
curl -o chart.png http://127.0.0.1:21450/api/chart/BTCUSDT/daily.png
```
### 配置后生效
**PM2** 修改 `.env``pm2 restart binance-altcoin-monitor`
**Docker** `docker compose up -d --force-recreate`
若网关不支持 vision,服务会降级为纯文本解读(日志中有 warning)。
---
## 六、SOCKS5 代理(默认关闭)
## 五、SOCKS5 代理(默认关闭
当服务器**无法直连**币安 API 时,可通过内网 SOCKS5 代理访问。
@@ -310,7 +255,7 @@ curl http://127.0.0.1:21450/api/today/top30
---
## 、防火墙与 Nginx(可选)
## 、防火墙与 Nginx(可选)
```bash
# 开放 21450(若直接对外)
@@ -334,12 +279,11 @@ server {
---
## 、定时任务说明
## 、定时任务说明
| 时间(北京时间) | 行为 |
|------------------|------|
| 08:00 | 固化昨日、前日周期快照 |
| 08:05 | 大模型解读三日 Top30 交集(需 `LLM_API_KEY` |
| 08:10 | 企业微信推送 **三日 Top30 交集**(卡片列表,非宽表格) |
| 每 4 小时(0/4/8/12/16/20 点) | 刷新今日数据(`REFRESH_MINUTES=240` |
@@ -349,13 +293,13 @@ Web 今日表 **不会** 每 60 秒自动轮询;除上述定时外,使用页
---
## 、目录与数据
## 、目录与数据
```
/opt/Binance_Altcoin_Monitor/
├── .env # 配置(勿提交 git)
├── .venv/ # Python 虚拟环境(PM2 专用,勿删)
├── data/monitor.db # SQLite(周期快照、日 K、资金费率、LLM 解读
├── data/monitor.db # SQLite(周期快照、日 K、资金费率)
├── logs/ # PM2 日志(Docker 用 docker compose logs
├── deploy/ # 一键脚本
├── docker-compose.yml
@@ -366,9 +310,9 @@ Web 今日表 **不会** 每 60 秒自动轮询;除上述定时外,使用页
---
## 、更新版本
## 、更新版本
拉取代码后,**务必**按部署方式重装 Python 依赖(`requirements.txt` 变更时尤其重要,例如新增 `matplotlib`)。
拉取代码后,**务必**按部署方式重装 Python 依赖(`requirements.txt` 变更时)。
**Docker**
@@ -398,26 +342,24 @@ pm2 restart binance-altcoin-monitor
---
## 十、故障排查
## 十、故障排查
| 现象 | 处理 |
|------|------|
| `bash\r: No such file or directory` | 脚本为 Windows 换行,执行:`sed -i 's/\r$//' deploy/*.sh && chmod +x deploy/*.sh` |
| `cannot pull with rebase: unstaged changes` | 执行 `git stash` 后重试;或 `DEPLOY_SKIP_GIT_PULL=1 ./deploy/pm2-deploy.sh` 跳过拉取 |
| `No module named pip` | 执行 `sudo apt install -y python3-venv` 后重新 `./deploy/pm2-deploy.sh`(脚本会用 .venv |
| `No module named matplotlib`(或其它包) | 依赖未装进 **`.venv`**:执行 `.venv/bin/pip install -r backend/requirements.txt``pm2 restart`;勿只装系统 Python |
| `No module named ...` | 依赖未装进 **`.venv`**:执行 `.venv/bin/pip install -r backend/requirements.txt``pm2 restart` |
| Web 无数据 | 检查能否访问币安;国内服务器尝试 `PROXY_ENABLED=true` |
| 大量 `418 I'm a teapot` | IP 被封禁;**不要反复 restart**。日 K 已存 SQLite,图表优先读本地;仅过期或首次才请求币安 |
| 企微收不到 | 检查 `WECOM_WEBHOOK_URL``curl -X POST .../api/push/test` |
| 08:10 未推送 | 确认容器/PM2 在 08:10 前已运行;查日志 |
| 大模型无解读 / 状态 `enabled: false` | 检查 `.env``LLM_API_KEY``curl .../api/llm/status`;确认服务器能访问 `LLM_BASE_URL` |
| 解读一直 `running` | 查看 `pm2 logs`;可能某币请求超时;可重启进程后手动 `POST /api/llm/interpret/run` |
| 端口占用 | `ss -tlnp \| grep 21450` 或改 `.env``PORT` |
| Docker 代理连不上 | 确认 `192.168.8.4:1081` 从容器内可达,必要时改宿主机 IP |
---
## 十、快速命令速查
## 十、快速命令速查
```bash
# Docker 一键