今天手机上弹出了一条通知,起初我还以为是广告,当我点进去后才发现原来是盗窃防护功能。 oppo 手机都会自带谷歌框架,只需要在设置里面搜索谷歌,然后再打开这个谷歌设置,点进来之后再滑到最下面。 这里会有很多功能,比如盗窃防护功能,可以检测到如果有人抢你手机屏幕会自动锁定。
粉丝1.1万获赞180.2万

很多人不知道 oppo 自带的谷歌框架有个防盗黑科技,首先下拉打开设置下滑找到系统已更新,点击谷歌设置,点击 google 下拉,找到盗窃保护。 如果手机被抢走快速移动的话,它会自动识别,直接锁机,就算离线也能锁定 oppo 一 家争我的用户赶紧去设置里面打开,安全感拉满,厉害。

嗨,哈喽,各位小伙伴大家好,我们今天继续来我们的 agent 的 入门课。其实哦,我这段时间稍微断更了一下啊,一一方面是因为最近做了一个小手术,然后 久坐的话不太方便,然后确实是断更了,这是另外,其次是我们现在其实已经把 agent 的 基础的呃知识已经学学已经基础的一些概念呀,然后一些工具的调用一下,包括 agent, loop 这些已经讲过了。然后那现在呢? 嗯,我想接下来就是包括 m, c, p 啊,那个呃, rap 这些都讲完了,接下来就是我想怎么样才能把接下来讲的内容就接下来,主要是想讲这个 ai 一 阵开发用的框架,但是其实这个框架呢,嗯, 怎么说呢,它更多的需要是一些代码来做,然后我之前也试着录了一些课,以之前的那种,嗯,视频的形式先讲呃基础概念,然后再做一些代码,我感觉这个效果不是特别好, 包括 happyface 官方的课程我也有看过一遍以后,它其实大部分的内容都是怎么说呢?都是,嗯,以代码块的形式。呃,一个一个代码块的这种形式体现的这种形式其实会有一个问题啊,就我之前学也会有个问题, 你看完以后你基本上就忘了,你就忘记了,就是啊,他都是一小块一小块的呈现的,每个知识点会一个一小块,没有一个啊,主动的一个项目能把它串起来。然后呢,这种问题就是你把它看过,甚至是在哎谷歌的 lab 里面把它敲过一遍以后呢,你 依旧会就是忘记,你再反过头来又不知道他讲的什么东西?那我今天就想,呃,我就思考了一下,怎么能把这个内容讲的更清楚一点?我后面可能会直接以 呃项目的形式,然后来给大家讲,那这个项目呢?我后面会给大家讲,它是跟我之前讲的我的开源项目 harness, 我 把融合到了一起嘛,因为,呃当前大家也可以看到。嗯,现在很多都有自己的 harness 了。嗯,包括 zico 的。 呃, zico 的是啥? 好像是质朴的吧,然后 d p c 也有自己的哈尼斯了,这种编程包括 g p t 啊, cursor 啊, s r o p cloud 啊,这些都做的非常非常成熟了。那我我感觉个人做的话再去复刻这些其实已经说有意义吗?也有意义,但是,嗯, 我觉得就是怎么来说呢?已经没有一个有趣的点吧,就没有一个有趣的点呢?嗯, 能让它体现在里面。呃,你说你再去复刻别人,你肯定也复刻不了别人。然后我我以后可能会想结合一个我自己的感兴趣点,然后做这个,把我的哈尼斯项目和这个 agent, 更好的 agent 的 课程更好的结合在一起。因为之前讲过我的开源项目本来也就是想服务于这个 agent 嘛,也是希望有个动手干的一个东西,然后我的目标是, 呃,每周能做一点,然后把它最后发展成一个,呃,比较持久迭代的一个看一下。啊,那今天废话就不多说吧,我们继续开始来讲。呃,今天主要就是讲智能体开发框架啊,真正看我们开发过程中用到的一些框架。那说是框架呢?其实大家可以理解为就是一些, 呃, sdk, 一 些代码的分装好的包,那它这个框架呢?其实就是呃分装的比较完全,我们可以直接引用。我们需要关注的点就是如何去编排我们这个 agent 呃的 workflow, 然后它去书写一些工具,类似于这样,那这样说起来可能比较简单,那我们先从一个最简单的,也不是最简单一个比较简单的框架,就是, 嗯,他跟 face 的 自己的开源框架叫 small agent, small agent 大家也可以去搜一下,可以去给大家看一下它的源码啊。为什么从这个框架来呢?就是它是一个比较轻量级的框架,你看它这里面其实在讲这个智能体框架的时候,讲的一个概念就是比较好, 就是说我们在做这种智能体开发的时候,围绕大元模型应用的时候,并不是总需要智能体框架,他在工作流中提供了灵活,他们在工作流中提供了灵活性,可以可以可高效的执行任务。这个, 呃预定义的工作流满足用户需求,并且真正的需需要。哦,智能体的框架啊,并没有真正需要智能体框架,那这句话我们如果用过 skill 啊,用过 skill 的 小伙伴应该都清楚啊,我大部分可能大部分小伙伴都用过 skill, 其实就是完全是由一个提示词来驱动的。 呃,我们大元模型去完成一个任务,就是一个很完善的提示词啊,比如说,呃,你写一些 python, 你 写一些 python 的 脚本,那这个,嗯,这些 python 脚本有哪些功能?比如说啊,有一个脚本它是专门去呃做呃 ppt 的 啊,对不?也不是说做 ppt 专门去上传 ppt 的, 然后还有一个脚本是从公共库上拉取 ppt 的, 那我们现在比如说想做一个 ppt 的, 呃呃,研究报告 p ppt 的 一个研究报告的话,那其实 最简单的话,其实就可以把它用一个 skill 来做,那这个 skill 呢?就是说我用一个特别完整的提示词告诉我大模型啊,整个步骤分为三步,第一步去调用拉取 ppt 的 啊脚本去运行这个脚本,然后里面这个脚本中要钱的参数由大元模型来决定。按照我们的要求去 从公共库上拉取脚本,然后呃拉取 ppt 之后,再让大元模型去读取这个 ppt, 最后再把 ppt 呃写一份非常详细的分析报告输出来。那这其实就是完成了一个 agent, 也就是一个智能体的工作,但是它其实并没有用到智能体框架,它是一个 skill, 写一个非常非常完整的呃呃,说明书,就是非常完整的 prompt 提示词说明书大圆模型呢?去看啊,去读取这个呃这个说明书以后,然后执行呃这些操作。那其实这个就 没有用到我们的 agent 的 开发,其实就用一个 prompt 啊,一个完整的提示词,相当于大模型看了一个完整的说明书,然后就做了。那这里也说过,当工作流变得复杂的时候,例如让大元模型调用函数或者是多正能体,就涉及到原子 agent 的 时候,就可能需要用到我们的正能体开发框架。 呃,一个驱动系统大元模型智能体如何访问工具列表?那就是可能你的工具会越来越复杂,那你的流程呢?你的之前讲过一定的 loop, 它可能不止一层 loop 啊, thought active 和 opt version。 它可能, 嗯,一个问题的解决需要多个功能,不只是单单纯的以我刚刚举的例子,简单的去库里面拉取 ppt, 然后分析。这么简单,它可能有很多很多步骤要完成 啊,那这个时候这么复杂的步骤,就需要用一个有一套编排的系统,能让它每一步呃都能做好,包括,呃可对它的呃这种执行过程中的日制的监控呀,性能指标的监测呀,那这些都是需要用我们框架来完成的,单纯靠一个 skill 是 完成不了的。 嗯,好,那我其实这次还是想按呃 h f 上哈根 space 和 long graph。 那 在 long graph 的 这个时候可能会多介绍一下 long chain, 因为 呃其实 long scan 的 很多功能都是基于 long graph 来做的,呃,这两个要协调才能做的做,呃形成一个完整的智能题看法。那我们先从这个 small agent 才来 来讲啊, small agent 它是一个轻量级的库,然后它的原代码其实也没有那么的复杂,我们稍微去看一下,其实就能理清楚。我们之前讲过的包括 tus, calling 啊,包括 agent, loop 这些概念, 就是说我们学肯定是不是毫无目的的学啊,我也去找了一些招聘上的,其实有一些招聘他但凡提到说要用嗯 agent 开发框架的话,他其实都是呃都都不会脱离这几点的。你看包括之前我们说的, 呃,这个是这个,这个公司是什么?这公司是 jet, 呃, jet brain, 呃,大家应该比较熟悉它产品就是一些 ide, 包括 prchum, 这个就是它们家的产品,然后你可以看到它这个在岗位的 gdp 里面有写吧,你看比如说会用,嗯, 会用那个 rack, 然后包括会用到一些 open aethopic 的 api, 这个之前都讲过,对吧?然后还有就是你看它啊 agent agent framework, agent 框架里面它就会说到有,呃 long chain, lama index, 呃, long sims, small agent, 类似于这种,其实这些框架用哪一个会根据不同应用场景会使用,但是主要大家只要了解呃,能理解这些, 呃底层的一些思维和逻辑是相通的,都是比较那个啥的,包括这里有有一个其他,哎,这公司,呃,这里包括美团的,包括美团的,它的这个岗位描述的话也有提到 ai 工程化能力,你看有 rgg, 嗯,要懂 agent, 那 这个 agent, 然后熟悉 ai 应用开发的生态, lma index, auto agent, small agent 等开发框架, 其实说这个是在当前 ai 求职中还是需要用到的,所以我们呃还是值得去学习一下的。嗯,哦,这公司,对这个公司,这公司我不太了解啊,但是他也有提到过。呃, long time long graph, lma index, 大家都是相通的,我觉得,呃,怎么说呢?我觉得,嗯,大家在学一个知识点前也可以先做的动作,就是先去找找招聘,然后看一看他的一些需求,我们学东西到底到底有没有用,不要走偏方向了。是这样, 然后我们看一下他这个官方对这个呃 small lady 的 介绍,有一些就废话咱们就可以跳过了啊, 主要就是这个 code agent, 这个我后面会讲代码智能体是 small agent 主要的智能体类型,这是它最大的特点,然后就说明智能体,嗯,不是生成 json 文件,而是生成代码来进行操作的 code agent, code agents, 大家先有个脑子里先有概念,知道这叫代码,这 code agent 这个概念我们后面会讲,然后还有它的 tocs calling, 嗯,支持啊,支持 python 代码的 code agent, 与生成 python 代码 code 不 同,这些这些智能体依赖,不不不,不,就讲的有些智能体会依赖 jason 和文本块, jason 和文本块就是我之前在讲 tus 到那刻有讲过,呃, jason schema, 就是 这个工具调用的时候。什么是 schema? 呃,就是说我们这里就不用这个 skimmer jason 格式的方式调用了,而是直接也还是根据这个 code agent 来,嗯,来做调用,那它的效率就会高很多。那之后我们可以来看一下,正如的,呃,智能机解锁 好这个,我觉得这一部分大家主要了理解就是 code agent 这个概念就好了。那之后呢,我会呃,给大家讲一下这个。什么是 code agent 啊?这个是 small agent 的 主要的一个啊,特点好。为什么使用 small agent? 这个是它的 logo 啊,就是咱们的那个 high in face 的 一个开源,就是更简洁,嗯,如果是没有特别复杂的这种商业级项目啊,用这个会更加灵活一些吧。 好的,我们来看一下这个,呃,我们来看一下这个 code agent 啊。 code agent 这个知识点,以这个图片为例子,我们来讲一下,先在这里面写一下。嗯,这是第一个知识点,我觉得我们需要掌握的一个稍微比较重要一点内容。 咱们今天主要讲的 small agent, 呃,什么是呃? cold agent, 其实用这一个例子就能看,呃,就能看明白。我们先看一下这个例子, 这个例子其中就是,呃,有一个问题,就是我们用户的,比如说我们用户向我们的 agent 去提问,然后我们先看下这个问题, um determine the most cost effective country to the purchase smartphone uh made the cost one um the most the most cost effective country uh to purchase the smartphone model um code act one the country to consider the usa, japan and german and india uh it。 他 这个问题呢,就是说,呃,想考虑 他现在要去买一个智能手机,啊,这个智能,这个 smart phone, 呃,买一个智能手机,这个,呃,这个智能手机是 codex, 呃, code act one 买手机, 用美元买手机,用这个 usa 买手机,然后在不同的国家,日本、德国和印度买手机最便,嗯,就是用美元结算买手机最便宜。那我们就分析一下它有几个步骤,它主要是想问最便宜的买手机的国家, 最便宜的买手机的国家就是要求最便宜的,然后范围是在 日本,德国、 印度,然后用美元结算, 然后它这给提供了几个工具的接口,几个工具的 api, 然后我们来看一下,呃,这几个 api 它分别是什么意思? 五个值啊,这里有五个,这里有五个 api, 我 们一个一个来看。先看第一个,呃, look up, look up rate, 然后它传入的值是个 ctrl, 啊,那从这个字面意思理解呢?那第一个 api 它传入的参数是国家名, 然后呢?它想得到的是从这个,呃函数名字来看,它应该是得到这个汇率和利率吧。 第二个是,你看它第二个是啥?第二个是 covered and text, 嗯嗯嗯, coverage and text 啊,根据本地的,它这有一个传入了一个 press, press, 我 理解就应该是手机的价格,然后 text read, 呃, 是税率, exchange rate, exchange rate, exchange rate 应该是汇率, 它输入三个参数,第一个是手机的价格, 第二 exchange rate, exchange rate, 我 应该就是汇率, 然后第三个,是啊, tax rate 就是 税率, 那他想通过这三个参数得到一个结果,那这个结果就是啊,计算出呃含税的,并且把它换成美元以后的总价格, 美元计算的数据总价。 那第三个呢?第三个 estimate final price, estimate final price 将前就是将我们之前计算的商品转化后的价格,还要加我们的运费嘛?它这有一个呃 price 运费, 那其实它就传入了,呃 car, 嗯, covered price, shipping price, covered price 就是 呃计算后的,呃计算后的就是这个计算后的商品价格两个参数, 那第二个呢?第二个值就是我们的 shipping cost 运费, 那这个得到的结果就好就好了,那就是商正看他这个肯定就是商品价格,加加怎么运费? 第四个,第四个是 look up for price, 嗯,传一个 model, 然后还有个 country, 嗯, 因为我们是要求了他要买这个这个型号的手机 code act 一 对吧。那第四个他传入了个 model, model 是 手机型号, 嗯, ctrl 就是 所在的国家, 那这个 look up for price 呢?那呃想得到一个什么呢?得到一个 当前型号的手机 在当前国家 的价格。 第五个呢?第五个,也就是 s m shipping coast, 只传入一个,呃目的地国家手机传入到,呃,手机传入到目的地国家所需要的运费。 所以啊,就是你这一个简单的问题,如果需要 agent 来计算的话,需要借助到这五个工具啊,这是当前的这个背景,然后我们来看一下传统的 json 调用和我们的 code agent 调用有什么区别,然后各个,呃,为什么说为什么要用这个 code agent 调用? 然后我们来看啊,就比如说,呃,现在呢?我们用户呃,问了这个问题,就是说在这个三个国家里面,如果用美元来买这个手机的话,最便宜这个 code act one 这个型号的手机,那最便宜的话,呃,最便宜的话,它的这个价格是在哪个国家买就是最合适的。 你看啊,他 thinking 啊,这个,这个是 a 正 loop 里的内容啊,他就会会说,我,啊,我希望计算 the phone price in the usd, 用以美元的方式购买 phone, 在 each country, 在 每个国家 that find the most effective country。 就是 发现一个,呃, 最便宜的一个国家嘛,那他会做什么事呢?他先会调用这个 look 啊, look up rate 啊, look up rate 这个接口工具,嗯,先去计算,在,你看它传的参数是德国嘛,在德国的税率和汇率,那他算出来以后呢?接下来会把这个结果,然后接下来又会查,呃, look up for price 啊,德国,然后这个手机型号,查出这个手机型号的手机在德国的价格啊,这边也有也有算出来,算出来以后用 cover and tax 七百这个把它换成,把它换算成美元嘛,因为传入的参数还要利率和汇率。把这个德国的呃钱,然后换成美元来计算,换算成美元之后呢? 这里面还要省略,还要调用其他的步骤,包括加上运费啊,然后运费费的计算啊,一系列的,以后他会得到一个啊,如现在我买这个手机,然后这个手机呢?啊,如果运送到德国,并且转换成了啊美元以后的价格之后,你看他二轮又会去计算日本,对吧? 那以这个为例子的话,他会调用几次大模型呢?他,这,呃,嗯,他的 think, 他 这个我们,我们这一个就可以调用,呃,就可以理解成是一次模型调用吗?因为他得到了结果以后模型还需要调, 他会在这思考还是,嗯,是不是还需要调用其他的工具,然后会把这个值传到下来啊?这假如说就是一次模型的调用,这是一次模型的调用。我,你这是德国的。以这个为例子,假如说我这个德国一次,我需要跟大大模型交互,这是举个例子,比如说是六次,对吧?那我现在要计算三个国家的,那就是三六十八, 也相当于我要跟模型交互十八次。模型交互十八次以后才是把每一个国家买这个手机所需要的呃的钱算出来之后还需要再调用,比比较,还需要用大模型进行比较,可能就是要十八加一,就要十九次调用才能得到最终的结果。就是我在日本、印度和德国,我买这个手机 最便宜的价格,然后你看他可能最终计算出来哎的结果就是,呃,最低的是在日本买,哎,是啊,九百九百零四美元,九百零四刀,这个是这样计算。那如果我们像 a 阵路谱是啥? a 阵路谱相当于是我们让大模型产生一个函数,我们一个 python 函数, 我们直接用拍拍摄函数,把这些呃方法全部写在里面啊。你看,就比如说这要进行三次的调用,对吧?三次,三次,三个国家,那我们直接写个放循环,我们写个放循环以后直接做循环便利,那我们计算的过程就是计算这个最终的这个价格的过程,全部写在一个函数里面, 嗯,全部调用,全部写到这个函数里面,直接用放循环就行了。然后最终呢,我们把这个结果输出来,我们把这个结果输出来以后,然后 uh um for the country, the most effective, 然后你看它这个就是进行了。呃,直接直接,你看每次每个国家,它没有每次都去跟大模型交互,而是直接在代码里面用 for 循环来做这个计算也,咱们来来一行一行看, 你看这一步,这个函数直接就它直接就掉,这个函数分别算汇率啊和我转化了以后,嗯,给出一个国家 look up rate, 啊,啊,然后把 look up press press rate, 嗯,这个型这个手机型号,然后国家算出来,在当地的价格算出来,当地价格算出来以后, covered and texted local price text, 然后,嗯,换算成,呃,根据之前的这些这个值换算,换算成,换算成美元,就是当地手机价格换算成美元 shipping cost。 把啊,运费加上,把运费加上。呃,这个是算出运费,算出个运费就是运到,你看每次都是不同国家嘛,运到这个不同国家的运费,然后把运费加上, 把运费加上以后,嗯,算出最终的价格,那这就循环了三次或循环里循环了三次,然后再用 mini 函数算出最小值,最后呢?再把这个值给我们的,呃 l m, 然后让他把答案给 l i m l i m 就 直接给个答案,那这整套流程下来,你发现他只跟大元模型交互了一次, 他只交互了一次,而同样用解散方法,他交互了十九次,那他是交互了十九次那出现的,那我们就说他交互的越频繁,他就越消耗头壳 啊,月销月月消耗投款是一方面,就可能就是同样的一个问题,用抠的啊抠啊抠 a 的 这种方法,它更便宜,嗯,消耗勾投款就更少,但是用这种计算的方法,它就要消耗更多的投款,其次是以这种方法的它速,速度也更快,因为它这个 python 函数直接在本地就计算好了,然后而这每一步都要呃,都要从我们本地 传到大圆模型的服务器上面,然后我们大圆模型分析完,然后再传过来,要要来回来,回来回要十九次,这一次就结束了。所以我们今天讲的 small a 这框架的 code agent, 就是 说我们的这个框架会让我们大圆模型直接给出来这样的一个函数,这样一个函数他用这个函数直接就计算就可以了,不用在每一步都交给大模型处处理,这种计算结束以后直接把答案扔给我们的啊大圆模型。大圆模型整理以后,我以一个用户看起来比较舒服的方式直接反馈给我们的,用用户就好, 这个就是我们今天要讲的 code agent, 也就是说,呃, small agent 的 这个优势,我想大家这个应该就明白了吧。今天这是今天的一个呃,知识重点 code agent, 那 当然之后我们也会以代码的形式给大家看一下。 好,那接下来的话直接就来讲下项目吧。呃,因为其他的知识点我之前也说过,如果是讲概念的话呢, 呃一个是听起来记不住,然后大部分还是要通过代码来看的。那呃我们就直接来讲项目。我先给大家介绍一下我我这个项目框架。 项目框架我当前是做了个最小的 agent 的 一个最小的 agent 闭环吧,呃,最小的 agent 闭环里面有用到了今天讲的知识。嗯,那首先呢,我我因为个人的话,我是最近在,哎对在学习一些理财方面的知识啊,对这方面可能比较感兴趣,所以我想, 呃我以后是想做一个呃定投相关的一个助手,或者是投资相关的一个助手。那我们我今天只是做了一个比较小的一个壁环。那呃我先大概介绍一下这个项目,这个项目呢是,嗯,外层是个 harness 框架, 然后呃去,然后用户,这是用户去跟哈尼斯交互,哈尼斯自己会有一个工具库,然后呢这个工具库呢?它会去呃读取外部的文件,就是我比划我自己电脑上的文件能实现一个登山改查的一个效果, 这是实现一个增删改查的效果。是这样的。呃那当前呢我做了一个最小闭环,这个闭环呢就是它里面可能之后会有很多 agent, 可能这个 agent 是 用来打个比方吧,它可能是用来呃计算的,呃可能是用来观察呃类类,呃只是一个比方,可能是用来观察上市公司的财报, 然后这个可能是用来计算的,呃用来计算自己的本金收益的。啊,类似于这样的,那我当前是做了一个最小的呃 agent 闭环,嗯,也是一个斜死的状态。我当前的 agent 是 一个呃用来计算你能买多少股票的,嗯,呃,一个一个 agent, 那 这个 agent 呢?呃,它可以操作一个外部工具,这个外部工具呢 就是说,呃,它的作用是基于 用户的本金, 计算能买多少 多少股,还剩多少钱 这样的。那现在呢?这个兔子还是比较粗糙的啊,都是,而且有些硬编码都是写死的,嗯,它这个是。而还有一点是要以美元为计算, 以美元为计算单位。那在这里面呢,我们将讲将展示几个几个知识点,一个是刚讲的 agent lu, 呃, agent, 呃, code agent, 还一个之前我们讲的 to calling, 看一下真正的在框架里面开发是怎么实现的。如果这里 to calling 这个知识点忘的小伙伴可以看一下我之前的视频,然后还有就是 a 正 dope 哦,我相信通过这个项目呢,这个也是之前有讲过,我相信通过这个项目可以更直观的加深我们之前的记忆啊。跟之前我只讲了概念可能小很,肯定有很多小伙伴还是比较懵的。然后因为这个 small data 这个框架比较轻量级嘛,有很多分装的方法,我们通过这个代码的讲解就能让大家更直观的 看清楚。就是我们如果现在要开发一个自己的智能体,应该怎么开发,然后最小闭环是怎么样? 我们先来看一下今天的整个代码吧,然后刚说了这是一个呃定存啊,或者是关于投资的一个助手,那我们来看一下它大概是怎么样?当前还没做,还没做 ui 啊,只是,呃,还没有做前端 ui, 只是通过 c l i 来触发的一个, 呃,嗯,也是写死的,看我的需求写死在这里啊。假如,假如说我有七百二十美元,然后一美元可以兑换七块二的人民币,那这个兑换呢?未来可能是要接入一个实时的汇率计算工具,然后每股花三十美元,还要用多少股票,花费多少美元,还剩多少美元?大概是这样的,嗯, 我们先看一下, 那它这边是掉了 glm 的 四点七, flash 的 模型, 速度会有点慢。 ok, 我 们现在看。我们跑完了,我们跑完了,是他跑了两遍。两个 step, 两个 step 啊,这个 small agent 有 个好处啊,为什么说他学这个 agent 会比较方便呢?他特别直观,其实一个 step 就是 一个 agent。 禄普,我们之前讲过 agent 禄普的啊,三个 action, 三个 action 啊,第一个是 thinking 思考,第二个是 act 啊,第三个是 observation 判断,那这一个 step 就是 一个一套路谱的流程,它通过两步以后算出了结果啊。我们刚也讲过 code agent, 你 可以看出这个什么是 code agent? 这个就是 code agent, 这个是我们要求我们大元模型写出一个,写出一个。呃, 代码,用代码来计算啊,就不用每一步都交给模型去计算了,代码直接调用呃 purchase, 然后它直接执行这个代码, 清完以后会得到结果这个结果,然后我们把这个结果再发送给我们的大模型。大模型,然后再把它整理成你看,再把它整理成我们方便阅读的这种格式,最多买三股,花费九十美每。呃,花花,花费九十美元,还剩一百美元。啊,是这样的,这是我们的项目, 然后我们来看下项目结构和代码,看左侧的这个结构,我们只需要,呃,现在只需要看这一部分就行了。呃,这部分是单独的这个 a 键 b 环把它提出来的,那它包括几个点啊? 呃,第一个是我们的,呃,这个应该做过 patent 开发都知道,这是我们的虚拟环境,那环境里面是存放了 small agent 的 一些。呃。依赖,呃。 small agent 依赖包,然后 calculate 就是 我们写的工具函数。呃,当时你看它直接调用工具,就是一个工具嘛,里面就放的 purchase, 呃,就放的这个 a private purchase 这个工具,然后我们把它在外面再分装一个 tools, 让它变成我们 small data 能识别的工具类。那命函数呢?就保存着我们主要的运行。呃,整个 loop 的 流程都在这里面,然后我们的框架呢会去这个,我们的框架呢会去这个 tools 里面 去找我们的工具,然后调用工具,然后产生结果,然后返回回来。那整体的流程是这样的啊,这样就能很好的看出我们的这样的一个流程大概是怎么样的。那我们就一步一步一点点来带着大家分析一下,然后来学习一下。然后这里面呢也可以很直观的通过代码来看出 agent loop 到底是什么样,还有 toscoring。 我们先来看这个 calculator。 呃,我在做这个最小一阵的开发的时候,先写的就是 calculator, 它因为我们当前实现了一个功能,就是计算,那这个计算呢?它到底是,呃 一个怎么样的流程呢?我,我们很简单啊,我这就通过注注来给大家写一下,它主要就是我们,呃,我们传入本金, 对,它整个比较简单,其实就是我传入本金, 二、本金换算美元, 对本金换算成美元,这个也可以删掉。三、 美元除以股价等于最大可购买数,然后最后是最大可购买数再乘以股价,是总的花费,对吧?我们总花费,然后再用第五步本金减去总花费,就等于剩余金额,其实就实现了这样一个步骤。 那具体的这个流程我就不带大家看代码了,它主要是涉及到排查一些知识啊,我相信小伙伴这看一下也就能理解,实在不行我们现在问 ai 工具也都能看,我觉得现在 ai 时代啊, 最重要的是有一思路,最重要的一个思路啊,然后我们不用去抠这个具体细节怎么实现的,比如说啊, demo 这个方法呀,到底是什么意思?这你都可以问啊,这种实现方法你你都可以问,然后就好,所以这边我就不多讲,就是这个函数是实现了一个,呃, 这个方法实现了一个工具,那我们之后可能会写更多更复杂的方法,就比如说再接入一个,呃,实时计算按汇率的一个 api, 然后也是它可以调用的工具,那是这样的啊,这就是先提一嘴啊,我们这个工具类是写在这里, 接下来我们就看这个 tools 啊,这个 tools 方法就是我们在 kiki calculate, 你 看 kiki 这个方法增加一个壳,这里面就用到了 small agent 这个 tools, 这个 tools 就是 用来声明, 就是告诉我们框架哪个是它能调用的工具,然后这里面是一些描述,呃,你看它这又相当于是分装了一层给大家传的我们的总金额,呃呃我们 呃的汇率,然后我们的呃嗯每 price used, price used 每股的每股每股的价格是这样的, 那这里面呢?它这有一个,呃,这个就是说明,嗯告诉这个其实是给大元模型看的, 嗯,因为其实,哎呀怎么说呢? agent 其实跟 skill 我 我这么给大家讲吧, agent 和 skill 比,它就是我,呃呃是一个更复杂更呃更有系统性的一个 skill, 所以 它有一部分内容也是由嗯提示词驱动的,那这里面就要填提示词。 而且我在一开始做的时候我也有个疑问,就是必须得有提示词,呃,如果没有提示词或而且这个提示词必须得有一定格式,它要解释每个参数好解释要返回内容,如果没有提示词,没有这些注册的话,它会报错啊。具体就要看 small agent 里面的代码,我们可以看一下 small agent 里面的代码 就是这部分,你看这是它的这个具体实现,这里面,呃有这个代码,然后 get json 啊要其实,呃这个是最对工具的调用嘛。啊? skype 之前有讲过 tocc 那 集有讲过 skype 啊, 他这里面有 skin 吗?然后 skin 他 啊会获取我们的啊,刚 toast toast 里面写的那些啊描述,而且这些描述呢必须得存在啊。在这个代码里的这一部分,呃,你可以看到 这个就是获取我们的那个描述,如果没有我们这个描述,他甚至还会报错。而且为什么说要满足一定格式呢?因为他底下会用正则表达,是你看专门是去从里面嗯找这些,所以如果没有规定的内容的话,他也是会报错的。这个是 small legend 的 里面的一个,嗯, 怎么说呢,一个规定好的一个格式,不同的框架可能会有不一样的格式,这个需要在开发的时候注意一下啊。然后回到我们刚才的这个 two, 可以 看到啊,这个其实就是做了个分装,所以看起来就很简单。然后这是关于工具调用的这一部分啊,然后大家其实可以进到这个里面去看一下它的这个元代码,它元代码其实写的就很清楚, 你看它主要是这一步 to use json, 嗯, schema, 因为工具的调用是要通过一个 schema 的 嘛?之前的视频有讲过啊,这里面就有写,对,是这样的 啊。然后我们来看这个命函数,这个命函数实现几个功能?第一个是, 嗯,读写环境变量 o s, 嗯,获取那个咱们的 g r m 那 个模型的 key, 这是 open ai, open ai model 的 open i s d k, 呃,他会去,之前我在之前的视频中也讲过啊,他会以告诉他去连接的模型的名字,然后模型服务器地址啊,还有我们的 api k, 哎。嗯,下面这一步呢,是 code agent, 这个就是我们今天讲的 code agent 啊,他已经被分装好了,他实现了一个公,他实现了什么?我们点进去可以看一下 code agent, 这他是啊,你看这是 code code agent 代码, small agent 里面分装好代码,它里面有告诉你它每个参数是什么意思啊?对,对吧?然后这里的话呢,嗯,大家感兴趣可以看一下我们工具类,我们工具类就是我们之前讲的这个,对吧?我们把工具,我们把工具类,把啊 tools 里面定义的这个工具,我们把它放到我们命函数里面工具列表里面, 它执行的时候会调用这里,然后 model 模型就是我们的这个上面定义好的 instruction。 这是是一些说明,告诉他当前预算可以整,呃,购买多少金额。这些说明啊,有一个 最终回答,必须依赖工具,那这里的工具就是说这啊,这部分,这部分啊,这部分工具,嗯,这个工具它不能自己,它不能去自己计算。然后 max step 最大就是 agent loop, 最多 loop 三次,最多循环三次。嗯,这个 markdown 是 它, 这个就不给大家讲了,这个不细究了。嗯,可以看一下这个 agent code agent 里面有关于这个,呃,每部分的说明是什么?都写得非常详细 啊。这个就是我们去执行嘛,就通过 c l i, 就 相当于你在 u i 上给它输入问题,然后最终把答案打出来啊,这个就是这样,整体还是很简单的,这其实就是把一个最简单的 agent 给开发完了工具调用的一个状态,这是一个最简单的过程。那接下来呢?我,我觉得我,我可以带大家看一下,就是我们的这个 small agent, 它是有一些 prompt, 就是 有一些关键,呃,它专门有个 prompt 文件夹,我看一下在哪里啊?这个 small agent small site package live make a small agent。 呃,它专门有个 prompt, 它会把这些 prompt 都写在里面啊,嗯,里面有一些要求啊, 比如说,呃,你看它为什么是 python 驱动的 code agent 呢?就是为什么它产就是我们 l i m 写的都是 python 代码,因为它这里面有写呀, 就是在 thought 就是 agent loop 的 thought 里面就是 first, 先解释你的 reason towards a solution that 的 that 的 code are to build, but you should code in the simple。 python 用简单的 python 来实现,就是 agent loop 驱动,听起来好像很高在上啊,但其实很简单,它其实就是用 a prompt 驱动关键词驱动的, 他写的,呃,那个,呃,客户代码是这样的啊,那是,这是这一步,其实整体来看是不是都很简单?那我接下来主要是想通过这个 small agent 这个项目来给大家带大家看一下之前我们讲的知识点就是 agent loop, 它是一个怎么样实现的一个流程 啊?接下来我们来我来带大家通过那个 small agent 源码来看一下是怎么体现出 a 帧 loop 的。 我相信很多小伙伴在学看了我之前 a 帧 loop 的 课程以后都比较有点懵,但是我觉得其实大家啊,就想象成是一个循环就好了,不用想太复杂, 其实真正在 small agent 这个框架里,它也是这么实现的。首先我们来看一下,在 a 键点 py 这个文件里面,它有一个 round stream, round stream 里面体现了我们的这个 loop 是 怎么实现的? 我,我们可以看到,我们可以看到就是,呃,我们这里调用了 wrong 方法,对吧? agent wrong 方法,那这个 agent wrong 方法呢?是来自于这 code agent 这个对象,这个 agent 是 这个 code agent 对 象用 small agent 里面写的。我们点到这个 wrong 方法里面,我们去可以看一下,那我们这个 wrong 方法里面,它会调用一个呃函数来执行我们的 agent loop 啊,这些具体的我们就不一行一行看了,我们来看一下啊,它会调用一个叫做这个 runstream 的 啊 ifstream, 它会调用一个 runstream 方法,我们再点到 runstream 这里来看,然后你这里就可以体现出什么是 a 帧 loop, 它其实就是个循环,看到没? well, 就是 个 well 循环, 然后它有一个触发退出这个 loop 的 信号,叫做 return final answer, 如果,如果这个 return final answer 如果是 true 的 话,它就会退出。呃 agent loop。 还有一个就是我们刚给的那个呃 step number 大 于 max step 就是 我们在命令方法里面会给它一个 max step max step 就是 如果我们 agent loop 大 于三次以后,它就自动退出,对吧?然后这里就可以看出,很明显看出否循环,它其实就是 agent loop 的 实际体现。所以大家就知道 啊,我们任何框架的我们的 a 正 loop 其实都是用循环来实现的,然后我们那我们之前讲过 a 正 loop 里面有有三点,对吧? thought, active observe, observe, 那 这三点呢?都是在我们这个 while 循环里,就就这一层,就这一层 while 循环里面写的 来实现的,我们来具体看一下这呃呃,这三步是怎么是怎么做的啊?在这里啊,你看它这里面 一个一个 loop 又是一个循环,然后它这里面又一个 st, 呃, step stream stream, 那 这个一个 step 呢?就是三个三个三步,刚说的 agent loop 里面的三步,我们再点进去看这个嵌套啊,这个嵌套里面就,呃是 agent loop 的 具体实现,它有啊, thought active 和 offset version, 然后我们可以看到啊,是这个这个 step。 呃, step stream 里面第一步是 memory message, 就是 right memory to the message 这一步方法实现的就是把我们用户的问题,或者是上一轮,上一轮路谱里面它代码产生的内容,把它放到我们这个 memory message 这个方法里面, 然后我们再往下看啊,一六七七这里面啊,就是把上一轮的内容,如果上一轮没内容就是用户问题,因为这个之前也讲过啊, mod generate 是 什么意思?把它发给模型,把它整个发给模型,然后模型返返回的内容,我们存在啊,存在这个 chat message 里面。 呃,然后接下来呢?呃,我看一下啊,呃,接下来就是我们 agent loop 嘛,需要让 agent 去写代码,呃,不是这里啊,稍等一下。 哦,对,在这儿,因为我们 agent, 呃,我们 l i m, 因为根据我们 prompt 这些,呃,要求,还有我们问用户问的问题,它会返回来一个 python 代码嘛?刚也给大家看了 啊,然后呢?他我们通过这个方法把我们其中的代码存在这个 code active 里面,对吧?这个其实对应的就是,嗯, code active。 哦, code active 提出来以后呢,下一步就是 active, 就是 要执行嘛,执行我们的这个代码 code active, 你 看他就用这个方法去运行, 对应的就是我们之前跑的,你看他把我们这个工工具,这是这是工具函数嘛?那他 r m 写的就是这一部分,然后我们执行就要执行这个函数,然后会输出这个东西,对吧?这个东西也就输出来了,这个就是我们 a 正路谱里面的 active 这一步 啊,然后这一部分呢是做了一个处理。呃,我我其实不太懂这块代码是啥意思啊?这是因为它框架里面的我理解大概可能是啊,可能原来 对原来的信息做一个呃基本处理啊,可能不会,比如原来信息可能太长了,这塞不下它可能稍微做一些精简。这个我没有点进去看啊。这个感兴趣小伙伴可以看一下里面具体代码怎么实现,然后把它存在这里面,然后 offset version。 哎,你看这里是不是就体现了我们的 a 帧 loop 里面的 offset version, 然后它加了一些呃解释,然后把它存在我们的 memory step 里 啊,这个就是三步就结束了。那我们下回调用的时候啊,又会把,你看 memory step, 对 吧?我们又会把那个呃回到我们之前的那一步 啊,我们又在 memory step 里面六加,所以这就是 agent loop。 嗯,这里面就体现了 agent loop 的 一个知识点,所以你看这个 small agent 代码,它写得很清楚,它把这个 agent loop 分 装在我们的 step 呃, step stream 里面。 step stream 里面有三步,就是我们刚说的 syncing active 和 observation, 然后我们又这个啊 stream 又放在了我们这个 while 循环里面,这个循环就是外层的 look 是 怎么实现的?嗯,然后这里面有一个 return final 啊,这个 return final 大家可以看一下。是这样的,大家发现没,我们在执行我们的这个,嗯,我们这个 agent 代码的时候,它在 就是这个结束前都会调用一个函数叫 final answer, 你 看每次每次调用都都是包括这个,你看他,虽然可能里面参数格式会有一点差别啊,他他都会调用一个 final answer。 那 这个呢?是一个,呃,就是我们刚说的这个结束提示词,就是 l i m 认为我们已经有答案了,他就会触发这个。 呃,有两种出呃推出这个 a t 的 情况,一种是这个触发的,还有一种是超过线长度,超过长度这个大家可能都知道,就就不说了,我们看下这个 final answer 是 怎么触发过来的, 然后这这里面其实也没想到大家想的那么难,它也是用我们关键词触发的,你看到没?它为什么大模型知道我们结束的时候用 final answer? 因为它写了一个提示词, system prompt, system prompt, 我 在 agent 我 们的第一节视频里面有讲过什么是 system prompt, 对吧?然后,嗯,它这里面就写了, in the end of the you have to return the final answer using the fine using the final answer to。 就是 我们在呃大模型觉得已经结束的时候会调用这个 final answer, 然后那这个 final answer 呢?这个函数就触发了我们刚才说的这个,嗯,推出 a 段 look 结束的这种情况。 我们来看这个 final answer, 因为模型调用这个 final answer, 你 看他把这些内容传进去,我们刚说的他把这些内容传进去以后,他会报一个啊,这个烦。呃 l, 但这不是报错啊,这是报一个,大家可以理解成就相当于我现在获取到最终答案了,我要结束了这样的一个信号,那我们需要一个信号器来捕捉这个信号, 你看这个信号器就在这里啊,它捕捉到了这个信号,那它做了一个动作是什么?一个是把 its final answer 这个置为处,还一个是获得了,获取了它其中的内容。 its final answer, 你 看 its final e e 啊,对,获得了它这个返回的内容和我们这个 its final answer 这个标识, 那我们怎么给到外层呢?就是那个标识,你看它把标识传到这儿,传到这儿以后,呃,它,呃它就结束了嘛,相当于是在这暂停了。暂停以后呢,我们回到上面这个代码, 呃,我们往上看,往上看,它应该是有一个 is instance 的 这样的一个东西。 if called is a ottms photo, 嗯,等一下,稍等我,我们看,往上推,往上推,往上推。 uh step step, 这不是在 step 里面,它应该是在嗯, run 里面。 对,它在这个 run 里面,你看这个 run 里面,又有一步判断,是说这个判断,然后你看我们把它传到这来,传到这来了以后呢?因为, 呃这个,它就进入这个 ifif 的 这个语句里面, if 语句里面,它就会把这个 return final answer 置为 true, 那 return final answer 置为 true 了以后呢?嗯,它就会退出这个 agent loop, 那 我们这个循环就结束,相当于给出了答案,就是这个是我从它 small agent 它里面的底层代码给大家分析一下什么是 agent loop, 然后是它是怎么样结束这个 loop 的, 其实大家可以就这么理解啊。嗯,这么看其实有点复杂,如果大家不想深究的话,就这么理解。它专门有一个信号函数叫做 final answer, 当大圆模型来判断它已经得得到结果的时候,它会自动用嗯, code agent 这种调用方式产生一个要执行的代码叫 final answer。 final answer 它主要起到的位置就是把我们这个 return final 呃, answered 这个标识符置位置,位置位为置位为置位为处。 这啊这这这位为处,这位为处。以后呢他就不满足这个条件了,然后他就会跳出这个 while 循环,跳出就是跳出这个 look, 整体就是这样的,然后呢?就走下面的这个逻辑嘛, 嗯,然后会把,会把我们的最后会把我们的答案和我们的返回的内容返回到外层,然后输输出出去,那整体大概一个思路是这样的,那今天其实我我们讲的内容, 呃,其实也挺多的,大家可以理解一下,一个是 agent loop, 还一个是以从代码的角度来看一下我们之前讲到的两啊啊,之前讲到的两个啊, agent 的 概念,一个是 tocs calling 如何调用工具,还一个是 agent loop, 然后还一个之前说的那个刚刚说错了,之前讲了一个概念叫 cold agent small agent 这个框架,这个框架呢就是里面底层代码没有那么复杂,所以它比较能清晰地把这个过程展现出来。 那大家其实现在看了这么多啊,包括我们之前讲的课程,大家应该能感受有一个感受啊, a 阵其实并没有那我们想象的那么复杂,如果我们只从应用的角度来看的话,它其实就是我们 llm 调用外部工具。如何调用外部工具? 之前讲过,比如说用 rag 呀,用 mcp 呀呀这个解决了其他方法,还有或者是像我们今天一样直接就写死的一个啊, calculate 这种计算方法,对吧?那我们什么时候用 rag, 什么时候用 mcp, 或者什么时候直接用,我们这种方法是根据它不同的应用场景来判断的, 这些判断呢,其实我们不用太纠结,可以完全扔给 l l m 去来做这个呃大圆模型来做这个操作的,所以一个健壮的大脑是非常重要的,那我们其他的就是呃辅助来,其实那那 agent 就是 调用工具,然后去路谱,然后返回答案, 对吧?这就一个特别简单,然后又比较直观的一个 agent 的 这种形式。然后我今天视频就录到这,然后会讲 l a n x 和 long graph long chain。 然后呢其实我在讲这部分内容呢,也不断在哎给自己提升我的 a 证工程能力,然后我之后还会给大家分享一些关于找 ai application 相关工作的一些经历啊,然后也非常大家非常感谢大家今天观看我们今天的课程内容,就讲到这,谢谢大家。


