首页 > 其他分享 >#Datawhale #AI夏令营 #Mobile Agent 设计与实践 (2)

#Datawhale #AI夏令营 #Mobile Agent 设计与实践 (2)

时间:2024-08-31 22:59:51浏览次数:6  
标签:AI Agent server Mobile version ADB adb 报错 模拟器

系列文章目录

Task1: 第一篇文章
Task2 (loading…)
Task3 (loading…)


Task 2

文章目录


前言

 
本篇文章延续上一篇对Mobile-Agent(移动智能体)的相关学习,主要记录了扩展动作空间、增加复合动作、开发创新应用的idea、初步尝试和实践结果。至于其框架原理和原始开源代码,请参考Datawhale官方文件和第一篇文章的详细讲解。

必看:本文有对以下报错的详细讲解,亲测有效!!!

  • Could not automatically detect an ADB binary. Some emulator
    functionality will not work until a custom path to ADB is added. This
    can be done in Extended Controls > Settings > General tab > 'Used
    detected ADB location
  • The ADB binary found at \SDK\platform-tools\adb.exe is obsolete and has
    seriousperformance problems with the Android Emulator. Please update
    to a newer version to get significantly faster app/ file transfer
  • Timed out after 300 seconds waiting for emulator to come online
  • Pixel 8 API 35 Emulator failed to connect within 5 minutes
  • adb server version (31) doesn’t match this client (41); killing…error: cannot connect to daemon
  • adb server version (22361) doesn’t match this client (41); killing…error: cannot connect to daemon

本篇文章主要是记录和分享自己在夏令营中的学习过程和遇到的困难


一、创新场景的idea

1. 股票小助手

自动总结目标股票当日涨跌

2. 群聊小助手

与新进群的群成员进行自主互动,按照指令完成群功能

3. 壁纸生成助手

根据用户兴趣点自主下载背景图片

4. 桌面整理大师

根据用户要求自主完成移动设备APP归类与整理

本次主要聚焦壁纸生成助手,先尝试保存10张满足要求的图片到Gallery指定图册


二、Mobile-Agent 扩展初步实践

step 1: controller修改

这里给controller.py文件末尾添加了一个search函数,用以搜索图片、截屏并保存到Gallery

# 添加search函数
def search(adb_path):
    # 打开谷歌浏览器并搜索关键词
    subprocess.run([adb_path, 'shell', 'am', 'start', '-a', 'android.intent.action.VIEW', '-d', 'https://www.google.com/search?q=brown+dog'])
    # 等待页面加载
    time.sleep(5)  # 可能需要更长时间等待页面加载

    for i in range(10):
        # 模拟点击第一张图片
        subprocess.run([adb_path, 'shell', 'input', 'tap', 'x_coordinate', 'y_coordinate'])  # 点击第一张图片
        time.sleep(2)
        # 等待图片加载完成
        time.sleep(5) 
        # 模拟器的Gallery路径
        gallery_path = "/storage/emulated/0/image{}.png".format(i)
        # 截屏并保存到Gallery路径
        subprocess.run([adb_path, 'shell', 'screencap', '-p', '/sdcard/screenshot.png'])  
        subprocess.run([adb_path, 'pull', '/sdcard/screenshot.png', gallery_path]) 
        time.sleep(2)

step 2: Prompt修改

修改 get_action_prompt()函数的后半部分,添加一个action

prompt += "### Response requirements ###\n"
(...)
prompt += "Home: Return to home page.\n"
#添加一个新action
prompt += "Search and Save Images of Brown Dogs: Search for and save 10 images of brown dogs by taking screenshots from the internet."
prompt += "\n"
#接着是最后一个action:Stop
prompt += "..."
(...)
prompt += "### Thought ###..."
prompt += "### Action ###\nYou can only choose one from the seven actions above. Make sure that the coordinates or text in the \"()\".\n"  #action选项从six改为seven
(...)

