期末專題:真實資料 × AI agent

找資料、接上 Claude Code/Codex/OpenCode、留下能重現的分析
先寫問題|讓 agent 找資料|下載原始檔|本機分析|記錄出處
📌 這頁給誰看

準備期末專題、想用開放政府資料或其他真實資料的同學。這頁介紹推薦的資料來源, 示範怎麼用 MCP 把資料來源接進 AI agent,以及交件時怎麼讓結果可以重現。 使用哪個來源、哪個 AI 工具都不強制。

CONTENTS · 內容目錄
PART 01 · 第 1 節

先想問題,再找資料

期末專題鼓勵大家用開放政府資料或其他真實資料,避免選用已被大量分析過的公開資料集。 現在的 AI coding agent(例如 Claude Code、Codex CLI、OpenCode)可以幫你搜尋資料目錄、讀欄位說明、寫下載與清理程式, 找資料這一步比以前省力很多。分析的想法與判斷仍須由你自己負責。MCP 能做與不能做的事見 P03; 請 AI 協助分析之前,先看 P05 的核對清單,更完整的原則在 課前準備 C:用 AI 做統計分析。

① 先寫下問題想回答什麼?結果要給誰看?一列資料代表什麼?
② 讓 agent 幫你找用自然語言描述需求,請它列出候選資料集、欄位、時間範圍與授權。
③ 下載原始檔回到資料的原始機關下載,存進 data/raw/,記下網址與取得日期。
④ 在本機分析之後的清理、EDA、建模都從本機的原始檔開始跑,不再依賴線上查詢。
為什麼要把原始檔存下來? 線上查詢服務有額度限制,API 資料也會更新或修訂。只要原始檔存在本機,額度用完、服務改版或資料被更新,都不影響你的專題,助教也能重現你的結果。
PART 02 · 第 2 節

推薦的資料來源

下表的來源都不強制使用,任何可靠的來源都可以。前五個是台灣政府機關的官方資料,都免費,授權條款請到各站確認; Twinkle Hub 適合用中文描述需求、讓 agent 幫你找資料;做國際題目可以看 FRED 與 Our World in Data。

來源適合的題目怎麼取得帳號/金鑰
政府資料開放平臺各部會資料,題材最廣網頁下載(CSV、JSON、XML);也有不需金鑰的 REST API不需要
內政部不動產實價登錄房價、迴歸、空間差異下載 ZIP(本期與按季資料),檔案固定、容易重現不需要
主計總處總體統計資料庫總體經濟時間序列網頁查詢;也有匿名 API(回傳 JSON)不需要
中央銀行統計資料庫匯率、利率、金融資料網頁查詢;API 回傳 JSON不需要
中央氣象署開放資料平臺天氣、氣候、災害API 與檔案下載;API 多為近期資料,要自己存快照免費會員授權碼
Twinkle Hub用中文搜尋台灣約 5 萬筆政府資料MCP(見 P03);只能查詢、沒有整包下載,找到後回原機關下載註冊取得金鑰;免費額度有限
FRED美國與國際經濟指標網頁下載 CSV;也有官方 MCP下載不需要;MCP 需登入
Our World in Data跨國比較(健康、能源、人口…)每張圖都能下載 CSV,附資料說明不需要
Kaggle各式整理好的資料集網頁、kaggle CLI 或官方 MCP需要帳號
Kaggle 與二手資料 Kaggle 上很多資料是別人整理過的二手資料。使用前先追到原始出處,確認授權與收集方式;熱門資料集要另外找出新的問題,不要只是重做他人已完成的分析。
其他可以參考的來源
台灣政府資料常見的坑 檔案編碼可能是 Big5(pd.read_csv(..., encoding='cp950'));日期常用民國年(加 1911 才是西元);同一份資料不同年度的欄位名稱可能不一樣;數字欄位可能夾著千分位逗號;有些檔案有兩列表頭。讀進來之後先檢查欄位型態、缺值與單位,再開始分析。
PART 03 · 第 3 節

把資料來源接進 AI agent