呃,上一条申请复合的视频评论区和私信,很多人在问我面试怎么过的,还有面筋是什么?今天直接分享一下我所拥有的面试技巧,第一点不分公司,第二点更侧重于申请佛。 第一点就是像说书人一样去讲你的故事,要去主动的掌握面试节奏,别让你的故事去按照面试官的节奏去展开,别让他问什么你答什么,别让他去点评你的回答,那样你就被牵着走了。 你要把你的实习,你的项目当成一个故事去讲,要有背景,要有冲突,要有你的思考,要有你自己做出的选择和最终的结果。 呃,说书人为什么自信呢?因为他对自己的故事的框架,来龙去脉全部都了如指掌。还有吟游诗人走遍天下,讲同一个故事讲了千百遍,他怎么可能不自信呢?念书也是一样的,你的经历你自己最清楚,提前把故事打磨好, 念到张口就来。你坐在面试官面前才不会去慌。面试官一天面几十个人,他记不住每个人做了什么,他才记得住一个好故事。呃,第二点就是操盘手,这一点是申信服的次重点,但是我觉得道理是通用的。申信服的一面是深挖简历细节,看你对业务的理解深不深。 二面是压力面,我觉得有点压力面会反驳你,会打断你,看你慌不慌,看你乱不乱。我二面的时候说了十几秒就被打断了,因为我说客户经理或者说是销售,他本质是在翻译客户的需求,面试官直接说你说的不对,他举着个例子。 呃,中美谈判的时候,你觉得翻译官会对于这个谈判的结果负责吗?不会。所以我们要的并不是翻译官,我们要的是在谈判桌上去主导对方的结果,负责吗?不会。所以我们要的并不是挖掘自身问题,挖掘自身需求的人, 创造商机的人,而不是简单的翻译官去翻译商机。我们要的是能创造,能主导,能操盘的人。 呃,在业务上,能不能主动推着事情往前走,遇到问题自己想办法去解决,而不是等着别人安排。情绪上被打断,被质疑、被压力的时候,能不能自己稳住?能控制住自己的人,才能在客户面前稳住场。 呃,说句实话,除了维 d 技术是因为绩点或者说是学历背景被刷的,其他的所有公司只要能给我一面的机会,我就能走到二面,给我二面,我就能走到三面。不是我有多厉害,是我在面试的时候很少会被业务官被 hr 去带着走。关于另外,关于申信服,评论区有人发劝退,有人说压力大。 嗯,我觉得四个字,小马渡河吧。关于秋招,向前走,别回头。下一期我会讲线下面试的相关流程。