step 3: 主文件 run.py 修改

修改instruction

# Your instruction
instruction = "First, open Google Chrome. Then, search and take screenshot for 10 images of the brown puppy dog. Finally, save them to Gallery."

在程序入口while循环中添加一个elif判断语句

elif "Search" in action:
    search(adb_path)

❤️ 以上三个步骤就实现了一次初步修改,更多修改方法与扩展策略请见Task2学习文档


二、学习与相关问题

1. 重难点学习

 
原理

来源于https://www.51cto.com/aigc/1024.html
 

2. 问题与初步解答


问题1:为什么启动模拟器时出现弹窗显示如下报错:

Could not automatically detect an ADB binary. Some emulator functionality will not work until a custom path to ADB is added. This can be done in Extended Controls (...) > Settings > General tab > 'Used detected ADB location'

解答:这个warning是因为模拟器在启动时找不到ADB路径。首先,确认已经在电脑高级系统设置-环境变量-系统环境变量里添加了ANDROID_SDK_HOME变量,值应为.android文件夹的路径(首先需要把这个文件夹从"C:\users\用户名"中找到,然后整个复制到SDK文件夹里面,现在的路径才是对的,变量值应为\path\SDK.android)。然后,在系统变量的Path里新增一条,内容为SDK中platform-tools文件夹的路径。我们想要的adb.exe文件就在这个platform-tools文件夹里。接着,在启动模拟器超时前,在模拟器的右边栏里找到系统设置,里面就有上述提示中说的Extended Controls > Settings > General tab > ‘Used detected ADB location’。你会发现它是开着自动检测的。现在关掉按钮,然后(注意一定要完成接下来的步骤,否则模拟器依然找不到adb,博主就是犯了这个错误)点击按钮旁边的文件夹图形(就是常用的Browse作用),选择adb.exe文件或直接输入adb.exe这个文件的地址。再关闭模拟器重启就会发现这个warning消失了。


问题2:为什么启动模拟器时出现弹窗显示如下报错:

The ADB binary found at E:\Android_SDK\platform-tools\adb.exe is obsolete and has seriousperformance problems with the Android Emulator. Please update to a newer version to get significantly faster app/ file transfer

解答:这个warning博主遇到后尝试了很多办法,最终发现应该是下载过程中的网络问题导致的,卸载重装是很好的办法。不要害怕,Android Studio,SDK和相关文件是相对好卸载干净的,博主找到了】好文章,讲的很详细,博主自己就是按这个做的(注意,文中所述需要删除的C:\users\用户名\AppData目录下的文件直接找是找不到的,因为这个AppData文件本身是用户名下的隐藏文件,需要先在查看里打开隐藏文件的显示才能找到。博主自己当时就是没找到,以为不用管,结果重新安装Android Studio 时发现程序自动跳过了好几个关键的设置环节)。文章链接在下方:

卸载的参考文章链接:http://t.csdnimg.cn/XsFXB
安装的参考文章链接:http://t.csdnimg.cn/XsFXB + Datawhale官方文件


问题3:为什么即使解决了上述问题,仍然报错:

Timed out after 300 seconds waiting for emulator to come online
# 或者
Pixel 8 API 35 Emulator failed to connect within 5 minutes

回答:这个问题很重要,因为这只是表面问题,需要先找到连接失败的真正原因。打开Android Studio的Notification,才可以看到真正报错的原因。博主遇到的是下一个问题所记录的报错


问题4:Notification中提醒如下报错的二者其一(博主遇到的是第一个报错):

adb server version (22361) doesn't match this client (41); killing..
error: cannot connect to daemon
(...)
adb server version (31) doesn't match this client (41); killing..
error: cannot connect to daemon
(...)

