原创 ElliotBai 2024-10-29 09:47 上海
聊聊AutoGLM的实现原理
随着AI Agent技术的发展,如何让其真正落地应用一直是业界关注的焦点。本文通过对智谱AI最新发布的AutoGLM进行深度测试,探讨其在实际应用场景中的表现,并深入分析其技术实现原理。我不常写智谱,因为智谱总是默默地在埋头研究技术,也不给商单。上一次写还是在一年前
GLMs
发布的时候,结果那篇文章写的是GLMs,最先做出来的却是Coze。从GPTs/GLMs如何赚钱谈起:AI应用的曙光在哪?AI Agent要做好的核心是
Tools
,如果想让 Agent 变得有用,用户想要用,那么核心要解决的其实是Tools的问题,把跟用户日常使用、常用的东西都做成工具接入到 Agent 里,它才能变得有用和好用。但是这个事情基本不可能,微信会给接口么?淘宝会?还是美团点评小红书会?都不会。要么各大内容平台自己下场做,字节做了,支付宝也做了(小程序),微信不知道会不会,但他们也只能在是自己的生态中去做,其它的厂家可能都比较难。不过其实还有另外一种通过类似 RPA 的方式去做,比如荣耀的手机自动驾驶,智谱的AutoGLM,模拟人类操作,不用跟应用厂家去直接对接,你省事我也省事,拒绝无障碍服务的话可能又会误伤其它用户,厂家也会掂量掂量。不过真的想把这个事情做好,其实挺难,在智谱的AutoGLM发布前,我看过了很多实现甚至自己动手做过,不管是Paper、PPT还是Demo都没一个能打的。AutoGLM两天的深度测试下来,虽然还有许多不完美的地方,但我仍旧愿意写一篇文章来夸它,因为它的确让很多人对 AI Agent 落地可用重新燃起了希望,迈进了很大的一步。下来就让我一边分享测试过程,一边试着分析实现原理,带大家一起来体验一下AutoGLM。
unsetunset注册&权限unsetunset
AutoGLM 目前还处于内测阶段,申请入口在智谱清言APP中,直接跟AutoGLM内测申请小助手对话提交申请即可。(智谱把传统表单的提交通过Tools的方式做到了对话中,体验提升很多,顺便赞一个。我们以前在做拟人客服的时候也用到了这样的思路,对话式的交互,从自然语言中提取信息并通过Tools提交,更像是跟人类在交流,而不是冰冷的表单。)无障碍服务(AccessibilityService)
是一套可以模拟操作的系统级别的API。用户同意我们的应用获取无障碍服务的权限之后就可以模拟操作,来控制用户的手机。无障碍被广泛用于抢红包、自动回复、一键获取权限等应用中。但是开启了无障碍服务之后,因为需要实时监控手机,理论上是会引起手机的卡顿的,另外一个就是隐私问题。所以在登录AutoGLM后的第一件事情就是引导你去开启无障碍权限和悬浮球权限,不然就没有办法继续体验。在权限授权正常之后,你就会进入到首页。unsetunset能力范围unsetunset
在首页的右上角,有个能力范围,里面写了AutoGLM当前具体能做哪些事情。unsetunset写大众点评unsetunset
这个是让它帮我写点评的测试。我一直都想有个 Agent 来帮我写大众点评刷等级,所以之前还动手试了试,但是发现这个事情实现起来特别难。因为想要想要让 Agent 去替我写点评,它至少得具备三个能力:完整的上下文信息,比如餐厅信息,热门菜,评价内容,以及正确的应用操作路径,点评在哪里写,怎么路径到编写页面;
操作应用的能力,包括但不限于:打开应用,点击,滑动,双击,输入(粘贴),长按...;
多模态识别及Grounding能力(识别目标并给出坐标,用于精准点击);
Agent ReAct 能力,能够根据任务目标,当前页面信息,判断下一步应该做什么;
1
的前半部分不难,至少可以通过给出更详细准确的指令来传递上下文信息(智谱演示视频中的指令都说的很详细)。后半部分理论也可以去通过指令来传达的,比如“帮我在大众点评 我的-待点评列表中的第二家店铺写一个五星好评”,但是这肯定不是用户想要的体验,说那么多,够累的。测试下来发现,AutoGLM基本能把提到的场景中的路径走正确,应该是专门做了大量的训练的,让模型知道各种App的正确路径,或者能够根据多模态识别来判断这是什么页面。2
是最简单的部分。做过 Android 自动化测试的同学应该都很熟悉。在大模型之前就有成熟的工具,我之前用的就是 ui automator2 。封装成给 Agent 的Tools进行调用即可。3
这一部分最难,给一个UI截图,需要判断出来这个截图里面哪些元素分别对应的是什么,比如返回按钮,输入框,搜索框,跳转链接等等,在上面的例子中甚至需要识别评分组件!另外还需要准确判断在哪个位置点击,这个事情,人类都不一定能做的好。(但是AutoGLM测试下来这块是最让我惊喜的,传闻他们的grounding模型能力不错)。4
这块没啥说的,纯看模型能力和 Agent 框架设计unsetunset总结公众号文章(视频2X)unsetunset
这个任务其实复杂度不高,这个链路需要交互的内容比较少。惊喜的部分:搜索的时候,它会先点击到公众号,减少了下一步内容筛选的干扰。郁闷的部分:不知道是我普通话真的不太标准还是ASR识别的问题,说内容的时候经常错,而且微信公众号的搜索必须输的很精准才行。unsetunset点外卖 (视频1.5x)unsetunset
点外卖的测试中我测试了好几次,第一次失败是因为在执行操作的中间弹出了一个弹窗,导致点击出错了。原因是因为AutoGLM判断点击的逻辑是先截图识别,识别到需要点击哪里并下发指令去操作的时候出了个弹窗,但是这个时候操作它其实是不知道的,所以就错点了弹窗跳进了广告。(这里会有个时间差)后面重试的时候,我把指令说的更准确了点,但是执行到一半的时候,它多了很多个选项,这个时候不知道该选哪一个,挂起了流程来询问用户需要点的是什么汉堡。这个交互其实做的很好,因为即使是用户自己在操作的时候,其实也是需要看到菜单才能知道具体想要点什么。像官方Demo中那样把所有的信息在一开始就说的非常详细其实是不太符合用户正常操作习惯的,这也是我以前一直嫌弃Planning Agent的原因,因为你不能在一开始就把所有的事情都规划正确,中间肯定会有信息的更新反馈。比如我半夜要点奶茶,你选店的时候发现奶茶店打烊了,那你是不是应该在这个时候询问用户下一步应该做什么,而不是直接把任务结束了。unsetunset是不是按键精灵?unsetunset
很多人在看完AutoGLM官方的Demo时候,可能会说这不就是个按键精灵或者脚本么?其实不是,我特地去测了不同的输入,来验证是不是通过规则或脚本来实现的。比如两个类似的query:“帮我买一杯咖啡”、“帮我买一包咖啡豆”,前面打开的就是美团,后面打开的就是淘宝。如果这种类似的事情都通过规则或者脚本来实现,做过产品或写过代码的朋友应该知道难度是很高的,也不太现实。