朋友们好啊,我还是去买了一台三星 s 二六二厂,倒不是说这个手机本身有多吸引我啊,而是我看到三星他现在上了那个 jamming 版的 ai 自动操作,就跟之前那个豆包手机是有点像了,就是你说一句话,然后 jamming 帮你模拟点击操作手机这个玩法, 然后我看英文区的科技博主全部都是高度评价,看到了智能手机的未来什么的,可以给大家看一下,这些基本上就是他们现在所有支持的玩法,其实也就这些东西吧,叫外卖啊,打车之类的, 反正该说不说呢,我们国内这几家厂商,其实但凡是做了这种 ai 模拟点击的,像耀子、华子他们的泛用性其实都已经比谷歌要强了。咱也不知道这群老外怎么就一副没见过世面的样子。 但今天呢,我们不是来具体的讨论这个 jammy 它能力怎么样?体验怎么样,主要呢,我是想聊一聊 g y agent 这件事情, 因为这个东西呢,之前一直都是第三方厂家在做,那现在 google 它现在是第一方啊,这个生态老大哥的位置,那他们第一方做出来的这个 g y agent 到底有什么区别?包括对这条路线呢? google 它的思路又是怎么样的?我们通过这个东西呢,应该还是可以看出一些线索的。 那我们还是先来看一下他的流程啊,我们先换取 jimmy 啊,然后让他帮我点一个巨无霸套餐,你看他这个默认他是后台执行的,但是你也可以这样点进来,然后看他是里面怎么操作,然后下面这行文字呢,就是他一步一步的这个思考的过程, 然后期间呢,如果是碰到了一些意外,他也是有一定的自主思考能力的。比如说我刚刚是让他帮我点一个巨无霸套餐,然后他第一次搜索呢,是没有搜到的, 然后他又退回去换了一个关键词,你看他把这个 meal 套餐这个字去掉,然后发现呢还是不行,还是找不到,然后就又退回去手动来找。你看他是先点了这个午餐啊,然后呢滑滑滑,哎,就在这个位置找到了, 那如果他碰到了一些他无法决策的事情啊,就比如说我要点什么 size, 然后我要喝什么饮料,那他还会退出来来问你,你看他这说你想要中份还是大份,然后你回答之后呢,他就又回去帮你继续操作, 然后到最后到付款这一步交给用户来接管。然后从实现的机制上呢,它跟我们之前所拆解的就是豆包手机那套逻辑是非常类似的, ai 操作这块屏幕呢,它也是一块虚拟屏幕,我们从 adb 的 设备信息也是可以看到这块虚拟屏幕的属性的。讲 ai 呢,它在后台操作这块虚拟屏幕,然后你呢可以继续用这个物理屏幕来干别的,这样双方就不会互相抢占焦点。 然后推理和操作这块呢,其实也是大差不差的啊,因为目前的这个 g i agent 其实不管是哪家都是没有办法直接在本地完成了,都是得送到云端上去推理,然后云端呢,再把操作的步骤下达到手机来执行,我们可以看一下它的日制, 可以看到呢 gmail, 它理解画面内容呢,主要手段依然是靠截图啊,但是除了图像信息之外呢,手机它还会向云端提供一些 辅助数据,就比如当前 ui 的 界面数这些文字性的语音内容。也就说 ai, 它除了直接看这个 app 的 界面之外呢,它还会额外收到一份说明书啊,上面写着说哪边是按钮,哪边是页面,然后哪些东西是可以交互的, 那这些信息呢,它会形成一个结构化的文本,来帮助 ai 更好地理解这个截图的内容。然后这些信息它被送到云端之后呢,云端推理完了,它会下发一个指令啊,也就这行 robin operation received with payload case, 这个 robin 是 它的这个内部代号,然后它说接收到了一个 payload, 但这个 payload 它里面这个指令到底是什么?这个日记里面这边是打码了啊。 然后除了指令之外呢,还可以看到云端它还同时下发了一个 narration, 那 narration 它对应的应该就是我们在屏幕上所看到的这句动作的描述, 然后最后手机就按照这个指令来执行操作。你看像这一步呢,它是一个滑动的命令,从这个坐标滑动到这个坐标,然后它这里面它还有一个防抖机制啊,就是它会判定一个 stability, 它会评估画面当前的稳定性。 这可能是在比较这一帧截图跟上一帧有没有区别,那如果区别很大呢?那可能就说明有些动画可能还没有播完,或者是页面还没有加载完毕,那他这边就会等待一会,然后等稳定之后呢,再继续操作。 所以你看,从读屏到推理到操作,中间可能会有一些实操上面的小区别,但是大的逻辑大家其实都是一样的。那 google 这次它最大的不同点在于什么地方呢?是在于它全线机制设计, 我们还是反编页一下这个 agent 自动操作这个 apk 啊,这个 apk 它包非常的大,好几百兆,然后我们是用 codex 来辅助我们分析它这个自动操作到底是怎么实现的。 首先今天一个最大的发现啊,就这个包呢,它带了一个我们之前在安卓上面从来没有看到的新权限,叫做 access computer control。 我在网上也搜了一圈啊,目前无论是 android 的 文档,还是谷歌任何的这个公开资料里面,都找不到任何关于这个权限的信息啊。也就是说现在拥有这个权限的可能就只有一个 app, 就是 谷歌自家的这个 google app。 那这个权限它是干什么用的呢?我们继续拆下去发现啊,它其实是谷歌在 ai 时代专门为 agent 打造的新权限。我们分析一下代码可以看到啊,在获取了这个权限之后呢, agent 它就可以打开一个 computer control session 这样一个绘画。 然后呢它可以干这么些事, get display size, 这个是获取屏幕的尺寸,还有 get screenshot, 这个是拿截图, 还有 get accessibility。 windows, 这个就是我们刚刚说的获取这个结构化的界面数。然后呢,它还可以打应用,可以模拟点击,模拟滑动,还可以输入文本,那这些基本上就是一个 gui agent 所需要的全部系统权限了。 我们知道之前的这个 g r agent, 它要在安卓手机上干活,它是要拿一系列的底层权限的,就比如说你如果要把应用内容给它投到虚拟屏幕上,那你可能要拿 readframe buffer 这个权限,那你如果要操作手机,你要注入这个输入事件,那你就要拿 event 这个权限。 而谷歌这个新的 access computer control 呢,它同样是一个非常底层的 internal 权限啊,也是只有 oem 厂商可以拿得到,第三方开发者还是拿不到的。那 google 为什么要做这个新权限呢?这就说明在谷歌的眼里啊, 他们认为 g y a 证这条路呢,不是一个短期的噱头,而是会持续存在,并且持续远近的。那与其让大家去拼接各种系统权限呢,不如由我官方来做一个统一的口子。所以这个权限呢,它并不是只给自家的界面来用的。 google, 它是希望其它的手机厂商也都通过 access computer control 这个官方认证的底层权限,来把各家的 g y agent 给收编到安卓体系里面来。这事情只有 google 能做啊,因为在安卓体系里面,只有 google 掌握了操作系统和系统级权限的解释权啊。 第三方 agent, 它可以把应用做得很聪明,然后手机厂商呢,它可以啊,各显神通去模改各种系统。但是只有 google 可以 在规则层把这件事情给写明白, 就自动化操作。这件事情在以往是存在 hack 的 争议的,但是现在一夜之间就有点像什么梁山好汉突然遭殃了,就变成了安卓系统的原生底层能力了。 在去年的安卓十六上面啊,谷歌是引入了一个新的接口,叫做 app functions, 那 用这个接口呢?开发者他可以把 app 的 某些能力呢, 以结构化的形式给它暴露出来,供系统来调用。注意,这个跟之前的 intents 那 套东西是完全不一样的 app functions, 它是专门面向 ai 用来给 ai 理解用的,你可以理解为是 mcp tools 啊,模型理解完用户的需求,然后按照你给定的这个 cm 给它填进去,然后给 a p p 来传餐。那如果我们按照低性原理,就是由开发者主动把能力写出来,暴露给 ai 调用, 那它的这个效率和它的准确性肯定是你比在 g u i 上面点点点要高得多的。但是 google 呢,他们自己一定也明白一个现实啊,就是不可能所有开发者都会乖乖听你的,把能力交出来给系统看啊。所以这个时候呢,就需要用 ctrl 啊,用这种 g u i agent 的 方式来兜底 啊。所以你别管这个, jimmy 现在的体验有多啦,就不管怎么说走到这一步呢, g y a 整这种东西啊,它就不再是之前民间邪修各显神通啊。安卓体系里面至少是有了一套由正规军亲自下场的,把规则和边界都捋顺的一套官方解法。 他就像是一个公版参考设计,未来成品可能未必长这样,但是一定多少都会带点他的影子。好了,感谢各位听我聊到这,我们下期再见。

