在上一篇我們實作了 /open-notepad
,能透過 API 開啟記事本。這一篇,我們要讓 AI 再進一步,學會幫我們打開 Windows 小畫家 (Paint)。
這個 API 的任務很簡單:接收到請求時,自動開啟小畫家。
這代表 AI 助手不只是處理文字,還能支援更多不同類型的應用程式。
@app.post("/open-paint")
def open_paint():
"""
開啟 Windows 小畫家應用程式。
"""
try:
subprocess.Popen(["mspaint.exe"])
logger.info("已成功開啟小畫家。")
return {"status": "success", "message": "已成功開啟小畫家。"}
except FileNotFoundError:
logger.error("錯誤:找不到小畫家應用程式。")
return {"status": "error", "message": "錯誤:找不到小畫家應用程式。"}
except Exception as e:
logger.error(f"開啟小畫家時發生錯誤: {e}")
return {"status": "error", "message": f"開啟小畫家時發生錯誤: {e}"}
逐行拆解:
API 路由定義@app.post("/open-paint")
- 建立 FastAPI 的 POST 端點,路徑是 /open-paint
執行系統命令subprocess.Popen(["mspaint.exe"])
- 呼叫 Windows 內建的小畫家程式
mspaint.exe
,和記事本的 notepad.exe
相同概念日誌記錄logger.info()
- 記錄成功操作,方便除錯和監控
統一回傳格式
包含 status
和 message
兩個欄位,讓前端可以依據 status 判斷操作結果
完整錯誤處理
FileNotFoundError
: 當系統找不到 mspaint.exe 時Exception
: 捕捉其他未預期的錯誤使用者發送請求:
POST http://127.0.0.1:8000/open-paint
API 處理請求:
subprocess.Popen(["mspaint.exe"])
Windows 開啟小畫家 (非同步,不會卡住程式)
API 回傳結果:
成功時 :
{
"status": "success",
"message": "已成功開啟小畫家。"
}
失敗時 :
{
"status": "error",
"message": "錯誤:找不到小畫家應用程式。"
}