All checks were successful
CD Pipeline / deploy (push) Successful in 2m44s
Operation Ollama-First v5.0 / Phase 20 + LLM 模型治理 services/cost_throttle_service.py (新檔, 200+ 行) - evaluate_throttle_status() 每小時 cron 跑 - 查 ai_call_budgets monthly × 累計 spent → 月底線性外推 - 推估 > 預算 110% → 標 throttled(hysteresis:降到 95% 才解除) - _push_throttle_alerts: 狀態變化推 Telegram - is_provider_throttled(provider) public API(給 anthropic/gemini caller 啟動 check) - COST_THROTTLE_ENABLED 預設 OFF(避免戰時誤節流) run_scheduler.py 加 2 cron + task wrapper - 每 1 小時:cost_throttle_evaluate - 每日 00:05:cost_throttle_reset_if_new_month docs/llm_model_full_evaluation_20260504.md (260+ 行) - 場景 × 模型對應矩陣(4 大層次) 戰術層 / 戰略層 / 多模態 / 雲端 API - 本次啟動的追加 4 模型(qwen2.5-coder:32b / deepseek-r1:14b / llava / gemma3:4b)— Primary + Secondary 並行拉 - Phase 21 路由優化建議(context size + complexity 動態選 model) - Phase 22 多供應商編排 + cost throttle 整合 - 儲存 / RAM / 延遲評估 - 模型治理 SOP(新增 / 替換 / 淘汰) - COST_TABLE 對齊(含 deepseek 直連價格) 啟用前置(待統帥): 1. Primary + Secondary 4 模型拉完(背景進行中) 2. .env: COST_THROTTLE_ENABLED=true(觀察 1 週後) 3. ANTHROPIC_API_KEY 設後 Code Review 自動切 Claude Opus 4.7 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
208 lines
7.9 KiB
Markdown
208 lines
7.9 KiB
Markdown
# 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`
|