在開發 AI 助手的過程中,我希望它不只是能對話,還能幫我執行實際的電腦操作。今天就先來看一個最簡單的例子:如何用 API 開啟 Windows 記事本。
這個 API 的功能非常單純:當使用者透過 HTTP 請求呼叫 /open-notepad
時,就會自動打開 Windows 的 記事本 (Notepad)。
這是一個入門範例,用來展示「AI 幫你動手做事」的第一步。
@app.post("/open-notepad")
def open_notepad():
"""
開啟 Windows 記事本應用程式。
"""
try:
subprocess.Popen(["notepad.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-notepad")
- 建立 FastAPI 的 POST 端點
執行系統命令subprocess.Popen(["notepad.exe"])
- 非同步開啟記事本,不會阻塞程式執行
日誌記錄logger.info()
- 記錄成功操作,方便除錯和監控
統一回傳格式
包含 status
和 message
兩個欄位,讓前端可以依據 status 判斷操作結果
完整錯誤處理
FileNotFoundError
: 當系統找不到 notepad.exe 時Exception
: 捕捉其他未預期的錯誤使用者發送請求:
POST http://127.0.0.1:8000/open-notepad
API 處理請求:
subprocess.Popen(["notepad.exe"])
Windows 開啟記事本 (非同步,不會卡住程式)
API 回傳結果:
成功時:
{
"status": "success",
"message": "已成功開啟記事本。"
}
失敗時:
{
"status": "error",
"message": "錯誤:找不到記事本應用程式。"
}