標籤: UI-Mate

  • 讓桌面自己動的 UI-Mate 實戰筆記

    讓桌面自己動的 UI-Mate 實戰筆記

    📌 本文重點

    • UI-Mate 讓 AI 直接「看畫面、動滑鼠鍵盤」
    • 用自然語言或示範錄製,就能生成桌面操作流程
    • 可與現有 Python 腳本與 RPA 流程整合,減少人工操作

    用一句話說:UI-Mate 就是一個「看得懂螢幕、聽得懂人話、會自己動滑鼠鍵盤」的桌面機器人,幫你把重複性的桌面操作交給 AI 來做。

    模型主頁:https://huggingface.co/tencent/UI-Mate-27B


    核心功能:這三件事搞懂就能用

    1. 視覺理解:給截圖,它看得懂 UI

    UI-Mate-27B 的核心是一個多模態模型:
    – 你提供「螢幕截圖」+
    – 一段自然語言說明(例如:請幫我打開 Chrome 並登入後台)
    – 它輸出一段結構化動作序列:滑鼠移動、點擊、鍵盤輸入等

    💡 關鍵: 只要一張截圖加一句需求,模型就能直接產出可執行的桌面操作步驟。

    實際可以怎麼用:
    1. 先準備好一個測試畫面(例如:公司後台登入頁)。
    2. 截圖保存為 screen.png。
    3. 把截圖和指令丟給 UI-Mate,看它給出怎樣的「下一步操作」。

    你會拿到類似這樣的結構化輸出(示意):

    {
      "actions": [
        {"type": "move", "x": 540, "y": 320},
        {"type": "click", "button": "left"},
        {"type": "keyboard", "text": "your_email@example.com"},
        {"type": "key", "value": "TAB"},
        {"type": "keyboard", "text": "your_password"},
        {"type": "click", "x": 620, "y": 410}
      ]
    }
    

    接下來你只要寫一個小腳本讀這個 JSON,真的去移動滑鼠、輸入文字,桌面就會「自己操作」。

    2. 自然語言指令:講人話就能控制桌面

    UI-Mate 的互動方式很直覺:
    – 你不需要寫流程圖,也不必一開始就拆成「步驟 1、步驟 2」
    – 只要描述結果:
    -「幫我批量把 Excel 檔案匯入這個 ERP 系統」
    -「打開 Outlook,把今天的報表寄給 A 組所有人」

    模型會自己規劃步驟,並在每一步:
    1. 讀取最新截圖
    2. 思考現在畫面狀態(按鈕位置、輸入框、表格等)
    3. 給出下一步滑鼠鍵盤操作

    你可以這樣實作一個最小可用版本:
    – 外層自己寫「迴圈」:
    1. 每步:截圖 → 丟給 UI-Mate → 執行動作
    2. 執行完再截圖下一幀
    – UI-Mate 負責:理解畫面 + 決定下一步

    行動建議:
    – 先選一個你每天重複 10 次以上的操作(例如:下載報表、貼到另一個系統),用自然語言完整描述「你平常怎麼做」,當成指令丟給 UI-Mate,看它的步驟規劃是否合理。

    3. 示範錄製重用:示範一次,變成可重複流程

    UI-Mate 還有一個「示範引導模式」(demo-guided mode):
    – 你親自操作一次完整流程
    – 系統記錄下:每一步的截圖 + 你的操作
    – 模型會從這次成功示範中,歸納出一個「可泛化的流程」

    這跟傳統 RPA 的差別在於:
    – 傳統 RPA:錄的是「座標腳本」,畫面稍微變一下就壞掉
    – UI-Mate:每次執行時都重新「看畫面」,按「字樣、位置關係」來找按鈕,不是死記座標

    💡 關鍵: UI-Mate 不是重播固定座標,而是每次重新看 UI,用文字與位置關係判斷該點哪裡。

    可以這樣玩:
    1. 用你熟悉的桌面錄製工具(或自製簡單 recorder)記錄一步步操作與截圖。
    2. 把「示範過程」餵給 UI-Mate,請它輸出一個「可重複使用的任務描述 + 動作模板」。
    3. 下次只要換資料(不同 Excel、不同客戶),讓 UI-Mate 根據新畫面、自動套同一個流程。

    行動建議:
    – 選一個流程性質很穩定、但資料每天不同的任務(例如:每日匯入銷售數據),試著用「示範一次 → 重用」方式,取代你手動教同事的 SOP。


    適合誰用:四種典型場景

    1. 重複性後台系統操作

    • 例如:
    • 每天登入多個 SaaS 後台,下載報表、貼到內部系統
    • 每週批次更新客戶狀態
    • 你可以:
    • 把這些步驟示範一次
    • 用 UI-Mate 產生可重複的「桌面任務」
    • 未來只改輸入條件(日期、客戶名),交給 AI 操作

    2. 桌面版軟體批量設定

    • 例如:
    • VPN 客戶端批量新增設定檔
    • 本地 ERP/會計軟體批量開立客戶資料
    • 傳統腳本難點在於:UI 複雜、不易找到穩定 API
    • UI-Mate 直接「看畫面」,幫你點選和輸入。

    3. 跨 app 搬資料

    • 例如:
    • 從 Outlook 下載附件 → 存到指定資料夾 → 打開 Excel 做簡單整理 → 貼到公司內部系統
    • 原本要寫一堆整合腳本或 RPA 流程
    • 現在可以:
    • 用自然語言描述「從哪裡拿資料、要丟去哪裡」
    • UI-Mate 在不同程式之間切換畫面、操作滑鼠鍵盤

    4. 給不會寫程式的同事用的「桌面機器人」

    • 對象:
    • 業務、行政、財務等非工程同事
    • 玩法:
    • 工程師先搭好「UI-Mate 服務」和一個簡單的 Web / 桌面介面
    • 同事只要:
      • 輸入指令(或從下拉選任務)
      • 確認螢幕共享權限
    • 剩下交給 UI-Mate 自己在他們的桌面操作

    怎麼開始:Hugging Face + 本地部署實戰

    以下以在本地機器上跑 UI-Mate-27B 為主線,預設你有一台具備較強 GPU 的機器(例如 48GB VRAM 以上),或準備先在雲端機器試用。

    步驟 0:硬體與環境準備

    建議環境:
    – GPU:單張 48GB VRAM(或多卡切分),若用量化(如 4-bit)可略降需求
    – 系統:Ubuntu 20.04 / 22.04 或 Windows + WSL
    – Python:3.10 或以上

    行動:

    conda create -n uimate python=3.10 -y
    conda activate uimate
    pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
    pip install transformers accelerate safetensors pillow
    

    💡 關鍵: 若使用 4-bit 等量化,可以在較小 VRAM 的 GPU 上嘗試跑 UI-Mate-27B。

    步驟 1:從 Hugging Face 下載權重

    模型頁面:https://huggingface.co/tencent/UI-Mate-27B

    行動:

    huggingface-cli login  # 輸入你的 HF token
    # 下載模型(示例,可改路徑)
    huggingface-cli download tencent/UI-Mate-27B --local-dir ./uimate-27b
    

    如果你不想預先全部拉下來,也可直接用 from_pretrained 動態下載(見下一步)。

    步驟 2:跑一個最小 Demo

    以下是一個「給一張截圖 + 一句指令,讓 UI-Mate 回傳動作計劃」的簡單腳本:

    from transformers import AutoModelForCausalLM, AutoTokenizer
    from PIL import Image
    import torch, json
    
    MODEL_PATH = "tencent/UI-Mate-27B"  # 或改成本地路徑
    
    device = "cuda" if torch.cuda.is_available() else "cpu"
    
    print("Loading model...")
    model = AutoModelForCausalLM.from_pretrained(
        MODEL_PATH,
        torch_dtype=torch.float16,
        device_map="auto"
    )
    
    tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
    
    # 1. 準備截圖與指令
    image = Image.open("screen.png")  # 先手動截一張
    user_instruction = "在這個畫面中,幫我輸入帳號和密碼,然後按登入。"  
    
    # 2. 組合多模態輸入(形式視官方範例為準)
    inputs = tokenizer(
        user_instruction,
        return_tensors="pt"
    ).to(device)
    
    # 一般會有圖像編碼器,這裡假設模型內已處理;實作時請對照官方範例
    
    with torch.no_grad():
        outputs = model.generate(
            **inputs,
            max_new_tokens=512
        )
    
    reply = tokenizer.decode(outputs[0], skip_special_tokens=True)
    print("Model output:\n", reply)
    
    # 若模型以 JSON 格式輸出動作,可直接解析
    try:
        actions = json.loads(reply)
        print("Parsed actions:", actions)
    except json.JSONDecodeError:
        print("請依官方格式調整 prompt,確保輸出為 JSON。")
    

    實務上請以 UI-Mate 官方示例程式為準,Hugging Face 頁面的 README 通常會附完整 demo,先照抄跑通,再慢慢改成你的場景。

    步驟 3:用 Python 腳本發指令 + 真實執行

    接下來要做的是把模型輸出的動作「真的」執行在桌面上:

    1. 安裝桌面操作套件(以 Windows 為例):
    pip install pyautogui mss
    
    1. 寫一個簡單「桌面代理 loop」:
    import pyautogui, time, json
    from mss import mss
    
    # 假設這是從 UI-Mate 拿到的 JSON
    plan = {
      "actions": [
        {"type": "move", "x": 500, "y": 300},
        {"type": "click", "button": "left"},
        {"type": "keyboard", "text": "demo_user"}
      ]
    }
    
    for step in plan["actions"]:
        if step["type"] == "move":
            pyautogui.moveTo(step["x"], step["y"], duration=0.2)
        elif step["type"] == "click":
            pyautogui.click(button=step.get("button", "left"))
        elif step["type"] == "keyboard":
            pyautogui.typewrite(step["text"], interval=0.05)
        time.sleep(0.2)
    
    1. 把兩段程式串起來:
    2. 每步:用 mss 截圖 → 丟給 UI-Mate → 解析 JSON → 用 pyautogui 執行
    3. 加上錯誤處理(超時、視窗關閉等),就能形成一個簡單的桌面機器人。

    怎麼接到既有自動化腳本 / RPA 流程

    多數團隊已經有一堆:
    – Python 自動化腳本
    – 現成 RPA 流程(如 UiPath、Power Automate)

    你可以把 UI-Mate 當成「一個新步驟」插進去,而不是全部重寫。

    實戰示例:Python 腳本 + UI-Mate 處理「UI 部分」

    假設你原本有一個腳本:
    – 從資料庫抓訂單 → 輸出 CSV
    – 然後要人手動開某個老舊桌面系統,把這些訂單一筆筆輸入

    改造方式:
    1. 保留原本「資料庫 → CSV」的 Python 程式
    2. 新增一個 fill_orders_with_uimate() 函式:
    – 負責:
    1. 打開舊系統
    2. 逐筆讀取 CSV
    3. 對每一筆訂單:
    – 截圖
    – 呼叫 UI-Mate:請依照示範流程,把這筆訂單填入畫面上對應欄位。
    – 執行模型輸出的滑鼠鍵盤動作

    整體流程變成:

    原本 Python 程式:
      資料庫 → CSV  → (人手動輸入)
    
    改造後:
      資料庫 → CSV → UI-Mate 桌面代理 → 舊系統
    

    與 RPA 工具共存的方式

    如果你公司已經有 RPA 工具(例如 UiPath):
    – 把 UI-Mate 當成「一個 API」:
    1. 在本地或伺服器上跑一個簡單的 Flask/FastAPI 服務,提供 /plan-actions endpoint:
    – Input:截圖 + 任務描述
    – Output:UI-Mate 計劃好的動作 JSON
    2. 在 RPA 流程裡新增一個步驟:
    – 呼叫這個 API 拿動作
    – 用 RPA 自己的「滑鼠/鍵盤活動」元件,執行 JSON 裡的動作

    這樣的好處:
    – 原有 RPA 流程不必大改
    – 跟 IT 合規的整合點很清楚:只是一個額外的內部 API


    小結:建議你的第一個實驗任務

    如果你只想花半天試試 UI-Mate,這樣安排:
    1. 選一個每天都在做、步驟固定的桌面任務(例如:登入兩個系統、下載/上傳一份報表)。
    2. 用 Hugging Face Demo 或本地部署,先跑通:
    – 截圖 + 自然語言指令 → UI-Mate 回傳動作
    3. 寫一個小 Python 腳本,真的在桌面執行那些動作。
    4. 最後,再把這個任務掛到你現有的自動化腳本或 RPA 裡,讓 UI-Mate 僅負責「用眼睛看 UI 的那一段」。

    做到這一步,你就多了一個「會看畫面、會動滑鼠」的 AI 同事,可以逐步把更多枯燥的桌面操作交給它。

    🚀 你現在可以做的事

    • 打開 UI-Mate-27B 模型頁,按 README 示範先跑通官方 demo
    • 在自己的機器上依照文中指令建立 uimate 環境並試跑一次截圖 + 指令的最小腳本
    • 選一個固定桌面任務,設計截圖迴圈 + pyautogui 執行,做出你的第一個 UI-Mate 桌面機器人