小米十一 pro 手机作为小米手机的一元,同样也极具可玩性,拥有强悍的性能,不错的外观,正面采用了一块六点八亿英寸的四驱面挖孔全面屏, 比小米十一的屏幕稍微大了一点。性能上,小米十一 pro 采用的是骁龙八八八加 ufs 三点一加 lpdd 二五的组合,性能铁三角,这个就不用我多说了。当然 这部手机最大的升级还是在拍照上,全球首发 g n 二传感器,与有着安卓之光称号的小米十一 奥特同款主摄相机,目前手机行业最大的感光元器件。当然重要的是除了这些之外,小米手机正如上面我们说的有可玩性。为什么这么说呢?想必玩鸡老鸟们都是深有体会的。 最近小米十一 pro 手机用户问了我一个问题,他因为玩国外的一款游戏需要用到谷歌框架,对此我给了他两个思路,第一个比较其实不麻烦,就是将小米十一 pro 解锁毕业哦, 然后刷入 mexic 面具,接着使用面具模块功能,刷入拉姆乐园的谷歌框架模块,就可以达到使用谷歌框架的目的了。 除去这个之外,还有一个方法也很简单,那就是在 ram 乐园的小米十一 pro 畸形板块找到一个国际版的 ram, 刷入这个国际版的 ram, 就可以直接使用谷歌框架了。

