iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0
Build on Google AI

30 天用 Google AI 打造台灣防災速報 App系列 第 4

Day 04|第一次呼叫 Gemini:它讀懂了示警,還自己多加一句提醒

  • 分享至 

  • xImage
  •  

系列:30 天用 Google AI 打造臺灣防災速報 App(Day 4/30)

前三天都在紙上談兵,今天正式動手:申請 API 金鑰、安裝 SDK、寫下本系列第一支呼叫 Gemini 的程式。

Step 1:從 AI Studio 取得金鑰

  1. 開啟 Google AI Studio,用 Google 帳號登入。
  2. 左側選單進入「Get API key」,建立新金鑰(會連結一個 Google Cloud 專案,沒有的話會自動建立)。
  3. 把金鑰存成環境變數,不要直接寫在程式碼裡:
export GEMINI_API_KEY="你的金鑰"

免費層級有每分鐘與每日的請求數上限,開發階段完全夠用。

Step 2:安裝 SDK

Python 環境用官方的 google-genai 套件:

pip install google-genai

Step 3:第一次呼叫,讓模型自我介紹任務

from google import genai

client = genai.Client()  # 自動讀取 GEMINI_API_KEY 環境變數

MODEL = "gemini-3.1-flash-lite"   # 固定版本,別用 latest 別名(理由見下)

resp = client.models.generate_content(
    model=MODEL,
    contents="你是臺灣防災速報助理。用兩句話說明你的工作。",
)
print(resp.text)

實測輸出(2026-09-16):

我是臺灣防災速報助理,致力於即時提供氣象、地震與各類災害預警資訊。我協助您掌握最新防災動態,讓您能提前做好準備,保障自身與家人的安全。

這段自我介紹提到的「即時提供預警」,目前系統還做不到;今天只確認呼叫流程可用,輸出內容怎麼約束,之後會處理。

模型名稱固定成具體版本,不用 gemini-flash-latest 這類別名。別名指向的模型會隨官方更新而改變,同一個 prompt 的輸出也會跟著變,之後做品質評估時就沒有比較基準;固定版本後,升級是有意識的決定。模型的供應狀態會變動(例如 gemini-2.5-flash 已不再提供給新申請的金鑰),程式無法執行時,先到 AI Studio 的模型列表核對名稱。

Step 4:輸入真實示警

把 Day 2 取得的 NCDR 示警交給模型,看它能不能讀懂 CAP 摘要:

# 接續 Step 3:沿用前面建立的 client 與 MODEL
from src.fetch_ncdr import fetch_alerts

alerts = fetch_alerts()
alerts.sort(key=lambda a: a["updated"], reverse=True)   # feed 順序不保證最新在前
alert = alerts[0]
prompt = f"""以下是一則臺灣官方防災示警的原始內容,
請用 50 字以內的白話文告訴一般民眾:發生什麼事、影響哪裡、該注意什麼。

分類:{alert['category']}
發布單位:{alert['sender']}
內容:{alert['summary']}"""

resp = client.models.generate_content(
    model=MODEL, contents=prompt, config={"temperature": 0.2})
print(resp.text)

實測(2026-09-16 清晨,當時 feed 共 1,076 筆)取得的最新一筆是水利署的水庫放流示警,原文如下:

水利署訊湖山水庫:(洩洪至北港溪):自由溢流,影響範圍:雲林縣,古坑鄉、虎尾鎮、水林鄉、斗六市、莿桐鄉、土庫鎮、斗南鎮、北港鎮、元長鄉、口湖鄉、大埤鄉;嘉義縣,新港鄉、溪口鄉、六腳鄉、東石鄉

模型的輸出:

湖山水庫正進行洩洪,影響雲林縣及嘉義縣沿岸區域。請民眾遠離北港溪河床,切勿戲水或釣魚,以策安全。

48 個字,水庫與溪名正確,原文擠在一起的半形冒號與括號都處理掉了,15 個鄉鎮被收斂成「雲林縣及嘉義縣沿岸區域」,這是 50 字限制下合理的取捨。但要注意「切勿戲水或釣魚」是模型自己補的,原文完全沒有這句;今天它補得合理,可是「模型該不該替官方加一句提醒」是防災系統的核心設計問題,之後會正面處理。這就是接下來 26 天要強化、也要約束的能力。

今日小結

  • AI Studio 金鑰申請、google-genai SDK 安裝完成,金鑰走環境變數;模型名稱固定具體版本,不用 latest 別名。
  • 第一支程式順利執行:NCDR 示警 → Gemini → 48 字白話摘要,順便看到模型「自己補一句提醒」的習性。

明天 Day 5,回頭把資料端做扎實:CAP 解析器要處理去除重複、狀態更新與統一分類,才能提供乾淨的資料給模型。


上一篇
Day 03|整理工具箱:Google AI 5 種工具,各自負責什麼?
下一篇
Day 05|1,074 筆示警、161 組重複 id:被真實資料推翻的去除重複設計
系列文
30 天用 Google AI 打造台灣防災速報 App9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言