回答:首先,这个warning的意思是server端(也就是模拟器)的ADB版本与client端(也就是电脑)的ADB版本不匹配。先在终端中输入adb kill-server,再输入adb start-server来重启adb服务(如果显示没有命令是adb,那么执行以下第一个可能性中提到的手动操作)。如果重启后再尝试就不报错了,那问题解决。如果还报错,则有两个可能原因,需要一一排除:

第一,有可能是真的因为版本不匹配,这时候需要查看版本。首先,在终端中输入adb,如果有反应,则输入adb version查看服务端与客户端的版本号;如果没有反应,则说明需要手动操作一下,把adb.exeAdbWinApi.dllAdbWinUsbApi.dll这三个文件复制到C:\Users\用户名文件夹里面,同时确认刚才问题1中提到的环境变量已经设置好,接着关闭并重启终端,再输入adb,就会出现回应了。接着,输入adb version后的回应中会有三串数字:第一串是client的version,主要看这串数字的最后一部分A(博主的是41);第二串是server的version,主要看这串数字的第一部分B(博主是35);第三串是电脑Windows系统的版本号,主要看这串数字的最后一部分C(博主是22361)。注意,这里的ABC和后面的xxx、yyy都是代指。接下来,比较A和B,如果没有差距,直接进入第二种可能。如果有差距,打开Android Studio的SDK Manager(点击上方导航栏中的Tools就能找到),查看platform-tools的版本(这里Android Studio的SDK及相关的版本其实就是模拟器,也即server端的版本)是否可以更新,如果可以更新,则更新到与client相符合的版本,再重试,如果成功了就问题解决,还是不成功就直接进入第二种可能;如果没有可以更新的,就说明server端已经最新,不太可能是因为它版本太低,那么,也直接进入第二种可能。

第二,就是端口占用,也就是电脑连接模拟器的端口被别的进程占用了。其实,从上述分析已经可以看出,博主遇到的就是这一种可能性,因为博主的报错中显示的是:adb server version (22361) doesn’t match…可以看到本来这个22361应该是模拟器、即server端的版本号(对博主来说就应该是35),结果报错里显示的却是电脑windows版本号,这明显就是因为连接到电脑client端ADB的不是模拟器的server端ADB,而是电脑自己的某种进程。那么,这种情况可以先卸载掉所有用不上的360相关的软件,尤其是360手机助手,再卸载掉鲁大师手机助手这种软件。其次,先在终端输入netstat -ano|findstr "5037"来查找占用端口号5037的连接,看有没有最后一列中数字不为零的,记住这串数字xxx,这是一个进程的ID;然后,输入tasklist | findstr "xxx"来查找ID为xxx的进程,看它第一列的进程名字yyy;最后,打开任务管理器,将对应的进程kill掉(点击,然后可以看到上方导航栏有结束进程的选项,或者点击后右键也能看到),再按照之前描述的方法重启adb服务即可。


总结

只是本篇针对Task1的总结,系列总结会在第三篇

以上就是对Mobile Agent 开发创新应用任务的初级讲解,也进行了一定的学习与问题分享,后续会继续进阶学习,深入理解框架原理,设计更多应用,持续分享。

标签:AI,Agent,server,Mobile,version,ADB,adb,报错,模拟器
From: https://blog.csdn.net/m0_71844088/article/details/141756557