三秒教大家获取谷歌相机最新下载教程,苹果和安卓都可以使用。教程很简单,下面我来告诉大家。首先我们点击视频右下角分享箭头,点击这个复制链接或分享链接, 复制成功后再打开夸克,他就会自动跳出一个文件,我们点击查看文件,进来之后把这个文件保存下来,再找到适合你机型的安装包下载就可以了。

oppo 手机能用谷歌套件吗?当然没问题啊,那目前的 oppo 手机都是自带谷歌框架的,如果要出镜使用的话,也是比较方便的啊。另外呢,它还有满血版的 ai。 最重要的是啊,作为折叠屏 oppo find n 六啊,今年把内屏的折痕做到了几乎平整,几乎看不见, 所以今年这个手机的销量呢,也是比较火爆的啊。下年五一,深圳的 oppo 专卖店呢,也算是忙爆了,因为有很多的香港同胞专程趁机过来啊,抢购这个手机。我们之前是跑到香港去买港版的 iphone, 那 现在呢,他们过来买国行的 oppo, 哎,也算是一种轮回了。

vivo oppo 便宜二手机,功能正常,支持刷谷歌新闻,支持外贸出口。

鸿蒙就是安卓,鸿蒙是自研系统,这两句话为什么总能吵起来?因为很多人讨论的根本不是同一代鸿蒙。那原声 android、 color os、 origin os、 miui, 还有澎湃 os, 鸿蒙和鸿蒙 next 到底是什么关系? 先从安卓这条主线说起。 android 是 一套由谷歌主导开发的操作系统,它有一个公开基础源代码的项目,叫 a o s p。 安卓开源项目,里面已经有系统框架、基础界面以及运行 app 所需要的基础能力, 手机厂商可以免费获取这些源码,按照开源许可修改适配自家的硬件,再加入自己的功能。 它提供的是做手机系统的基础,厂商还要继续开发,才能做成自家手机上的成品。那大家说的原声安卓是什么? 可以拿谷歌自家的 pixel 手机做参照,它的系统体验比较接近安卓默认的设计,同时加入谷歌商店等 gms 应用和服务,以及 pixel 自己的专属功能。所以 a o s p。 是 公开的系统基础上做出的成品。 而到了其他手机厂商手里,这套基础又会长出不同的样子。比如 oppo 的 color os、 vivo 的 origin os、 小 米的 miui 图标、桌面通知栏不一样,后台怎么管理、怎么省电,有哪些隐私功能,也可以各自开发。 它们有自己的名字和体验,但都沿着安卓体系继续定制,所以大家习惯把它们叫国产 u i, 实际做的事情却已经超过界面这一层。 那小米把 m i u i 换成澎湃 os, 是 不是就换掉安卓底座了?手机上的澎湃 os 仍然基于 a o s p, 同时加入小米自己的系统技术和设备协调能力, 这里要分清,自己开发了很多东西和有没有沿用开源底座是两件事,鸿蒙也要用这个思路看,但必须加上版本。 早期的鸿蒙手机系统使用过 a o s p。 代码,同时加入华为自己的系统能力,因此澎湃 os 和早期鸿蒙手机系统都有开源基础,加自家研发这层关系就不代表两套系统完全一样。而到了原生鸿蒙 next, 关键变化就深入到了核心架构,它采用自研鸿蒙内核和原生系统架构,走向独立的系统技术路线,内核负责管理处理器、内存这些核心资源安排硬件怎么工作。 所以同样叫鸿蒙,早期版本和 next 不 能只看名字就混在一起,最后把这些名字放回关系图。原生安卓看的是接近默认设计的安卓体验, color os、 origin os、 miui 以及手机上的澎湃 os 属于基于安卓体系定制的系统。早期鸿蒙手机系统使用过 a o s p。 代码,原生鸿蒙 next 则走向独立的核心系统架构。 看懂这张关系图再聊安卓国产自研,就不会把界面底座和核心架构混成一件事。这里是每日一学,关注我,少踩数码坑!

