Files
ewoooc/docs/llm_model_full_evaluation_20260504.md
OoO c13dc22639
All checks were successful
CD Pipeline / deploy (push) Successful in 2m44s
feat(p20)+docs: cost auto-throttle + LLM 模型完整評估
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>
2026-05-04 10:36:56 +08:00

208 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-028LLM 路由統一準則)
- ADR-029Hermes-First 雙塔分工)
- ADR-030Frontier 多供應商策略)
- `services/ai_call_logger.py` COST_TABLE
- `services/llm_caller_registry.py` CALLER_REGISTRY
- `docs/operation_ollama_first_v5_postmortem.md`