相关文章

  • 社会实践实习报告还没写?推荐这款AI工具,一键高效生成
    随着科技的飞速发展人工智能逐渐渗透到各个领域为咱们的工作和学带来了极大的便利。在撰写社会实践实报告这一环节一款名为“锐智AI”的一键生成工具应运而生它以其高效、智能的特点成为了广大学生和职场人士的得力助手。本文将详细介绍锐智AI助手的功能、优势以及采用方法帮......
  • 大模型 | RAG 架构设计三阶段:Naive RAG 架构设计、Advanced RAG 架构设计、Agentic RA
    第一阶段:NaiveRAG架构设计大型语言模型(LLMs)虽然展现出卓越的性能,但在处理特定领域或知识密集型任务时,存在一些挑战,比如:产生虚假信息、知识陈旧以及推理过程的非透明性和不可追溯性。RAG技术作为一种有希望的解决方案,通过融合外部数据库的知识,有效应对了这些问题。它显著......
  • 1.2线性模型(Datawhale X 李宏毅苹果书 AI 夏令营)
    1.2线性模型(DatawhaleX李宏毅苹果书AI夏令营)如图,可以先设一个方程:$$y=b+wx_{1}$$而通过观察可以得到每隔7天就有一个循环,所以可以通过观察得到新的模型:$$y=b+\sum_{j=1}^{7}w_{j}x_{j}$$而采用该模型预估时,由于考虑了7天,所以训练数据上会得到比考虑1天较低的损失。......
  • Datawhale X 李宏毅苹果书 AI夏令营 Task3
    一、批量化归一    当误差表面崎岖不平,就意味着它比较难以训练,而利用批量化归一将崎岖的误差表面“铲平”则是其中的方法之一。如果是固定学习率,可能很难得到好的结果,因此才需要自适应的学习率。        当输入的特征,每一个维度的值,它的范围差距很大的时候,我......
  • Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门班-task2-分段线性曲线
    引入上一篇文章中我们了解了机器学习中最基本的模型线性模型(Linearmodels),由于其过于简单(只能调整其斜率w与截距b)无法反映真实数据中多数折线或曲线情况这种限制称为模型偏差(modelbias)。下文介绍:如何构建更复杂,误差更小的函数解决问题。注:此处的bias与线性模型中的b不同。......
  • 蔚来发布“NT.Coconut椰子”系统,乐道L60 搭载城市绿洲AI智舱
    8月31日,在乐道智能系统发布会上,蔚来正式推出“NT.Coconut椰子”智能系统,该系统由智能应用、SkyOS天枢操作系统、智能硬件三大部分组成,旨在为用户带来更智能、更便捷的驾驶体验。SkyOS天枢操作系统:整车级别的领先全域操作系统乐道全系车型搭载SkyOS天枢操作系统,全面覆盖车联......
  • AI 自动化副业创收,手把手带你提升副业收益【AI大模型】
    副业创收已经成为行业趋势,在当前经济形势下,许多人面临着行业裁员的不确定性。为了增强个人的抗风险能力,寻求一份副业已经成为一种重要的趋势。这不仅是经济上的补充,更是对自由与独立的一种追求——它应让你自主掌控,不被外界束缚。通过精心打造的副业,你不仅可以灵活安排时间,......
  • Datawhale X 李宏毅苹果书 AI夏令营 Task2笔记
    Task2.1:《深度学习详解》-3.3&4&5自适应学习率的概念和方法,包括AdaGrad、RMSProp和Adam等优化器。-**训练网络时的梯度和损失变化**:训练网络时损失可能不再下降,但梯度范数不一定小,梯度可能在山谷壁间“震荡”,多数训练未到临界点就停止。-**不同学习率的影响**:学习率过大或过......
  • Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门班-task1-初步了解机器学习
    机器学习概念就是使计算机模拟人类的学习过程,通过分析大量数据,完成任务,处理问题。这个过程简单来说就是,使计算机寻找到一个函数,构建起一个模型,通过数据使模型准确化,便于输出目标结果。机器学习类型机器学习根据其所需完成的任务不同,需要寻找不同类型的函数。类型一:回归(Regr......
  • AI产品经理薪资揭秘:起薪30k不是梦!零基础转行攻略大公开
    2024年,还有什么新风口?AI、元宇宙、NFT…很多人不知道,其实不管是元宇宙还是NFT,它们本质上就是人工智能领域。AI自身应用领域非常广泛,大批高薪岗位随之涌了出来,包括AI产品经理。AI产品经历具体工作内容是什么?薪资有多香?普通人如何进入AI人工智能行业?需要写代码吗?别急,小......