你知道没, oppo 手机出国上网有多方便吗?特别是小陈手动这款 oppo fine n 三 flap 其实都是内置 google 服务的,你只要前往设置在顶部搜索框搜索一下 google 就知道了。而且不仅是 google 服务, google play 应用商店其实也是自带的抖友出国需要的 google 套件,只需要在刚搜索的 google 服务中登录你的谷歌账号,就会更新谷歌套件,然后进入 google play 应用商店下载你需要的国外应用,而国外使用流量就更简单了。同样的,直接在设置顶部搜索官搜索国际上网就会出现全部的国家和地区, 这里信用卡都不用买哦,直接购买所在国的促进流量套餐就可以愉快的上网了。怎么样,你的手机促进上网有我的 overn n 三 flag, 小的里面简单吧,不过还要提前下载 google 服务吧。

本期聊一下 oppo 手机,简单安装新版谷歌相机,提升照片质量,增加成片风格。不废话,先说重点,使用已整理好的谷歌相机 app 版安装就两个步骤,一、 解压配置文件,将当 note 目录放入手机存除跟目录。二、选择一个自己喜欢的谷歌相机艾特版本安装即可。好了, 可以使用了,启动谷歌相机,加载已调好的配置文件开始拍照即可。注意,如果以前安装过艾特系列谷歌相机, 建议先卸载并手动清除 download 目录中对应配置缓存,以避免出现各种异常,水印和滤镜会导致拍摄处理时间变长。关闭后可提高成片速度,根据自己需求开关即可。以上安装在 oppok 十一手机测试通过,理论上也适合其他型号手机。下一期聊聊艾特各版本谷歌相机优缺点及特色功能,使用方法,不见不散!三、连加关注,免费领取相关资源!

