Part 5:Python 腳本測試

用 requests 套件測試 API

實作步驟教學

使用鍵盤 ← → 或點擊下方按鈕切換投影片

為什麼要用 Python 腳本測試?

Postman vs Python 腳本

比較項目 Postman Python 腳本
操作方式 手動點擊 自動執行
可重複性 需重新設定 執行即可
整合性 獨立工具 可整合至程式
自動化測試 需付費版 免費
Python 腳本讓你可以自動化測試,未來可整合到 CI/CD 流程中!

重要觀念:需要兩個 CMD 視窗

這是初學者最常犯的錯誤!測試 API 需要同時開啟兩個視窗!
CMD 視窗 1 - Flask 伺服器
(venv) D:\...\階段一> python app.py
* Running on http://127.0.0.1:5000
⬆ 這個視窗要保持開啟!
CMD 視窗 2 - 測試腳本
(venv) D:\...\階段二> python test_api.py
回應: {"response": "..."}
⬆ 在這裡執行測試

視窗 1 跑伺服器,視窗 2 跑測試腳本!

步驟 1:安裝 requests 套件

1開啟 CMD 視窗

2進入專案資料夾

cd D:\自己架設AI_零基礎到大師\CH2_地端與雲端串接概念\AI_Projects\2.4_AI對話API\階段二

3啟動虛擬環境

venv\Scripts\activate

4安裝 requests 套件

pip install requests
安裝完成後會顯示 "Successfully installed requests-x.x.x"

步驟 2:了解測試腳本結構

查看 test_api.py 的完整內容:

# 引入 requests 套件 import requests # 定義 API 端點網址 url = 'http://localhost:5000/chat' # 準備要發送的訊息 data = { 'message': '你好,請介紹一下你自己' } # 發送 POST 請求 response = requests.post(url, json=data) # 印出回應 print('狀態碼:', response.status_code) print('回應內容:', response.json())

步驟 2(續):程式碼逐行解說

import requests

匯入 Python 的 HTTP 請求套件,用來發送網路請求

url = '...'

定義要連接的 API 網址,就是我們的 Flask 伺服器

data = {...}

準備要發送的資料,用 Python 字典格式表示

requests.post()

發送 POST 請求,json=data 會自動轉換為 JSON 格式

response.status_code

取得 HTTP 狀態碼,200 代表成功

response.json()

將回應的 JSON 字串解析成 Python 字典

步驟 3:啟動 Flask 伺服器(第一個 CMD)

這一步非常重要!很多人會忘記先啟動伺服器!

1開啟第一個 CMD 視窗

2進入階段一資料夾(有 app.py 的地方)

cd D:\自己架設AI_零基礎到大師\CH2_地端與雲端串接概念\AI_Projects\2.4_AI對話API\階段一

3啟動虛擬環境

venv\Scripts\activate

4啟動 Flask 伺服器

python app.py

步驟 3(續):確認伺服器啟動成功

啟動後你會看到以下訊息:

* Serving Flask app 'app' * Debug mode: on * Running on http://127.0.0.1:5000 Press CTRL+C to quit
看到 "Running on http://127.0.0.1:5000" 就表示伺服器啟動成功!
重要!這個視窗不要關掉!讓它保持在背景運行!

如果你看到錯誤訊息,請檢查:

  • .env 檔案是否存在且包含正確的 API Key
  • 是否已安裝所有套件(flask, openai, python-dotenv)

步驟 4:開啟第二個 CMD 視窗

不要關閉第一個視窗!另外開一個新的 CMD!

1按下 Win + R 開啟執行對話框

2輸入 cmd 然後按 Enter

3進入階段二資料夾

cd D:\自己架設AI_零基礎到大師\CH2_地端與雲端串接概念\AI_Projects\2.4_AI對話API\階段二

4啟動虛擬環境

venv\Scripts\activate

步驟 5:執行測試腳本

