UI-TARS與Midscene.js自動化探索

結合 Midscene.js 和 UI-TARS 大模型 實現 UI 頁面自動化的可實施方案,涵蓋環境配置、核心流程、代碼示例及優化建議:

一、環境配置與工具集成

  1. 安裝 Midscene.js

    • 方式一:通過 Chrome 插件快速安裝(適用于瀏覽器自動化場景)。
    • 方式二:從 GitHub 下載源碼集成到現有項目(支持 Node.js 或 Puppeteer 環境)。
  2. 配置 UI-TARS 模型服務

    • 模型部署:在阿里云 PAI、ModelScope 等平臺部署 UI-TARS 模型(推薦使用 7B 或 72B 版本)。
    • API 接入:獲取模型服務的 endpoint URLAPI Token,并在 Midscene.js 中配置以下參數:
      const mid = new Midscene({OPENAI_API_KEY: "<UI-TARS-API-TOKEN>",OPENAI_BASE_URL: "<UI-TARS-ENDPOINT>/v1",MIDSCENE_MODEL_NAME: "UI-TARS-7B-SFT" // 根據部署版本調整
      });
      

二、核心功能實現方案

1. 行為操作(AI Action)

通過自然語言指令驅動頁面交互,UI-TARS 解析指令并生成精準操作(點擊、輸入、滾動等)。
示例代碼

// 電商網站自動化下單流程
await mid.aiAction('打開瀏覽器并訪問電商網站首頁', { url: 'https://example.com' });
await mid.aiAction('在搜索框中輸入“手機”并點擊搜索按鈕');
await mid.aiAction('選擇搜索結果中的第一個商品并進入詳情頁');
await mid.aiAction('點擊“加入購物車”并跳轉到結算頁面');

優勢

  • UI-TARS 的 增強感知能力 能識別復雜 UI 元素(如動態加載的列表)。
  • 支持多級推理(如先滾動定位再點擊)。
2. 數據提取(AI Query)

從頁面中提取結構化數據,結合 UI-TARS 的 GUI 增強感知 能力,支持動態元素識別。
示例代碼

const productInfo = await mid.aiQuery({name: '商品名稱,string',price: '當前價格,number',stock: '庫存狀態,boolean'
});
// 輸出示例:{ name: "某品牌手機", price: 2999, stock: true }

應用場景:價格監控、數據爬取等。

3. 斷言驗證(AI Assert)

通過自然語言描述預期結果,UI-TARS 結合 System 2 推理 驗證頁面狀態。
示例代碼

await mid.aiAssert('購物車中顯示的商品總價為 2999 元');
await mid.aiAssert('當前頁面包含“訂單提交成功”提示');

優化建議:對于關鍵斷言,可結合傳統斷言庫(如 Jest)提升穩定性。


三、調試與優化

  1. 調試配置

    • 啟用 MIDSCENE_DEBUG_AI_PROFILE=1 查看每次調用的 Token 消耗和執行時間。
    • 使用 可視化報告 回放操作步驟,定位失敗環節。
  2. 性能優化

    • 短期記憶利用:通過 context 參數傳遞歷史操作,減少重復推理。
    • 混合定位策略:對高穩定性要求的元素,結合 CSS 選擇器與 AI 指令(如 mid.click('#search-box', { aiFallback: '在搜索框輸入關鍵詞' }))。

四、擴展應用場景

  1. 跨平臺自動化
    • 結合 UI-TARS-Desktop 客戶端實現桌面應用自動化(如調整 PPT 樣式、修改系統設置)。
  2. 復雜任務處理
    • 利用 UI-TARS 的 多級思維模式 處理多步驟任務(如“從郵箱下載附件并解析內容”)。

五、代碼示例(完整流程)