这个没事,再拍一段跟大家学学。为啥前两天没拍抖音,从这五月一号到这两天一直没拍,就是因为啥四月三十号,五月一号早起手机没了, 手机木了电,那手机还是关上静音,去寻了一下,还是没寻着,最后把手机定位定定位定出,再按静,再按它静音, 这么的科技特别特别先进。我跟你说啊,这么我给大家说一下,手机没了,那你还是 vivo 的 还是 i 啊,还是苹果的,各样各样的,我就定位都能给你定住了。 声音他没声,声音,把你手机上设置一下,你手机上就就有声音了。 我这是差三度了,五个三度没啦,然后他定位不准,定位准些,手机就现着了。结果呢,五月一号后说 带着小家伙,带着我女儿,拿我女儿手机定的定位让我定到天光山,定到天光山了,放了两坨山给我,小家伙还是回来还是弄哭的。哎呀,手手手是手, 那到五月二号那平安晚上那失火了那感冒了手机。五月一号后边下雨了,手机是烂了, 开不开机了,拿到手机店修了一下晚上,后来没用上两小时又不行了, 幸亏把那记录一下给我,正好给我传到这手机上了。以后有啥不会的就问抖爆,抖爆的东西有啥不会的就问抖音,抖爆啥都能学,你学,你再学学 都可以,你不管是电器方面还是汽车方面还是各个方面,我给你学,有不会的就多多搜搜,大家多了解些知识。谁开始摸了一下我手机的经验,我又骗人打电话打他了。 主要是他是经验,大家没考虑定位,结果也能定位,我还是 vivo 型号 给你手机号一输结果手机没信号点,五一黑了又喊了又怕。人家手机号总也懂的知识太少了,只要知道一下谁开始定位 就早起就开始给我信,就应该他爹。我在流说还是他爹着嘞。

