OoO
1da7564567
CD Pipeline / deploy (push) Has been cancelled
feat(p22+23): caller 整合 model_router (sales_copy) + cost_throttle (claude)
Operation Ollama-First v5.0 / Phase 22.1 + Phase 23 — 路由治理整合
Phase 22.1: services/ollama_service.py generate_sales_copy
- 短文 < 100 字(estimated_length = product_name × 5)→ 走 model_router
- model_router 推算 → 短文 gemma3:4b / 長文 llama3.1:8b
- MODEL_ROUTER_ENABLED=false 時 select_model 直接回 self.model(向下相容)
- router 失敗 swallow(fallback self.model 不影響主流程)
Phase 23: services/anthropic_service.py is_available()
- 新增 cost_throttle 整合:claude provider throttle 時 is_available=False
- caller 看到 False 自動走 Gemini fallback,不送 Claude 請求
- COST_THROTTLE_ENABLED=false 時不影響(戰役預設 OFF)
- cost_throttle 不可用時 try/except 不阻擋(向下相容)
行為對照:
戰前:sales_copy 永遠用 self.model (llama3.1:8b)
戰後(flag OFF):完全相同
戰後(flag ON):商品名 < 20 字 → gemma3:4b 短文,提速 50%
戰前:Claude 燒到月底超預算才告警,無自動節流
戰後(throttle flag OFF):完全相同
戰後(throttle flag ON):claude 月底推估 > 110% → is_available=False
→ caller fallback Gemini 自動省錢
regression: 既有 retry_chain / anthropic / model_router test 全綠
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 11:00:04 +08:00
..
2026-04-28 15:26:20 +08:00
2026-05-03 13:10:15 +08:00
2026-04-19 01:21:13 +08:00
2026-05-01 14:02:37 +08:00
2026-04-29 23:41:03 +08:00
2026-04-29 23:57:36 +08:00
2026-05-04 10:48:22 +08:00
2026-04-19 01:21:13 +08:00
2026-04-29 22:56:00 +08:00
2026-05-01 16:34:13 +08:00
2026-04-25 03:30:14 +08:00
2026-05-03 23:05:11 +08:00
2026-05-04 11:00:04 +08:00
2026-04-29 23:41:03 +08:00
2026-05-01 16:34:13 +08:00
2026-04-29 21:35:56 +08:00
2026-05-02 14:34:30 +08:00
2026-05-03 23:31:30 +08:00
2026-05-01 20:56:17 +08:00
2026-04-19 01:21:13 +08:00
2026-05-04 10:36:56 +08:00
2026-04-28 13:57:44 +08:00
2026-04-28 15:37:07 +08:00
2026-04-27 21:28:23 +08:00
2026-05-02 13:07:30 +08:00
2026-04-22 01:12:23 +08:00
2026-05-04 10:19:13 +08:00
2026-05-02 13:09:34 +08:00
2026-05-03 23:26:18 +08:00
2026-05-03 23:06:08 +08:00
2026-04-30 13:59:12 +08:00
2026-04-30 09:33:39 +08:00
2026-05-02 15:01:55 +08:00
2026-04-19 01:21:13 +08:00
2026-04-27 21:11:52 +08:00
2026-05-03 23:56:12 +08:00
2026-05-03 13:10:55 +08:00
2026-04-28 19:42:05 +08:00
2026-05-04 09:16:39 +08:00
2026-05-04 10:19:13 +08:00
2026-05-04 10:54:12 +08:00
2026-04-27 21:28:23 +08:00
2026-05-04 09:34:21 +08:00
2026-04-25 01:42:40 +08:00
2026-05-04 09:34:21 +08:00
2026-04-19 01:21:13 +08:00
2026-04-19 01:21:13 +08:00
2026-05-03 23:28:45 +08:00
2026-04-29 22:48:24 +08:00
2026-04-29 22:37:20 +08:00
2026-05-04 11:00:04 +08:00
2026-04-29 23:10:27 +08:00
2026-05-02 13:04:18 +08:00
2026-05-04 10:19:13 +08:00
2026-04-19 01:21:13 +08:00
2026-04-20 06:09:33 +08:00
2026-04-19 01:21:13 +08:00
2026-04-22 01:12:23 +08:00
2026-05-03 13:10:15 +08:00
2026-05-04 10:19:13 +08:00
2026-05-02 12:00:34 +08:00
2026-05-04 09:31:31 +08:00
2026-04-27 21:28:23 +08:00
2026-05-03 00:03:38 +08:00
2026-05-03 23:56:12 +08:00
2026-05-02 12:01:04 +08:00
2026-05-03 23:04:58 +08:00
2026-04-19 01:21:13 +08:00
2026-04-19 01:21:13 +08:00
2026-04-27 20:34:15 +08:00
2026-04-19 01:21:13 +08:00
2026-05-01 14:20:09 +08:00