iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0

用 API 開啟記事本 — 探索我的 AI 助手背後程式碼 (1)

在開發 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}"}

來逐行拆解:

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

  2. 執行系統命令
    subprocess.Popen(["notepad.exe"]) - 非同步開啟記事本,不會阻塞程式執行

  3. 日誌記錄
    logger.info() - 記錄成功操作,方便除錯和監控

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

  5. 完整錯誤處理

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

運作流程

  1. 使用者發送請求:

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

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

  2. API 回傳結果:

成功時:

{
  "status": "success", 
  "message": "已成功開啟記事本。"
}

失敗時:

{
  "status": "error", 
  "message": "錯誤:找不到記事本應用程式。"
}

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

尚未有邦友留言

立即登入留言