安卓手机如何安装骨骼相机?首先看看骨骼相机都有什么功能,比如自定义水印,比如这样这样这样也可以拍摄出莱卡按脚风格的照片,比如这样这样这样。当然了,最主要的还是照片拍的更有质感,比如这两张照片,左边是原相机,右边是骨骼相机,大家喜欢哪张?我个人更喜欢 右边。谷歌相机色彩更加浓厚,人物也更加立体。除了拍照之外,谷歌相机也解决了很多机型不支持四 k 六十帧录像的问题。所以谷歌相机怎么安装其实非常简单,第一步,安装下载好的 big 卡卡的谷歌相机。第二步,打开手机设置,搜索谷歌,打开谷歌机主服务,如果不打开此开关,谷歌相机会闪退。如果你的手机没有谷歌机主服务, 也可以使用购安装器一键安装。安装完成后,打开谷歌相机,点击左上角设置,点击更多设置,点击水印设置,选择莱卡,然后回到主界面,打开右上角莱卡风格和水印开关,然后随便拍张照片会发现大空。 但是谷歌相机其实还有更高阶的文法,我们下拉选择加载配置,选择我们提前下载好的日文大佬的配置文件,点击加载,然后再配合上百年摄影大佬的图标美化版谷歌相机。这个时候我们就会发现,除了莱卡风格 之外,又多了哈苏、杜氏等十一种照片风格。最后给大家看几张日文大佬拍摄的照片养养眼。是不是迫不及待想上车了?学会的兄弟姐妹记得评论区交作业。下期视频教你们小米手机如何安装堆叠后台,下期见!