# LLM 模型完整評估 — Operation Ollama-First v5.0

> **日期**：2026-05-04
> **目的**：評估 momo-pro 各場景對應的最佳 LLM 模型，並啟動建議模型
> **整體原則**：Ollama-first（免費）→ Frontier API（鎖定 5+ 場景）→ 規則引擎兜底

---

## 一、場景 × 模型對應矩陣

### 1.1 戰術層（高頻、結構化、Ollama-only）

| 場景 | 既有模型 | 建議模型 | 為何 |
|---|---|---|---|
| **Hermes 競價分析** (4h × 300 SKU) | `hermes3:latest` (8B) | 維持 + `qwen3:14b` 升級鏈 | 8B 處理 95% 案例足夠；複雜 SKU 升級 14B |
| **Hermes 意圖分類** (Telegram NLP) | `hermes3:latest` | 維持 | 結構化 JSON 輸出穩定 |
| **NemoTron 威脅分派** | NIM 8B / `qwen3:14b` (flag) | `qwen3:14b` 為主 | A2 確認 qwen3 原生支援 tools |
| **AiderHeal 修 Code** | `qwen2.5-coder:7b` | **升 `qwen2.5-coder:32b`** ⭐ | 程式碼能力 +30%（接近 Opus 4.6）|
| **Sales Copy 文案** | `llama3.1:8b` | `gemma3:4b` (輕量) | 短文案不需 8B |

### 1.2 戰略層（低頻、敘事型、鎖定 Frontier）

