「在 AI Agent 的工程週期中,『沒有量測,就無法改善』。要確保每一次 Prompt 調整或 API 重構不會造成性能退化,必須在腳本內部實作決定性的格式驗證,並將預測結果持久化沉澱以進行離線評測。」
先前,我們完成了三階段分析 pipeline、Prompt 強制執行規則、後處理淨化、Telegram Byte-Safe 推播、Google Sheets 數據追蹤、systemd 服務託管與實戰資安防禦..。
當系統進入自動化運行的生產階段後,我們面臨另一個挑戰:「當我們調整了 Prompt 或更新了 Gemini API 模型版本,要如何客觀評估分析品質是否有下滑或產生新的幻覺呢?」
今天我們將深入剖析實作的品質校驗邏輯與 Google Sheets 評測數據沉澱 cycle !
沒有將品質控制完全交給模型自律,而是在程式碼流程中加入了強制的校驗與結構化規範:
1. Stage 1 分類驗證與 Fallback 降級
在 Stage 1 盤態分析時,若 Gemini API 回傳非預期的 JSON 格式或解析失敗,系統不會直接潰散,而是自動降級並給予標準預設值,確保後續 Stage 3 能持續取得結構化輸入:
Python
# daily_analysis.py 中的 Stage 1 容錯解析邏輯
try:
stage1_data = json.loads(cleaned_response)
except json.JSONDecodeError:
# 發生解析錯誤時降級為預設結構
stage1_data = {
"market_sentiment": "中性",
"key_drivers": ["數據解析異常,採用保守評估"],
"risk_level": "中"
}
2. 數據格式決定性前處理 (_fmt)
為了防止 raw API 回傳的多位數金額在輸出時產生算術幻覺,在送入 Prompt 之前,先透過正則將金額轉換為以「億/兆」為單位,從源頭確保數據可讀性:
Python
# PRE-PROCESS: 自動將 9 位數以上金額標準化
tw_summary_parts = [_re.sub(r'[\d,]{9,}', lambda m: _fmt(m.group(0)), p) for p in tw_summary_parts]
3. Core Execution Rules 硬性字數與格式約束
在 Stage 3 最終生成時,寫死 7 條 Core Rules 進行結構邊界控管(如長度 800-1000 字、禁止系統用語、必須包含停損點位等),確保每一次輸出的格式完全一致。
除了運行時的即時校驗,離線評測(Offline Evaluation)更需要 long-term 的歷史資料累積。
在 Day 19 介紹的 sheets_tracker.py 整合中,我們每次執行完畢都會將當日 AI 的預判方向與盤後數據寫入雲端試算表:
Python
# 每日自動寫入 Google Sheets 進行歷史沉澱
sheets_data = {
'日期': datetime.now(TW_TZ).strftime('%Y-%m-%d'),
'加權指數': tw_summary.get('收盤指數', 'N/A'),
'漲跌幅(%)': tw_summary.get('漲跌百分比(%)', 'N/A'),
'AI方向': ai_direction, # 自動提取之「看多/看空/中性」標籤
'推撥狀態': '成功' if success else '失敗',
'分析摘要': (report or '').replace('\n', ' ')[:500],
}
record_daily_data(sheets_data)
透過這套機制,我們在不需要額外撰寫複雜評測架構的前提下,完成了最符合實務需求的 Evaluation 閉環:
daily_analysis.py 運行
│
├──> 1. 即時驗證 (JSON Fallback + _fmt 前處理 + 7 條 Core Rules)
│
└──> 2. 數據持久化 (寫入 Google Sheets 紀錄日期、指數與 AI方向)
│
▼
離線勝率評測 (比對隔日實際指數漲跌 vs AI方向,計算勝率與邏輯一致性)
1. 離線勝率追蹤:隨時打開 Google Sheets,即可對比歷史「AI方向」與隔日 TWSE「實際漲跌」,統計模型在不同盤態下的預測準確率。
2. Prompt 疊代防禦:當修改 Prompt 或替換 Gemini 模型版本時,可比對新舊版本在相同歷史行情下的 AI 方向判讀是否產生 Regression。
透過 daily_analysis.py 內建的品質驗證與 Google Sheets 數據沉澱,我們達成了:
1. 運行時品質防線:透過代碼前處理與 JSON Fallback,確保輸出的確定性與可讀性。
2. 無痛 Evaluation cycle:無需複雜的第三方測試架構,直接利用 Google Sheets 資料集實現實用導向的勝率與性能評測。
明天(Day 23)我們將進入 系統效能與成本優化:Gemini API Token 消耗分析與 API Rate Limit 應對實務!
明日預告:【Day 23】效能與成本優化:Gemini API Token 消耗分析與 Rate Limit 應對實務