Vibe Coding 實戰:用 AI 協作開發 Python 開放資料應用

1. 課程導讀:什麼是 Vibe Coding?

在 AI 時代,寫程式的方式正在發生根本性的轉變。
* 傳統方式 (Coding):你需要熟背語法、函數庫,一個字一個字地敲出程式碼。
* Vibe Coding (AI 協作):你專注於「想做什麼 (What)」與「邏輯流程 (Flow)」,用自然語言描述你的需求(Prompt),讓 AI 幫你生成程式碼。你更像是一位軟體架構師產品經理

本課程目標
1. 學習如何撰寫精準的 Prompt 來引導 AI 寫 Python。
2. 利用 Python 處理真實世界的「政府開放資料 (Open Data)」。
3. 完成從「讀取檔案」、「API 串接」到「資料視覺化」的完整流程。


2. Vibe Coding 核心工作流

我們將採用 Prompt -> Run -> Fix/Refine 的循環模式。

flowchart LR
    A["想法/需求 (Idea)"] -->|"Prompting"| B("AI 生成程式碼")
    B --> C{"執行與測試"}
    C -->|"成功"| D["功能擴充/優化"]
    C -->|"錯誤/不如預期"| E["修正 Prompt 或貼上錯誤訊息"]
    E --> B

3. 實戰任務一:解析 JSON 格式的開放資料

3.1 任務場景

我們有一份模擬的氣象資料(JSON 格式),需要用 Python 讀取它並顯示出我們關心的資訊(例如:城市與溫度)。

3.2 準備資料

首先,請 AI 幫我們生成一份測試用的 JSON 資料。

Prompt (給 AI):
請幫我產生一個名為 weather_data.json 的檔案內容,格式為 JSON。
內容包含台灣 5 個主要城市(台北、台中、高雄、花蓮、台東)的氣象資訊。
每個城市應包含:city (城市名), temperature (攝氏溫度), humidity (濕度), condition (天氣狀況,如晴天、雨天)。

(學生將 AI 生成的內容存成 weather_data.json)

3.3 生成解析程式

現在,我們不自己查 json 模組的語法,而是告訴 AI 我們要這做什麼。

Prompt (給 AI):
我有一個 Python 程式開發的需求。

目標:撰寫一個 Python 腳本 (parse_json.py)。
輸入:讀取同目錄下的 weather_data.json 檔案。
處理:解析 JSON 內容。
輸出:在終端機列印出每個城市的名稱與溫度,格式如:「台北:25°C」。

請提供完整的 Python 程式碼,並加上簡單的註解。

3.4 檢視與學習

AI 通常會使用 Python 內建的 json 模組:

import json

# 讀取檔案
with open('weather_data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 迴圈讀取並列印
for item in data:
    print(f"{item['city']}{item['temperature']}°C")

4. 實戰任務二:透過 API 取得即時資料

4.1 任務場景

讀取靜態檔案不夠看,我們要讓程式連上網路,抓取即時資料。這裡我們使用 Python 最流行的 requests 模組。

4.2 升級程式碼

我們不需要重寫,而是請 AI 修改 剛剛的程式。

Prompt (給 AI):
接續上一個程式。現在我想要改為透過 API 取得資料。

修改需求
1. 使用 requests 模組發送 GET 請求。
2. 目標 URL 假設為 https://api.example.com/weather (註:實作時可替換為真實的氣象局 API 或測試用 API)。
3. 加入錯誤處理:如果網路連線失敗或狀態碼不是 200,請列印錯誤訊息。

請給我修改後的完整程式碼。

4.3 關鍵知識點


5. 實戰任務三:資料視覺化 (畫圖)

5.1 任務場景

文字列表太枯燥,我們想把溫度數據變成一張「長條圖 (Bar Chart)」,讓趨勢一目了然。

5.2 引入 Matplotlib

這是 Python 資料科學界最基礎的繪圖庫。

Prompt (給 AI):
我想要將氣象資料視覺化。

新功能需求
1. 使用 matplotlib 模組。
2. 繪製一張長條圖 (Bar Chart)。
3. X 軸:城市名稱。
4. Y 軸:溫度。
5. 圖表標題設為 "Taiwan Cities Temperature"。
6. 若城市名稱包含中文字,請確保圖表能正確顯示中文(或者是告訴我如何設定字型)。

請寫出完整的 Python 程式碼。

5.3 解決常見問題 (中文亂碼)

在 matplotlib 顯示中文常會遇到亂碼(變成方框)。
* Vibe Coding 技巧:遇到錯誤直接把錯誤訊息貼給 AI,「圖表上的中文變成方框了,怎麼辦?」,AI 會教你設定 plt.rcParams['font.sans-serif']


6. 綜合練習與挑戰

現在你已經掌握了 Vibe Coding 的基本流。請嘗試以下挑戰:

  1. 更換資料來源:找一份政府開放資料(例如:台灣人口統計),試著分析哪個縣市人口最多。
  2. 更換圖表類型:將氣象資料的「濕度」與「溫度」畫成「散佈圖 (Scatter Plot)」。
  3. 封裝成函數:請 AI 將「抓取資料」、「解析資料」、「繪圖」分別包裝成不同的 Function,讓程式架構更整潔。

7. 學習總結

透過今天的實作,你獲得了以下能力:

技能維度 具體內容
Prompt Engineering 能夠清楚描述輸入、處理邏輯與輸出格式,引導 AI 寫程式。
Python 基礎 理解 json 解析、requests 網路請求、matplotlib 繪圖的基本用法。
除錯能力 遇到問題時,懂得利用 AI 協助分析錯誤訊息並修正。
資料素養 了解如何將非結構化或半結構化的開放資料,轉化為有意義的視覺資訊。