MCP(Model Context Protocol)是讓 AI agent 呼叫外部工具的標準介面。 資料平台有 MCP 端點,agent 就能自己搜尋資料目錄、查資料,不必手動逐頁瀏覽網站。 下面用 Twinkle Hub 示範。

1. 先了解 MCP 能做什麼

可以把 MCP 想成會查目錄、也會替你算摘要的圖書館員;整份資料還是要自己到原機關下載。下表依專題階段整理:

階段適合交給 MCP不要用 MCP 做
選題用中文描述想法,請它列出候選資料集、欄位、年份範圍、授權與提供機關替你決定題目:它只知道有沒有資料,不知道問題值不值得做
找資料讀欄位定義、更新頻率與出處標示,找出原始檔的下載位置當成下載工具:免費方案每次最多回 10 列、沒有翻頁,抓不完大多數資料集
初探用聚合確認各組筆數、平均值範圍與時間涵蓋,判斷題目是否可行當成正式分析:沒有中位數與分位數,聚合結果最多也只回 10 組
建模不使用用線上查詢結果建模:助教沒有金鑰就無法重現,額度用完分析也會中斷
報告引用回應附的授權與出處標示句把 MCP 回傳的數字直接寫進報告:每個數字都要能從本機的原始檔重算

Twinkle Hub 免費方案的限制(2026-11-04 實測):每次資料查詢扣 1 點,最多回 10 列,沒有翻頁。 聚合(count、sum、avg、min、max)會對符合條件的全部資料計算,但結果同樣最多回 10 組; 例如查高雄市各行政區的交易件數,只會拿到 38 區中的 10 區,要用條件分批查。 這個列數上限和點數無關,點數還有剩也一樣只回 10 列。

2. 取得金鑰,放進環境變數

到 Twinkle Hub 註冊,在 Dashboard 取得以 sk- 開頭的金鑰。 金鑰不要寫進程式碼、筆記本、投影片或要 commit 的設定檔,一律放在環境變數:

# macOS/Linux:寫進 ~/.zshrc 或 ~/.bashrc,重開終端機
export TWINKLE_HUB_API_KEY=sk-你的金鑰

# Windows PowerShell:設定後重開終端機
setx TWINKLE_HUB_API_KEY "sk-你的金鑰"

3. 依你用的 agent 加入 MCP 伺服器

Claude Code(Twinkle Hub 官方文件提供的指令,金鑰改從環境變數帶入):

claude mcp add --transport http twinkle-hub https://api.twinkleai.tw/mcp/ \
  --header "Authorization: Bearer $TWINKLE_HUB_API_KEY"
claude mcp list        # 確認狀態

這個設定預設存在你自己的使用者設定裡,不會進入專案。請不要加 --scope project,否則金鑰會寫進專案的 .mcp.json,commit 後就會外流。

Codex CLI(Twinkle Hub 官方文件):

codex mcp add twinkle-hub --url https://api.twinkleai.tw/mcp/ \
  --bearer-token-env-var TWINKLE_HUB_API_KEY
codex mcp list

如果啟動時出現 30 秒逾時,在 ~/.codex/config.toml 的 [mcp_servers.twinkle-hub] 底下加一行 startup_timeout_sec = 60。

OpenCode(Twinkle Hub 文件沒寫,下面照 OpenCode 官方 MCP 說明 寫成, 已在 OpenCode 1.18 用真實金鑰實測可以查詢)。在專案根目錄建立 opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "twinkle-hub": {
      "type": "remote",
      "url": "https://api.twinkleai.tw/mcp/",
      "oauth": false,
      "headers": { "Authorization": "Bearer {env:TWINKLE_HUB_API_KEY}" }
    }
  }
}

{env:...} 會在執行時讀環境變數,所以這個檔案裡沒有金鑰,可以放進 Git。用 opencode mcp list 確認狀態。

沒有付費的 AI 訂閱也能先試:OpenCode 內建幾個免費模型(名稱以 -free 結尾,用 opencode models 查看),例如 opencode run -m opencode/deepseek-v4.1-flash-free "你的問題"。免費模型的清單會變動,以 opencode models 的結果為準。