const { Midscene } = require('@midscene/web');
const puppeteer = require('puppeteer');(async () => {const browser = await puppeteer.launch();const page = await browser.newPage();const mid = new Midscene(page, {OPENAI_API_KEY: "sk-xxx", // 替換為 UI-TARS 的 API KeyOPENAI_BASE_URL: "https://ui-tars-endpoint/v1"});try {// 步驟 1:登錄操作await mid.aiAction('打開登錄頁面并輸入用戶名和密碼', {username: 'test@example.com',password: 'password123'});// 步驟 2:數據提取const userProfile = await mid.aiQuery({name: '用戶昵稱,string',role: '用戶角色,string'});console.log('用戶信息:', userProfile);// 步驟 3:斷言驗證await mid.aiAssert('頁面右上角顯示“歡迎回來”提示');} finally {await browser.close();}
})();

六、注意事項

  • 指令清晰度:避免模糊描述(如“點擊那個按鈕”),需明確元素特征(如“點擊藍色‘提交’按鈕”)。
  • 模型適配:UI-TARS 在動態環境(如 Android 應用)中表現更優,靜態網頁可優先使用 GPT-4o。

通過上述方案,可快速構建基于自然語言的 UI 自動化流程,顯著降低腳本維護成本。如需進一步優化,建議參考 UI-TARS 官方文檔 和 Midscene.js 示例項目。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73107.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73107.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73107.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Web開發-JS應用NodeJS原型鏈污染文件系統Express模塊數據庫通訊

知識點&#xff1a; 1、安全開發-NodeJS-開發環境&功能實現 2、安全開發-NodeJS-安全漏洞&案例分析 3、安全開發-NodeJS-特有漏洞 node.js就是專門運行javascript的一個應用程序&#xff0c;區別于以往用瀏覽器解析原生js代碼&#xff0c;node.js本身就可以解析執行js代…

Spring AOP 核心概念與實踐指南

第一章&#xff1a;AOP 核心概念與基礎應用 1.1 AOP 核心思想 ?面向切面編程&#xff1a;通過橫向抽取機制解決代碼重復問題&#xff08;如日志、事務、安全等&#xff09;?核心優勢&#xff1a;不修改源代碼增強功能&#xff0c;提高代碼復用性和可維護性 1.2 基礎環境搭…

Flutter使用自簽證書打包ipa

在 Flutter 中使用自簽證書打包 IPA 文件&#xff0c;可以通過以下步驟完成&#xff1a; 1. 準備自簽證書 方式一 生成自簽證書&#xff1a; 打開 鑰匙串訪問 應用。選擇 證書助理 > 創建證書。按照提示填寫證書信息&#xff0c;選擇證書類型為 代碼簽名&#xff0c;并保存…

基于STM32的機器人控制系統設計方案

一、系統概述 該機器人控制系統以STM32微控制器為核心,旨在實現對機器人的運動控制、傳感器數據采集與處理、任務調度以及人機交互等功能。適用于多種類型的移動機器人,如輪式機器人、履帶式機器人等,可應用于室內導航、環境監測、物流搬運等場景。 二、硬件設計 STM32微控…

【leetcode hot 100 51】N皇后

解法一&#xff1a;&#xff08;基于集合的回溯&#xff09;我們從第一行開始尋找&#xff0c;找每一行皇后應該放在第幾列。每次找到都用Set記錄已經用過的列和對角&#xff0c;其中從左到右向下的對角&#xff08;行-列相同&#xff09;&#xff0c;右到左向下的對角&#xf…

藍橋刷題note9(分發餅干,最長回文子串)

1.分發餅干 假設你是一位很棒的家長&#xff0c;想要給你的孩子們一些小餅干。但是&#xff0c;每個孩子最多只能給一塊餅干。 對每個孩子 i&#xff0c;都有一個胃口值 g[i]&#xff0c;這是能讓孩子們滿足胃口的餅干的最小尺寸&#xff1b;并且每塊餅干 j&#xff0c;都有…

面試常問系列(一)-神經網絡參數初始化

一、背景 說到參數初始化&#xff0c;先提一下大家常見的兩個概念梯度消失和梯度爆炸。 &#xff08;一&#xff09;、梯度消失&#xff1a;深層網絡的“靜默殺手” 定義&#xff1a; 在反向傳播過程中&#xff0c;梯度值隨著網絡層數增加呈指數級衰減&#xff0c;最終趨近…

Manacher 馬拉車算法

Manacher 馬拉車算法 5. 最長回文子串 - 力扣&#xff08;LeetCode&#xff09; 馬拉車算法是目前解決尋找字符串中最長的回文子串時間復雜度最低的算法&#xff08;線性O(n)&#xff09;. 中心擴散法 初始化一個長度與字符串 s 相等的 臂長數組 arr 和 最長臂長 max 與 最…

(學習總結29)Linux 進程概念和進程狀態

Linux 進程概念 馮諾依曼體系結構軟件運行與存儲分級數據流動的理論過程 操作系統操作系統(Operator System) 概念操作系統的功能與作用系統調用和庫函數概念 進程概念描述進程 - PCBtask_struct查看進程通過系統調用獲取進程標示符 PID通過系統調用 fork 函數創建進程簡單使用…

MySQL密碼修改的全部方式一篇詳解

本文將詳細介紹多種修改MySQL密碼的方式。 本文目錄 一、alter user 語句操作步驟 二、set password操作步驟 三、直接修改 mysql.user表操作步驟 一、alter user 語句 當你以 root 用戶或者擁有足夠權限的用戶登錄 MySQL 時&#xff0c;可以使用 ALTER USER 語句來修改密碼。…

Wi-Fi NAN 架構(Wi-Fi Aware Specification v4.0,第2章:2.3~2.6)

1. NAN 數據通信架構 1.1 單播支持 要在兩個NAN設備之間啟動單播數據通信&#xff0c;服務需發起一個NAN數據路徑&#xff08;NDP&#xff0c;NAN Data Path&#xff09;請求。這對NAN設備之間會建立一個NAN設備鏈路&#xff08;NDL&#xff0c;NAN Device Link&#xff09;&…

Lineageos 22.1(Android 15)實現負一屏

一、前言 方案是參考的這位大佬的&#xff0c;大家可以去付費訂閱支持一波。我大概理一下Android15的修改。 大佬的方案代碼 二、Android15適配調整 1.bp調整&#xff0c;加入aidl引入&#xff0c;這樣make之后就可以索引代碼了 filegroup {name: "launcher-src"…

Java 大視界 -- Java 大數據在智能醫療遠程會診與專家協作中的技術支持(146)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

Sqlite3數據庫

工具庫的使用&#xff1a;程序編寫時#include <庫名.h>即可調用庫中的函數 編譯時鏈接工具庫&#xff1b; 注意&#xff1a;數據庫中不區分字母大小寫&#xff1b; SQLite 中的事務是數據庫操作中非常重要的一個概念&#xff0c;它用于確保數據庫操作的完整性和一致性。…

虛擬路由與單頁應用(SPA):詳解

在單頁應用&#xff08;SPA&#xff0c;Single Page Application&#xff09;中&#xff0c;虛擬路由&#xff08;也稱為前端路由&#xff09;是一種關鍵的技術&#xff0c;用于管理頁面導航和狀態變化&#xff0c;而無需重新加載整個頁面。為了幫助你更好地理解這一概念&#…

練習:運動計劃

需求&#xff1a;鍵盤錄入星期數&#xff0c;顯示今天的減肥活動。 周一&#xff1a;跑步&#xff1b; 周二&#xff1a;游泳&#xff1b; 周三&#xff1a;慢走&#xff1b; 周四&#xff1a;騎動感單車&#xff1b; 周五&#xff1a;拳擊&#xff1b; 周六&#xff1a;…

通過webrtc+canvas+css實現簡單的電腦濾鏡拍照效果

這里我們用的是webrtc中的MediaDevices.getUserMedia()的瀏覽器api進行的效果實現&#xff0c;MediaDevices.getUserMedia() 會提示用戶給予使用媒體輸入的許可&#xff0c;媒體輸入會產生一個MediaStream&#xff0c;里面包含了請求的媒體類型的軌道。此流可以包含一個視頻軌道…

《TCP/IP網絡編程》學習筆記 | Chapter 20:Windows 中的線程同步

《TCP/IP網絡編程》學習筆記 | Chapter 20&#xff1a;Windows 中的線程同步 《TCP/IP網絡編程》學習筆記 | Chapter 20&#xff1a;Windows 中的線程同步用戶模式和內核模式用戶模式同步內核模式同步 基于 CRITICAL_SECTION 的同步內核模式的同步方法基于互斥量對象的同步基于…

VBA-Excel

VBA 一、數據類型與變量 常用數據類型&#xff1a; Byte&#xff1a;字節型&#xff0c;0~255。Integer&#xff1a;整數型&#xff0c;用于存儲整數值&#xff0c;范圍 -32768 到 32767。Long&#xff1a;長整型&#xff0c;可存儲更大范圍的整數&#xff0c;范圍 -214748364…

kotlin 內聯函數 inline

高階函數實現的原理&#xff1a;函數類型其實是生成了一個對象 。 inline翻譯成中文的意思就是內聯&#xff0c;在kotlin里面inline被用來修飾函數&#xff0c;表明當前函數在編譯時是以內嵌的形式進行編譯的&#xff0c;從而減少了一層函數調用棧&#xff1a; inline fun fun…