1在第二個 CMD 視窗確認已在階段二資料夾

2執行測試腳本

python test_api.py

預期結果

狀態碼: 200 回應內容: {'success': True, 'message': '你好!我是一個 AI 助手...'}
如果看到狀態碼 200 和 AI 回應,表示測試成功!

步驟 5(續):測試成功畫面

Python 測試結果

Python 腳本測試成功畫面

此時的狀態
✓ 視窗 1:Flask 伺服器持續運行中
✓ 視窗 2:顯示 API 回應結果
✓ 狀態碼 200 = 請求成功

常見錯誤處理(一)

錯誤:Connection refused(連線被拒絕)
requests.exceptions.ConnectionError: [WinError 10061] 無法連線,因為目標電腦拒絕連線

原因

Flask 伺服器沒有啟動,或是已經被關閉

解決方法

  • 確認第一個 CMD 視窗有執行 python app.py
  • 確認有看到 "Running on http://127.0.0.1:5000"
  • 確認第一個視窗沒有被關閉

常見錯誤處理(二)

錯誤:ModuleNotFoundError
ModuleNotFoundError: No module named 'requests'

原因

沒有安裝 requests 套件,或沒有啟動虛擬環境

解決方法

  • 確認已執行 venv\Scripts\activate
  • 看到提示符號前面有 (venv) 才是正確的
  • 執行安裝指令:
pip install requests

常見錯誤處理(三)

錯誤:401 Unauthorized 或 500 Internal Server Error

原因

OpenAI API Key 無效、過期或格式錯誤

解決方法

  • 檢查 .env 檔案中的 OPENAI_API_KEY
  • 確認 API Key 以 "sk-" 開頭
  • 確認 API Key 沒有多餘的空格
  • 確認 OpenAI 帳號有餘額
# .env 檔案內容應該像這樣 OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx

步驟 6:測試 API 的錯誤處理

一個健全的 API 需要能妥善處理錯誤。讓我們測試幾種情況:

測試一:發送空訊息

修改 test_api.py 中的 data:

data = { 'message': '' # 空字串 }

預期結果:收到「訊息不能是空的」錯誤,狀態碼 400

測試二:使用錯誤的欄位名稱

data = { 'text': '這是錯誤的欄位名稱' # 應該用 'message' }

預期結果:同樣收到錯誤,因為找不到 message 欄位

步驟 7:修改測試問題

你可以修改 test_api.py 中的問題來測試不同對話:

# 修改這裡的問題 data = { 'message': '請用繁體中文解釋什麼是 API' }

練習題目

  • 「請用 100 字介紹 Python」
  • 「Flask 和 Django 有什麼不同?」
  • 「如何學好程式設計?」
  • 「請解釋什麼是 REST API」
每次修改後,儲存檔案,再次執行 python test_api.py 即可看到新結果!

補充:理解 API 成本控制

每次呼叫 OpenAI API 都會消耗 tokens(產生費用)

max_tokens=500

限制 AI 回應的最大長度,避免回應過長浪費額度

temperature=0.7

控制回應的隨機性
數值越高 → 越有創意
數值越低 → 越穩定

Token 是什麼?

  • 中文字:約 1 字 = 2-3 tokens
  • 英文字:約 1 單字 = 1 token
  • 對話越長,消耗的 tokens 越多

Part 5 重點回顧

本單元學到的技能

  • 理解為什麼需要兩個 CMD 視窗
  • 安裝並使用 requests 套件
  • 執行 Python 測試腳本
  • 解讀 API 回應結果
  • 排除常見錯誤
  • 測試 API 的錯誤處理機制
  • 了解 Token 和成本控制概念
完整流程回顧
1. pip install requests
2. 開 CMD 視窗 1 → python app.py
3. 開 CMD 視窗 2 → python test_api.py
4. 查看測試結果
5. 修改問題重新測試

下一單元:Part 6 網頁介面

← 返回課程首頁