iT邦幫忙

2025 iThome 鐵人賽

DAY 7
0

用 API 開啟小畫家 — 探索我的 AI 助手背後程式碼 (2)

在上一篇我們實作了 /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}"}


逐行拆解:

  1. API 路由定義
    @app.post("/open-paint") - 建立 FastAPI 的 POST 端點,路徑是 /open-paint

  2. 執行系統命令
    subprocess.Popen(["mspaint.exe"]) - 呼叫 Windows 內建的小畫家程式

    • 這裡的指令是 mspaint.exe,和記事本的 notepad.exe 相同概念
    • 非同步執行,不會阻塞程式
  3. 日誌記錄
    logger.info() - 記錄成功操作,方便除錯和監控

  4. 統一回傳格式
    包含 statusmessage 兩個欄位,讓前端可以依據 status 判斷操作結果

  5. 完整錯誤處理

    • FileNotFoundError: 當系統找不到 mspaint.exe 時
    • Exception: 捕捉其他未預期的錯誤

運作流程

  1. 使用者發送請求:

    POST http://127.0.0.1:8000/open-paint
    
  2. API 處理請求:

  • 執行 subprocess.Popen(["mspaint.exe"])
  • 記錄操作日誌
  1. Windows 開啟小畫家 (非同步,不會卡住程式)

  2. API 回傳結果:

成功時 :

{
  "status": "success", 
  "message": "已成功開啟小畫家。"
} 

失敗時 :

   {
     "status": "error", 
     "message": "錯誤:找不到小畫家應用程式。"
   }

上一篇
DAY 6
下一篇
DAY 8
系列文
我的 AI 助手開發8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言