iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0
Build on Google AI

打造零成本企業級 AI Agent:以 Gemini 2.5 Flash 構建金融分析助手與維運實戰系列 第 22

【Day 22】離線評測體系:如何為 LLM 金融 Agent 建立客觀的 Evaluation 指標

  • 分享至 

  • xImage
  •  

「在 AI Agent 的工程週期中,『沒有量測,就無法改善』。要確保每一次 Prompt 調整或 API 重構不會造成性能退化,必須在腳本內部實作決定性的格式驗證,並將預測結果持久化沉澱以進行離線評測。」

先前,我們完成了三階段分析 pipeline、Prompt 強制執行規則、後處理淨化、Telegram Byte-Safe 推播、Google Sheets 數據追蹤、systemd 服務託管與實戰資安防禦..。
當系統進入自動化運行的生產階段後,我們面臨另一個挑戰:「當我們調整了 Prompt 或更新了 Gemini API 模型版本,要如何客觀評估分析品質是否有下滑或產生新的幻覺呢?」
今天我們將深入剖析實作的品質校驗邏輯與 Google Sheets 評測數據沉澱 cycle !

本篇重點摘要

  1. 剖析 daily_analysis.py 腳本內建的三階段輸出驗證與 Fallback 機制。
  2. 解析 _fmt() 前處理正則與 Core Rules 在品質控制上的決定性作用。
  3. 結合 sheets_tracker.py 沉澱歷史 AI 方向標籤,建立離線勝率評測資料庫。

一、 daily_analysis.py 中的決定性品質驗證邏輯

沒有將品質控制完全交給模型自律,而是在程式碼流程中加入了強制的校驗與結構化規範:

  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 字、禁止系統用語、必須包含停損點位等),確保每一次輸出的格式完全一致。

二、利用 Google Sheets 沉澱離線評測資料集

除了運行時的即時校驗,離線評測(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 應對實務


上一篇
【Day 21】實戰資安防禦:從 Prompt 注入防禦到環境金鑰隔離實務
下一篇
【Day 23】效能與成本優化:Gemini API Token 消耗分析與 Rate Limit 應對實務
系列文
打造零成本企業級 AI Agent:以 Gemini 2.5 Flash 構建金融分析助手與維運實戰23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言