# AI 复盘与模型配置说明

三个 `crypto_monitor_*` 实例共用仓库根目录 **`ai_client.py`**(通过 `PYTHONPATH=..` 导入).用于 **交易记录与复盘** 页的 AI 点评,短评建议,以及从复盘截图提取结构化 JSON.

---

## 一,二选一:`AI_PROVIDER`

| 值 | 说明 |
|----|------|
| **`openai`**(默认) | OpenAI 兼容 **Chat Completions** 接口 |
| **`ollama`** | 本机 Ollama **`/api/generate`**(流式 NDJSON) |

在对应子目录 **`.env`** 中设置(各所 `.env.example` 已含模板):

```bash
AI_PROVIDER=openai
AI_TIMEOUT_SECONDS=120

# OpenAI 兼容网关(默认)
OPENAI_API_BASE=https://op.bz121.com/v1
OPENAI_API_KEY=你的密钥
OPENAI_MODEL=gemma4:e4b

# 本机 Ollama(仅当 AI_PROVIDER=ollama)
OLLAMA_API=http://127.0.0.1:11434/api/generate
AI_MODEL=huihui_ai/deepseek-r1-abliterated:latest
```

### OpenAI 兼容网关

- **Base URL**:`https://op.bz121.com/v1`(请求路径为 `{base}/chat/completions`).
- **API Key**:在 [op.bz121.com](https://op.bz121.com/) 登录后,于 **`gateway.json`** 页面复制(与网关账号一致).
- **默认模型**:`gemma4:e4b`(可通过 `OPENAI_MODEL` 覆盖).

### Ollama

- 需本机已安装并拉取对应模型;`AI_PROVIDER=ollama` 时使用 `OLLAMA_API` 与 `AI_MODEL`.
- 三所 `app.py` **不再** 直连 Ollama;统一走 `ai_client.ai_generate` / `ai_review` / `ai_short_advice`.

---

## 二,部署注意

1. **PM2 / 手工启动**:`ecosystem.config.cjs` 中 **`PYTHONPATH=..`** 必须包含仓库根,否则无法 `from ai_client import ...`.
2. 修改 `.env` 后重启对应实例,例如:`pm2 restart crypto_binance`(名称以你机器为准).
3. **`git pull`** 不会改 `.env`;若 `.env.example` 新增 AI 变量,请手动补进本机 `.env`.
4. **勿** 将含真实 `OPENAI_API_KEY` 的 `.env` 提交 Git.

---

## 三,功能入口(网页)

登录后进入 **「交易记录与复盘」**:

- 单条记录 **AI 复盘** / **短评**(依赖上述配置).
- 上传复盘图后 **从图片提取** 字段(内部调用 `ai_generate`,与所选 provider 一致).

若请求超时或返回错误,请检查:密钥是否有效,网关是否可达,`AI_TIMEOUT_SECONDS` 是否过短,Ollama 是否已启动(仅 ollama 模式).

---

## 四,相关文件

| 路径 | 说明 |
|------|------|
| `ai_client.py` | 统一封装 OpenAI / Ollama |
| `crypto_monitor_*/.env.example` | 各所环境变量模板 |
| 各所《部署文档.md》§ AI 复盘 | 与本文一致的简表 |
| 各所《使用说明.md》 | 运行前配置中的 AI 项 |