實測結果(2026-11-04) 依上面三種設定各接一次,請 agent 查高雄市苓雅區 2025 年起的 3 筆實價登錄交易:Claude Code、Codex CLI、OpenCode(免費模型)都查詢成功,結果相同,每次都只執行一次資料查詢、扣 1 點。Twinkle Hub 的實價登錄有專用資料集 lvr-trades(預售屋 lvr-presale、租賃 lvr-rentals),日期另有西元欄位 iso_trade_date。回應會附授權與出處標示句,可直接用在報告。要注意兩件事:免費方案每次最多回 10 列(回應標示 truncated),沒指定排序時也不是最新的資料;完整資料仍請到內政部實價登錄下載。

4. 額度與學術方案

Twinkle Hub 免費方案每 5 小時 50 點、每週最多 200 點(2026-11-04 查證,方案可能調整,以 官方定價頁為準)。每次資料查詢扣 1 點,回應的 meta.usage.credit_price 會寫明;查詢工具清單與參數說明不是資料查詢。剩餘點數請到 Dashboard 查看。 需要更多額度可以用學校信箱申請 Edu 學術方案(申請方式見定價頁);使用 Edu 方案的成果須註記「本研究由 Twinkle Hub 贊助資料服務」。

其他官方 MCP(依官方文件整理,尚未實測)
  • FRED:查美國與國際經濟時間序列,可產生 CSV/JSON 下載連結,下載後一樣存進 data/raw/。
  • Kaggle:可搜尋並下載整份資料集,但要追到原始出處並確認授權。
  • Hugging Face:搜尋機器學習資料集、讀資料卡;品質參差,授權要逐一確認。
  • Google Data Commons:回傳整理過的跨國或地區指標數值,沒有原始檔,適合快速比較;需要免費 API key。
設定方式依各服務的說明;需要登入的服務用 OAuth 登入(Claude Code 在對話中輸入 /mcp,Codex 用 codex mcp login)。
PART 04 · 第 4 節

可以這樣問 agent

提問時把問題、限制和你要的輸出講清楚,agent 給的東西會好用很多。三個例子:

找資料:
我想研究高雄市近十年住宅交易價格和屋齡、捷運距離的關係。
請用 twinkle-hub 找出相關的政府資料集,列出資料集名稱、提供機關、
時間範圍、主要欄位、更新頻率、授權,以及原始檔的下載網址。先不要下載。
下載並記錄出處:
請寫 src/fetch_data.py,從上面選定的原始網址下載 2016–2025 年的檔案到 data/raw/,
不要修改原始檔。同時在 data/SOURCES.md 記下每個檔案的網址、提供機關、
授權、下載日期與篩選條件。需要金鑰的話從環境變數讀取。
先檢查資料:
讀 data/raw/ 的檔案,回報每個欄位的型態、缺值比例、單位與可疑的值
(例如負的面積、民國年未轉換)。只回報,不要自動刪資料。

agent 回報的欄位意義、單位與資料筆數,都要自己對照原始資料說明再確認一次。

免費額度內做得到的查詢

下面每個提問大約只需要一次資料查詢(1 點),實際次數以 agent 的呼叫紀錄為準。

常見誤用 最常見的誤用有兩種。一種是用條件切很多次,把明細拼成訓練資料:一週最多約 2,000 列,抓到的列可能重複,也無法重現。另一種是把聚合結果當成分析:房價是偏態分布,平均數容易誤導,只回 10 組也可能漏掉部分地區。分析程式(例如 analysis.py)裡不要呼叫 MCP,一律讀本機的原始檔。
PART 05 · 第 5 節

用 AI 分析時要核對的事

