Open-AutoGLM支持自定义模型?HuggingFace集成指南
本文介绍了如何在星图GPU平台上自动化部署智谱开源的Open-AutoGLM手机端AI Agent框架镜像。该平台简化了部署流程,用户可快速搭建环境,集成自定义模型。通过该框架,AI助手能理解自然语言指令并自动操作手机,典型应用场景包括自动完成“打开小红书并搜索周末游玩攻略”等任务,实现手机自动化。
Open-AutoGLM支持自定义模型?HuggingFace集成指南
你是不是也想过,要是能让AI直接帮你操作手机就好了?比如,你随口说一句“帮我打开小红书,搜一下周末去哪玩”,它就能自动完成解锁、打开App、搜索、浏览等一系列操作。这听起来像是科幻电影里的场景,但现在,通过智谱开源的Open-AutoGLM框架,这个想法已经变成了现实。
Open-AutoGLM,特别是其核心应用Phone Agent,是一个能“看懂”手机屏幕并“动手”操作的AI智能体框架。它就像一个住在你手机里的数字助手,不仅能理解你用自然语言发出的指令,还能通过分析屏幕内容,自动规划并执行点击、滑动、输入等操作。更酷的是,这个框架并不局限于官方提供的模型,它支持集成HuggingFace上的自定义模型,让你能根据自己的需求,打造更强大、更个性化的手机AI助手。
今天,我们就来手把手教你,如何将HuggingFace上的自定义视觉语言模型集成到Open-AutoGLM中,让你的手机AI助手拥有独一无二的“大脑”。
1. 理解Open-AutoGLM与Phone Agent
在开始动手之前,我们先花几分钟搞清楚Open-AutoGLM和Phone Agent到底是什么,以及它们是如何工作的。
1.1 核心概念:一个能看会动的AI助手
你可以把Phone Agent想象成一个由三个部分组成的智能系统:
- 眼睛(视觉感知):它通过截取手机屏幕画面,并利用一个强大的视觉语言模型(比如GLM、Qwen-VL等)来“看懂”屏幕。这个模型能识别出界面上的文字、按钮、图标以及它们之间的关系,理解当前处于哪个App的哪个页面。
- 大脑(规划与决策):基于“眼睛”看到的内容和你用自然语言发出的指令(例如:“把这张图片发微信给张三”),它的“大脑”——通常是另一个语言模型——会进行分析和规划。它会推理出完成任务需要哪些步骤,比如:先点击相册图标,再选择图片,然后打开微信,找到张三的聊天窗口,最后点击发送。
- 手(执行操作):规划好步骤后,系统会通过ADB(Android调试桥)这个工具,将操作指令(如点击坐标(500, 800))发送到手机,模拟真实的手指触摸,从而自动执行任务。
整个过程是循环的:执行一个操作后,重新截屏分析新界面,再规划下一步,直到任务完成或遇到需要人工介入的情况(如输入密码)。
1.2 为什么需要自定义模型?
官方提供的autoglm-phone模型已经很强大了,但集成自定义模型能带来更多可能性:
- 领域专家:如果你需要AI助手专门处理医疗报告截图、工程图纸或特定行业软件界面,可以集成在相应领域数据上微调过的模型,识别准确率会大幅提升。
- 性能优化:你可以选择更小巧、推理速度更快的模型,在资源有限的设备(如边缘计算盒子)上部署,降低成本。
- 功能增强:集成支持特定功能(如更复杂的图表理解、手写文字识别)的模型,让助手能力更强。
- 数据隐私:使用自己训练的私有模型,确保敏感的屏幕数据不会离开你的内网环境。
接下来,我们就进入实战环节,看看如何把HuggingFace上的模型“装进”这个框架里。
2. 环境准备与基础部署
在集成自定义模型前,我们需要先把Open-AutoGLM的基础环境搭建好。这里主要分为服务端(运行AI模型)和控制端(连接并控制手机)。
2.1 服务端部署:为模型安家
服务端通常是一台拥有GPU的云服务器或本地高性能电脑,用于加载和运行我们从HuggingFace下载的视觉语言模型。
步骤1:准备服务器环境 假设我们使用Ubuntu系统,并已经安装好了NVIDIA显卡驱动、CUDA和conda。
# 1. 创建并激活一个独立的Python环境
conda create -n autoglm python=3.10 -y
conda activate autoglm
# 2. 安装vLLM(一个高性能的模型推理和服务库)
pip install vllm
# 3. 克隆Open-AutoGLM仓库(主要用其服务端代码结构)
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM
步骤2:使用vLLM启动模型服务 vLLM能极大地提升大模型推理速度。假设我们要服务的模型是Qwen/Qwen2-VL-7B-Instruct。
# 启动一个API服务,将模型加载到GPU上
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2-VL-7B-Instruct \
--served-model-name qwen-vl \ # 给这个服务起个别名
--api-key token-abc123 \ # 设置一个简单的API密钥
--port 8800 \ # 服务监听的端口
--max-model-len 8192 \ # 模型支持的最大上下文长度
--tensor-parallel-size 1 # 如果有多张GPU,可以设置并行数
服务启动后,会提供一个类似于OpenAI API格式的接口(http://服务器IP:8800/v1),等待接收请求。
2.2 控制端与手机连接(本地电脑)
服务端在云端跑着模型,我们还需要在本地电脑配置控制端,通过ADB控制安卓手机,并调用云端的AI模型。
2.2.1 硬件与环境准备
- 操作系统:Windows / macOS / Linux均可。
- Python:建议 Python 3.10+。
- 安卓设备:Android 7.0+ 的真实手机或模拟器(如MuMu模拟器)。
- ADB工具:用于连接电脑和手机的“桥梁”。
- Windows/Mac:从Android开发者官网下载
platform-tools,解压并配置环境变量。 - 验证安装:在命令行输入
adb version,能显示版本号即成功。
- Windows/Mac:从Android开发者官网下载
2.2.2 手机端设置
- 开启开发者模式:进入手机
设置->关于手机-> 连续点击版本号7次,直到提示“您已处于开发者模式”。 - 开启USB调试:返回设置,进入新出现的
开发者选项,开启USB调试。 - 安装ADB Keyboard(可选但推荐):这是一个通过电脑向手机输入文字的输入法。下载APK安装后,在手机
设置->系统->语言与输入法->虚拟键盘中,将ADB Keyboard设为默认输入法。这能确保AI输入文字时更稳定。
2.2.3 部署控制端代码
在本地电脑上操作:
# 1. 克隆仓库(如果之前只克隆了服务端部分,控制端也需要)
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM
# 2. 安装依赖
pip install -r requirements.txt
# 推荐使用可编辑模式安装,方便后续修改代码
pip install -e .
2.2.4 连接设备
用USB线连接手机和电脑,或在同一WiFi下。
- USB连接:命令行执行
adb devices,应看到设备ID。 - WiFi连接(更灵活):
# 先用USB线连接一次,开启网络调试端口 adb tcpip 5555 # 拔掉USB线,连接手机的IP地址(在手机WiFi设置中查看) adb connect 192.168.1.100:5555
3. 集成HuggingFace自定义模型
这是本文的核心。Open-AutoGLM的架构设计良好,替换模型主要涉及修改服务端的模型加载部分和控制端的请求配置。
3.1 服务端:加载自定义模型
假设我们在HuggingFace上找到了一个更适合我们场景的模型,例如microsoft/Florence-2-large,它是一个强大的视觉语言模型。我们只需在启动vLLM服务时,将--model参数换成新模型的HuggingFace仓库ID或本地路径。
情况一:直接使用HuggingFace上的公开模型
python -m vllm.entrypoints.openai.api_server \
--model microsoft/Florence-2-large \
--served-model-name florence-2 \ # 服务别名
--port 8801 \ # 可以换一个端口,避免冲突
--dtype half \ # 使用半精度浮点数,节省显存
--max-model-len 4096
vLLM会自动从HuggingFace下载模型。
情况二:使用自己微调后上传到HuggingFace的模型 假设你的用户名是myusername,模型名是my-phone-agent-model。
python -m vllm.entrypoints.openai.api_server \
--model myusername/my-phone-agent-model \
--served-model-name my-custom-model \
--port 8802 \
--trust-remote-code # 如果模型需要自定义代码,需添加此参数
情况三:使用本地磁盘上的模型 如果你已经将模型下载到本地/path/to/my/model。
python -m vllm.entrypoints.openai.api_server \
--model /path/to/my/model \
--served-model-name local-model \
--port 8803
3.2 控制端:配置模型与请求
控制端需要知道去哪里调用哪个模型。这主要通过修改main.py的启动参数或直接修改代码中的配置来实现。
方法一:通过命令行参数指定(最简单) 运行Phone Agent时,通过--base-url指向你的新模型服务地址,并通过--model参数指定服务端定义的served-model-name。
python main.py \
--device-id 192.168.1.100:5555 \
--base-url http://你的服务器IP:8801/v1 \ # 对应Florence-2服务
--model "florence-2" \ # 必须与served-model-name一致
--api-key "token-abc123" \ # 如果服务端设置了api-key
"帮我打开设置,找到蓝牙选项并开启它"
方法二:修改代码配置(更灵活) 查看Open-AutoGLM/phone_agent目录下的配置文件(如config.py)或main.py中关于模型API的调用部分。你可能需要修改API的端点、请求头或消息格式,以完全适配你的自定义模型。 例如,找到构建请求的函数,确保其格式与你自定义模型API的期望格式匹配。大多数兼容OpenAI API格式的模型服务(如vLLM提供的)可以直接使用,无需修改。
3.3 一个完整的自定义模型集成示例
假设我们集成了Qwen2-VL模型,并想测试一个复杂任务。
-
服务端启动:
# 在云服务器上 python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen2-VL-7B-Instruct \ --served-model-name my-qwen \ --port 8899 -
本地控制端执行:
# 在本地电脑,确保手机已通过adb connect连接 python main.py \ --device-id $(adb devices | grep -v List | cut -f1) \ # 自动获取第一个设备ID --base-url http://<你的服务器IP>:8899/v1 \ --model "my-qwen" \ "打开手机淘宝,搜索‘无线蓝牙耳机’,按销量排序,点开第一个商品,截图保存到相册。"这个指令包含了多个步骤:打开App、搜索、排序、点击、截图。Phone Agent会利用Qwen2-VL模型理解每个步骤的屏幕状态,并自动执行。
4. 实战:让AI助手自动发微博
我们来完成一个更具体的场景:让AI助手自动登录微博(假设已保存密码),并发布一条带图片的预置内容。
步骤1:准备模型服务 我们继续使用上面启动的my-qwen服务。
步骤2:编写任务脚本 虽然可以直接用命令行指令,但对于复杂任务,我们可以写一个简单的Python脚本,更清晰地组织步骤。在Open-AutoGLM目录下创建post_weibo.py:
import asyncio
from phone_agent.agent import PhoneAgent
from phone_agent.adb import ADBConnection
async def auto_post_weibo():
# 1. 初始化ADB连接
conn = ADBConnection()
device_id = "192.168.1.100:5555" # 你的设备ID
success, msg = conn.connect(device_id)
if not success:
print(f"连接失败: {msg}")
return
print("设备连接成功")
# 2. 创建Phone Agent实例,指向我们的自定义模型服务
agent = PhoneAgent(
base_url="http://<你的服务器IP>:8899/v1",
model_name="my-qwen",
api_key="", # 如果服务端未设置,可为空
device_id=device_id
)
# 3. 定义任务链
tasks = [
"解锁手机屏幕", # 假设已设置无需密码滑动解锁
"找到并点击‘微博’应用图标",
"等待应用加载完成",
"点击屏幕底部的‘+’发布按钮",
"选择‘相册’图标",
"选择名为‘vacation.jpg’的图片",
"在文本输入框输入:‘周末的露营太治愈了!推荐这个营地给大家。 #户外生活 #露营’",
"点击‘发送’按钮",
"等待发布成功提示出现",
"返回手机主页"
]
# 4. 顺序执行任务
for i, task in enumerate(tasks, 1):
print(f"\n>>> 步骤 {i}: {task}")
result = await agent.run(task) # 执行单个指令
if not result.success:
print(f"步骤失败: {result.message}")
# 这里可以加入错误处理,比如重试或人工接管
break
print(f"步骤成功")
await asyncio.sleep(2) # 每个步骤后稍作等待,让界面稳定
print("\n✅ 微博自动发布任务完成!")
conn.disconnect(device_id)
if __name__ == "__main__":
asyncio.run(auto_post_weibo())
步骤3:运行脚本
python post_weibo.py
脚本会控制Phone Agent,利用我们集成的Qwen2-VL模型,一步步理解屏幕、执行操作,最终完成微博发布。
5. 总结与进阶思考
通过以上步骤,你已经成功地将HuggingFace上的自定义模型集成到了Open-AutoGLM框架中。我们来回顾一下关键点,并看看未来还能做些什么。
5.1 核心步骤回顾
- 理解框架:Phone Agent = 视觉理解(模型) + 任务规划(模型) + 自动执行(ADB)。
- 部署服务端:使用vLLM在GPU服务器上加载HuggingFace模型,提供API服务。
- 配置控制端:在本地电脑连接手机,并通过修改参数指向你的自定义模型服务。
- 执行任务:用自然语言给AI助手下达指令,见证自动化。
5.2 可能遇到的问题与排查
- 服务连接失败:检查服务器防火墙是否开放了指定端口(如8899),控制端网络是否能通。
- 模型加载错误:确认vLLM版本与模型兼容,显存足够,
--max-model-len参数设置合理。 - ADB操作失败:检查USB调试是否开启,
adb devices是否能列出设备,WiFi连接是否稳定。 - AI动作不准:可能是模型对当前界面元素识别不准。可以尝试更强大的视觉模型,或在任务指令中描述得更精确。
5.3 进阶玩法与展望
集成自定义模型只是开始,你还可以:
- 微调专属模型:收集大量手机截图和对应操作指令的数据,在
Qwen2-VL或Florence-2等基础模型上进行微调,让助手更懂你的使用习惯和特定App。 - 构建复杂工作流:将多个Phone Agent任务串联起来,结合其他自动化工具(如RPA),完成如“每日数据截图->分析->生成报告->邮件发送”的完整流程。
- 开发图形界面:为这个AI助手开发一个简单的Web或桌面界面,用按钮和输入框来代替命令行,让操作更直观。
- 探索多模态规划:研究更先进的任务规划模型,让AI不仅能执行线性任务,还能处理“如果找不到按钮就下滑”这样的条件分支。
Open-AutoGLM打开了一扇通往设备自动化未来的大门,而HuggingFace上丰富的模型资源为你提供了无限的“脑洞”燃料。从今天开始,定制你的专属手机AI助手,让重复、繁琐的屏幕操作成为历史吧。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐



所有评论(0)