| 場景 | 鎖定模型 | 為何鎖定 |
|---|---|---|
| **OpenClaw 週報** | `gemini-2.5-flash` 🔒 | 長 context + 繁中商業文體 |
| **OpenClaw 月報** | `gemini-2.5-flash` 🔒 | 同上 |
| **OpenClaw 日報洞察** (200 字) | `gemini-2.5-flash` 🔒 | 精簡敘事 |
| **OpenClaw Q&A** (Telegram) | `qwen3:14b` (主) → Gemini fallback | A7 已切（flag ON） |
| **Code Review 高階評估** | **Claude Opus 4.7** (Phase 7 待 KEY) | Arena Elo 1548 (#1) |
| **EA HITL 戰略決策** | `gemini-2.0-flash` (現) → Claude Sonnet 4.6 候選 | agentic 工具使用佳 |

### 1.3 多模態與專用

| 場景 | 模型 | 已拉？ |
|---|---|---|
| **Embedding (KM/RAG)** | `bge-m3:latest` (1024 維) | ✅ Primary + Secondary |
| **PPT 視覺檢查** (Phase 14) | `minicpm-v:latest` (主) + `llava` (備援) | ✅ Primary + Secondary minicpm-v / 拉 llava ⏳ |
| **深度推理** (DeepSeek-R1) | `deepseek-r1:14b` | 拉中 ⏳ |

### 1.4 雲端 API（鎖定 Frontier）

| 供應商 | 模型 | 用途 |
|---|---|---|
| **Anthropic** | `claude-opus-4-7` | Code Review #1 (Arena 1548) |
| **Anthropic** | `claude-sonnet-4-6` | EA HITL 候選（agentic）|
| **Google** | `gemini-2.5-pro` | MCP Grounding（聯網）|
| **Google** | `gemini-2.5-flash` | 週/月/年報、Q&A fallback |
| **Google** | `gemini-2.0-flash` | PPT 簡報、EA HITL |
| **DeepSeek** | `deepseek-chat` (V3.2) | OpenRouter 直連備援 |
| **DeepSeek** | `deepseek-reasoner` (R1-0528) | 推理鏈備援 |
| **NVIDIA NIM** | `meta/llama-3.1-8b-instruct` | NemoTron fallback |
| **NVIDIA NIM** | `nvidia/llama-3.3-nemotron-super-49b-v1.5` | ElephantAlpha 49B |

---

## 二、本次啟動的追加模型

### 2.1 Primary 34.143.170.20 (oleetsai)

```bash
# 既有（Phase 0-19 累積）
✅ bge-m3:latest         (1.2GB) — Embedding
✅ hermes3:latest        (4.7GB) — Hermes 主
✅ qwen2.5-coder:7b      (4.7GB) — AiderHeal
✅ qwen3:14b             (9.3GB) — Q&A / Nemotron 升級
✅ qwen2.5:7b-instruct   (4.7GB) — Q&A 預設
✅ minicpm-v:latest      (5.5GB) — PPT vision

# 本次追加（背景拉中）
⏳ qwen2.5-coder:32b    (~20GB) — AiderHeal 32B 升級
⏳ deepseek-r1:14b      (~9GB)  — 推理鏈備援
⏳ llava                (~5GB)  — Vision 備援
⏳ gemma3:4b            (~3GB)  — 輕量 sales_copy

預計總容量：~60GB
```

### 2.2 Secondary 34.21.145.224 (owen_taipei)

```bash
# 本次新建立連線後拉（與 Primary 同步）
✅ bge-m3:latest        (剛同步)
✅ hermes3:latest       (剛同步)
✅ qwen2.5-coder:7b     (剛同步)
✅ qwen3:14b            (剛同步)
✅ qwen2.5:7b-instruct  (剛同步)
✅ minicpm-v:latest     (剛同步)
⏳ qwen2.5-coder:32b   (背景拉中)
⏳ deepseek-r1:14b     (背景拉中)
⏳ llava               (背景拉中)
⏳ gemma3:4b           (背景拉中)
```

---

## 三、各場景升級路線（戰役後續）

### Phase 21（建議）：模型對應路由優化

| 場景 | 路由規則 |
|---|---|
| Sales Copy < 100 字 | `gemma3:4b`（輕量快） |
| Sales Copy ≥ 100 字 | `llama3.1:8b`（既有） |
| Hermes 簡單比價 | `hermes3:latest` |
| Hermes 複雜分析 (gap > 20% / 銷量大跌) | `qwen3:14b` 升級 |
| AiderHeal 簡單修補 | `qwen2.5-coder:7b` |
| AiderHeal 重構級 | `qwen2.5-coder:32b` ⭐ |
| EA HITL 明確威脅 | Hermes 規則引擎（免費）|
| EA HITL 戰略決策 | `claude-sonnet-4-6` 候選 |
| 推理需求（chain-of-thought）| `deepseek-r1:14b` |
| PPT 視覺檢查 | `minicpm-v:latest` → `llava` 備援 |

### Phase 22（建議）：API 直連 + 多供應商編排

```
                    ┌──────────────────────────────┐
                    │  CostThrottle (Phase 20) ⭐  │
                    │  超預算 110% 自動切 fallback │
                    └────────────┬─────────────────┘
                                 │
        ┌────────────────────────┼────────────────────────┐
        │                        │                        │
   Code Review             EA HITL                  Q&A 戰略
        │                        │                        │
   Claude Opus 4.7        Gemini 2.0 Flash           qwen3:14b
        ↓ throttle              ↓ throttle               ↓ low quality
   Gemini 2.5 Flash       Hermes 預跑兜底           Gemini 2.5 Flash
        ↓ throttle                                       ↓
   ElephantAlpha 49B                                Hermes 規則引擎
```

---

## 四、儲存空間 + 性能評估

### 4.1 GCP 預期用量
- 每台 GCP 約 60GB Ollama 模型（Primary + Secondary 各一份冗餘）
- 12 個模型 × 平均 5GB = 60GB
- 假設 GCP VM 100GB SSD → 60% 使用率，可控

### 4.2 RAM 載入
- Ollama keep_alive=24h 可保留熱模型（hermes3 / qwen3:14b 永駐留）
- 冷模型（minicpm-v / llava）首次調用 ~10s 加載
- 解：分批載入 + 配置 OLLAMA_NUM_PARALLEL=2 限制同時載入數

### 4.3 推論延遲（GCP SSD）
| 模型 | 預期延遲（256 tokens） |
|---|---|
| gemma3:4b | ~1.5s |
| hermes3:latest | ~3s |
| qwen2.5:7b-instruct | ~3s |
| qwen3:14b | ~6s |
| deepseek-r1:14b | ~8s（含 thinking）|
| qwen2.5-coder:32b | ~12s |
| minicpm-v:latest | ~10s（含 image） |

---

## 五、模型治理規範（補強 ADR-028）

### 5.1 新增模型 SOP
1. 評估 ROI（場景對應 + 預期降本/升質量化）
2. SSH GCP Primary 試拉確認 size + 推論延遲
3. 加進 ai_call_logger COST_TABLE
4. 加 caller × model 路由規則
5. unit test 驗 routing
6. 灰度啟用（feature flag）
7. 1 週觀察後正式啟用

### 5.2 既有模型替換 SOP
1. A/B 測試新舊模型對 10+ 黃金樣本
2. 統帥盲測通過後才替換
3. 舊模型保留為 fallback（不立刻刪）
4. 寫進 ADR

### 5.3 模型淘汰 SOP
1. 連續 7 日 0 流量 → 標記 deprecated
2. 30 日仍 0 流量 → SSH GCP 刪除節省空間
3. ADR 註明淘汰原因

---

## 六、與 ai_call_logger COST_TABLE 對齊

| Model | Cost (in/out per M) | 為何 |
|---|---|---|
| 全 Ollama 模型 | 0 / 0 | 自架免費 |
| gemini-2.5-pro | $1.25 / $10.0 | 高品質 |
| gemini-2.5-flash | $0.075 / $0.30 | 性價比 |
| claude-opus-4-7 | $15 / $75 | 程式碼 #1 |
| claude-sonnet-4-6 | $3 / $15 | 平衡 |
| claude-haiku-4-5 | $0.8 / $4 | 輕量 |
| deepseek-chat | $0.014 / $0.28 | 直連最便宜 |
| deepseek-reasoner | $0.14 / $2.19 | 推理 |
| NIM 系列 | 0 / 0 | 配額制 |

---

## References

- ADR-027 附錄（三主機架構）
- ADR-028（LLM 路由統一準則）
- ADR-029（Hermes-First 雙塔分工）
- ADR-030（Frontier 多供應商策略）
- `services/ai_call_logger.py` COST_TABLE
- `services/llm_caller_registry.py` CALLER_REGISTRY
- `docs/operation_ollama_first_v5_postmortem.md`