AI 很會寫 scikit-learn 程式,也很會把結果講得頭頭是道,但統計學習專題最常出錯的地方,AI 預設不會替你檢查。 每次請 agent 分析的前後,都逐項核對下列事項:

  1. 資料洩漏:標準化、補值、特徵選擇與調參只能用訓練資料估計(例如放進 Pipeline 再做交叉驗證); 有時間順序的資料按時間切分,同一地區或個體重複出現時要分組切分;測試集只在最後用一次。AI 產生的程式若只有一行 train_test_split,就要特別檢查這幾點。
  2. 資料本身:確認每一列代表什麼,以及欄位定義與單位(民國年或西元年、總價或單價、坪或平方公尺); 合併、篩選、刪除缺值前後都印出列數,看樣本有沒有悄悄變少或變偏。
  3. 評估方式:先建立基準模型(例如線性或邏輯斯迴歸),依任務選擇驗證方式與指標,回報交叉驗證的平均與變異,不要只挑表現最好的一次。
  4. 解讀結果:不只看 p 值或 accuracy,也要說明效果大小、不確定性與限制;類別不平衡時改看 precision、recall 或 AUC;相關不等於因果。
  5. 查證 AI 的說法:AI 會自信地解釋欄位,甚至編出不存在的欄位或論文。欄位意義回原機關的說明核對,文獻要自己找到原文,報告裡的數字都要由你的程式重算。
  6. 保護資料:個資、未公開資料與金鑰不要貼進雲端 AI 服務。

怎麼把分析拆成小任務、要留哪些協作紀錄、哪些資料不能上傳,見 課前準備 C:用 AI 做統計分析。

PART 06 · 第 6 節

讓別人跑得出同樣的結果

期末專題要求繳交的程式能從頭跑完,重現報告裡的數字與圖。專案可以照這個結構整理:

my-project/
├── README.md          # 怎麼跑:環境、執行指令、會產生哪些圖表
├── requirements.txt   # 套件與版本(pip freeze > requirements.txt)
├── data/
│   ├── raw/           # 原始檔,下載後不手改
│   └── SOURCES.md     # 來源網址、授權、取得日期、查詢條件
├── src/
│   ├── fetch_data.py  # 下載資料(金鑰從環境變數讀)
│   └── analysis.py    # 從 data/raw 一路跑到報告裡的數字與圖
├── .env               # 金鑰只放本機
└── .gitignore         # 列入 .env;太大的資料檔也排除

AI 協作的過程要記哪些東西,可以參考 課前準備 C 的紀錄表; 同一節也講了哪些資料(例如個資、未公開的研究資料)不該貼進雲端 AI 服務。

PART 07 · 第 7 節

AI 使用聲明與資料出處

歡迎使用 AI 工具,但書面報告與簡報都要簡短說明用了哪些工具、用在哪裡, 不需要附對話紀錄。報告放在 Acknowledgements 裡,簡報放一張投影片或某頁的角落即可。例如:

AI use: We used Claude Code to search Taiwan open-data catalogs and to draft
the data-cleaning code, and ChatGPT to polish the English in Sections 1–2.
All code was run and checked by the team, and every number in this report
comes from our own code.

資料出處也要寫清楚。政府資料開放授權條款要求標示來源,例如:

資料來源:內政部不動產實價登錄開放資料(政府資料開放授權條款第 1 版),
2026-11-04 下載。
你仍然要為結果負責 AI 產生的統計量、圖表與參考文獻都可能出錯,甚至編出不存在的論文。放進報告前,每個數字都要能從你的程式重算出來,每篇引用都要自己查證過。
QUICK REFERENCE · 速查

連結與查證日期

項目連結
Twinkle Hub 設定說明(Claude)https://hub.twinkleai.tw/zh-TW/docs?aud=claude
Twinkle Hub 設定說明(Codex)https://hub.twinkleai.tw/zh-TW/docs?aud=codex
Twinkle Hub 方案與額度https://hub.twinkleai.tw/zh-TW/pricing
Claude Code MCP 說明https://code.claude.com/docs/en/mcp
OpenCode MCP 說明https://opencode.ai/docs/mcp-servers/
政府資料開放授權條款https://data.gov.tw/license
AI 協作原則與紀錄表課前準備 C:用 AI 做統計分析
找資料與開始 EDA第 1 章:資料集入口

本頁的額度、方案與指令於 2026-11-04 查證,服務可能調整,請以各官方頁面為準。 學期日期、繳交方式與評分重點以當學期的期末專題規範為準。