粉丝44获赞214

这一次咱们来聊一聊我们程序当中常见的 api request。 好, 那之前呢,我们的程序可以读取这些文件当中的内容,作为它操作的数据, 实际上呢,我们将要了解的这个 api, 它也是为我们的程序提供数据的。好,这是它的一个用处。呃,那这三个字母呢?实际上是 application, programming、 interface 这三个单词的缩写,那么前两个单词呢?就是应用程序,第三个单词 interface 是 接口的意思。 接口,那就肯定是说把两端连接一起,所以呢,实际上说我们使用数据是一个程序,那么提供数据的这个 api, 实际上它就是另外一个程序啊, 所以呢,在这啊,所谓 api 接口,它就是另外一个程序,这个是一个整体啊。好,那在这呢,我还要再介绍一个术语,那就是我们的程序向 api 接口,也就是向另外一个程序 去要数据,这个动作被称之为请求,然后 a p i 接口这另一个程序把数据返回给。呃,我们的这个程序这个动作叫做响应啊,两个单词分别是 request, response。 啊, 那到目前为止这些呢,都是知识点啊,那我们再继续。呃,那它什么样的一个形式呢?我们现在看到,那它就是一个网址的这样一个形式,那其中前边这部分我们把它称之为域名,实际上它代表着某一个网站的服务器, 你说我这个 api 接口向哪一个网站服务器去请求啊?哎,就是前边这段内容,那我们刚才还说另外一个程序,现在我怎么又跳到说网站服务器呢? 实际上我们所谓的另外一个程序是给其他程序,给其他浏览器提供数据的,所以呢,就是给其他程序 提供数据,这个就作为一个服务,所以我们把这个程序叫做服务器,而且通常情况下我们是以一个网站的形式,所以我们把这个所谓 api 接口啊,另外这一个程序称之为服务器,或者说网站服务器啊,好,可能会有一些细微的差别,暂时我们这样去理解没有问题。 那剩下的部分呢?这一部分看似呢,其实有规律,比如说问号,比如说这个按的符,但是呢,这一部分其实是完全由我们服务器端的这个程序,也就是 api 接口程序它去自定义的,那我们在这可能是 y y y, 那 比如说呢,我可能会写一个 user 哎,表示我 可以给你返回呃用户相关的数据,那比如说你可以是 course, 那 我给你返回课程相关的数据啊。问号后边呢?比如说我现在写的是 sex 等于一,然后 and age 等于十八,那可能是说我想查询,或者说我想获取性别是呃男的年龄是十八的这个信息。 但实际上呢,具体的这个接口肯定有具体的一个规范啊,他会有一个接口文档,我们使用接口的话,那肯定是要呃去阅读这个接口文档的啊,然后我们才能根据那个文档的要求去填写这些请求的参数啊。所以在这呢,我们就没有必要去纠结他 来过来,那为了去了解这个 a p i 接口儿,我们在这儿呢,不自己去写啊,我们以这个 github a p i 来去认识 api 接口儿啊。好,那在这儿呢,我们首先要说一下什么是 github? 呃,实际上我们在实际工作中有很多的代码开发者会将自己的这个代码以代码仓库的形式保存到 github 这个网站啊,也就是说它是一个网站,然后很多程序员把自己的代码存储到这个网站上边去存储的一个单位,比如说他写两个项目,那就是两个代码仓库, 那这个代码仓库呢?叫 repository 啊,这么一个单词啊。好,那最好也能够记住,记不住也没关系啊,来,那我们再继续。实际上那你比如说,呃,我们的代码放到这个 github 上边去啊?那为什么要放这个上边去啊?因为,呃,方便我们 这个部署啊,就是放到这个服务器上去运行,这个我不去细说。然后呢,实际上我们如果它这个代码仓库被设置为公有公开的,那就是别人可以看到, 那我们可以看到什么信息呢?比如说他这个代码仓库的名称,以及他这个代码仓库里边保存的这个项目代码主要是干什么的?哎,这个描述信息。然后呢?这个仓库是谁创建的?所有者是谁啊?这个这个代码是属于谁的?然后以及我们要想看这个代码仓库,我们得通过一个浏览器的地址,那这个地址 啊又是什么?以及说那他存储的这个代码是用 python 写的还是用 java 写的啊?或者用 go 写的啊?这个我们也可以看到他的这个编程语言, 以及说呢,当他公开他的代码的时候,因为,呃所有人都能看到,那如果说觉得他写的这个代码对我有用啊,对其他人有用,那我表示赞赏,所以我就可以给他一个小星星啊,我在这加了一个 s 啊,那如果说这个仓库 它具有很多 star, 那 就是说有很多人来对它表示支持啊,给它一朵小红花的那种感觉啊,只不过在这是给它一个小星星,那就代表这个代码仓库很优秀。 哈,是这么个意思啊,好,那回来我们简单说了一下这个 github, 那 么,呃,我们要以 github 它提供的这个 api 接口,我们来去做练习,那我们现在看到的这一长串的 u r l 或者说这个网址,这个就是 a p i 啊,好,那在这呢,呃,我不打算给大家去细解释这个东西啊,因为等我们以后自己去写的时候,呃,才更好地去理解它。就是在这,我们没有必要去呃,刻意的去记它。 好,过来,那刚才那个地址呢,我们可以把它复制一下,直接放到浏览器地址栏这一回车。哎,那我们就可以拿到啊,一些数据信息,那我们现在看到的大部分的这个 json 格式的这个信息就都是 github 这个 api 给我返回的数据啊,一大堆啊。好,那我们继续。刚才呢,我们只是手动地在浏览器地址那直接把这个 api 直接放在那,回车啊,我们就得到数据了。那实际上呢,我们大多数情况下是通过代码的形式使用这个 api 接口啊,或者说向 api 接口发出请求的啊。 好,那接下来呢,我们就演示这个代码的形式啊,要使用代码去请求,我们必须安装这个 requests 模块,注意是 request 后边再加一个 s 啊,这是我们这个 python 一个模块。好,那安装它的命令是 pip install requests, 这样呢就安装成了, 待安装成之后呢,呃,我们就可以接着来写我们的代码了啊,那在这呢,我们首先创建一个文件,它就叫 python 下划线 repost r e p u s 那 没有写全啊,就是刚才那个 repository, 呃,那么一个单词仓库的意思,好,文件名是它,然后呢,我们就直接导入这个 requests 模块儿啊,这个单词它本身就是请求的意思嘛,那我们要想获取数据,当然是要请求啦啊,那接着 我们在这呢写了一个 url 地址,其实就是 a p i 这个接口请求地址,因为它太长了啊,所以在这呢先写第一行,然后第二行呢用加,等于把两个长的字母串拼到一起了啊,是这个意思 啊,如果说你英文比较好的话,我们可以看一下,就是 h t t b s 然后 a p i 点 github 点 com, 然后呢,这部分是域名,后边 search 表示我要查询。然后呢,再后边单词 repository, 那就是仓库,还是一个复数形式啊,然后第二行的这个问号 q q, 一 般来说代表的是 query 啊,是查询的意思,然后等号 language 是 语言啊,再冒号 python, 那 就意思是说我要查询这个 github 上边的仓库,并且仓库里边的这个程序代码是由 python 语言编写的,这就是查询条件了。 加号 sort s o r t 是 排序的意思,冒号 stars, 那 就是按照这个星星数来排序啊,再写一个加号 stars, 冒号大于一万,那就是说这个仓库啊,我要找的是, 呃,首先是 python 语言的呃,代码仓库,并且呢按这个 star 数来排序啊,而且我要找所有 star 数 大于一万的啊,要不然的话,这这个代码仓库会特别多啊,可能会上百万个仓库,而呃,这个它的 star 数大于一万的,这个就少很多了啊,总之呢,这就是一个网址,我们这样去理解它啊。好, 那接下来,哎,我们要写这么一个信息,从数据类型上来说,它是一个字典啊,就是 dick 啊,或者呃 dictionary 啊, 呃,也就是说它是有键值座的,我特意指在这个冒号这个位置啊,那它的 key, 它的键是 accept, 不 管它什么意思啊,虽然它是什么接受的意思。后边呢,是说明啊,它要接收什么样类型的这个数据,我们也不管它啊,就 大致好像它意思是说啊,我要接收版本第三个版本的 jason 格式的这个数据啊,我们就这样去理解就行了啊,总之这是一个字典,实际上它是一个附加信息 headers 啊。好,那接下来这行代码比较关键,我们可以看到 request 点儿 get 啊,那么我们就通过这个 request 这个模块调用它的 get 方法。呃,为什么是 get 呢?其实 get 不 就是获取的意思吗?啊,所以在这是 get, 当然,呃,如果说随着我们深入学习, 也会有其他的这个动词啊,比如说 post, 比如说呃 put, 比如说 delete 啊, page 一 些啊,呃,当然我们在这儿呢,主要的呃,还是 get 和 post 的 比较多。在这儿我们就先认识这个点儿 get 这个方法啊,好,那就是说我用这个模块的 get 方法, 尝试去请求数据,获取数据,向哪儿去请求?把 url 地址作为第一个参数放在这儿了,那这个 url 参数呢?其实呢,说明了说我要向 github 那 个网站去请求数据,然后有一些请求的条件也在这个里边儿啊。这个, 呃,代码的语言是 python, 而且按照它的这个星星数去排序,要求星星数必须大于一万。哎,这个条件也有了啊,但是呢,后边第二个参数 hash 啊,叫请求的头部信息,其实呢就是一些附加的信息,那这个附加信息呢?就是跟这个,呃, api 接口,或者说这个服务器说,呃,我告诉你前面,我告诉你我要什么样的数据,然后呢?在这我还要补充说明,哎,你给我返回的这个数据啊,应该是 jason 格式啊,我才能够处理 好啊,那这个呢,就是一个完整的一个请求了,然后这这个 r 就是 请求之后返回的这个结果,它是响应对象, 首先它是一个对象啊,响应这个单词,那对应的是有请求才有响应嘛?请求 request, 响应 response, 这个是响应,就是我们拿到服务器给我们返回的这个信息了,这个数据了,它本身是一个对象啊。 好,那对象呢?它有一个属性,我们可以打印一下,叫状态码啊,我在这写的是 r 点 status 下划线 code, 这个叫响应状态码,通常情况下就是二百,二百就意味着我请求成功了。哎,我们就这样去理解它啊。 好,呃,那我们先不去看,然后接着往下走,我们说 r 是 一个对象,然后呢? r 啊,它有还有一个属性是 txt, 这个 txt 是 我们真正的想要查询的,想要获取的那个数据。哎,在这个里边,它是一个 jason 字母串,哎,它是 jason 格式,它是字母串,那么我们等号右边调用 r 点 jason, 这个方法是把这个 jason 字母串 转化成字典的形式啊,我们转化成字典的形式等号。左边 response 就是 响应的意思啊,下划线 ticked 啊,表明它是一个字典啊。 好,那我们再继续,我们把真正想要的那个信息拿到了,它是一个字典了啊,好,那在这儿呢。哎,我们先打印一下这个字典,那我们打印看它的结构上来说都有哪些 key。 哎,所以在这儿呢,呃,通过这个 response 下划线 ticked, 点 keys 啊,来获取它。这个键,我们打印一下。好,那在这呢,我们执行这个文件。前边呢,我们打印了一个响应状态码,我说了,一般情况下就是二百啊,二百就表示成功。那如果是四零四 啊,就说明你那个 url 地址写错了,就没找到啊。四零四是没找到的意思,多数情况下是因为你那个 a p i 地址写错了啊。好,那接着我们刚才打这个,说这个字典里边所有的 key, 第一层只有三个,第一个是 total count 啊, total 总数, count 的是计数。哎,总之呢,就是总数的意思啊。好,后边这个单词,呃,其实我们不知道也没有关系啊。这几个单词不知道没有关系,因为不同的接口肯定返回不同的数据啊,这个没必要去记死,只是说这个接口。哦,有这么一个 key, 那 当然,这个 key 呢?呃,前边 i n 是 取反的意思啊,就是反过来不怎么着,然后 complete 是 完成,那么 in complete 是 没有完成 啊,后边这个 results 是 结果的意思,那意思就是说我这个这次请求这个结果,呃,完没完是不是全部的这个结果啊?因为比如说你请求的多,他可能是分次给你的。 好,好,然后第三个 items。 好, 一般来说我们写接口的时候, item 就是 某一项啊,项目,那它加个 s 肯定就意思是说它里边还有一大坨数据,它本身还是一个列表啊,这个是我们真正要获取数据的,所有的核心的都在这个 items 在 这儿了。 啊,那这三项呢?哎,我们可以打印一下啊,比如说,那我再接着在这我直接打印了一个总的仓库数,那我用这个字典访问字典的那个 key 是 方括号里边,呃,用它这个字母串什么 total 下划线 count, 哎,我们就可以得到一个总的仓库数,然后呢,是否是全部啊?那 它如果是处的话,应该是不是全部啊?那不是全部在这呢?给它 not 一下,取个反啊,这个呢? 哎,怎,怎怎么解释呢?举个反就是意思。这个,呃,本来是,是不是不全呀?这么个意思,然后加个 not 呢?就是不是 全的呀?哈哈,有点绕啊,但是这个没关系,也不是太重要。好,总之呢,他反映一下,就说,那你这次查询结果是不是完整的,是不是全部的 这么这么一个真的不重要啊。好,然后再接下来。因为我刚才说了,呃,我们这个响应字典里边,它核心的数据在 items 这,如果我直接打印它的话,数据特别多,所以在这我们只是简单的看一下它到底有多少个,哎,所以呢,我用 l、 e、 n 这个函数把它包裹起来,就求一下它的长度啊。 好,那再继续我们看一下,那在这呢,我们打印出来,哎,根据这个字典的这个键,这个 key 我 们得到啊,总仓库数九百一十三个, 符合条件的啊,那这回是返回了全部的这个内容吗?啊?处啊,全部啊啊,但是呢我们 atms 这,呃有有多少个啊?实际上呢是这个三十个。好在这这个说实话我解释不好这个啊,按理说它处的话应该是九百一十三啊,它这个数据逻辑怎么去理解它? 呃,我没太搞懂,但是呢这个不重要,就是我们就主要知道说啊,接口是一个 url 地址,然后呢我们可以拿到它返回的这个数据啊,因为我写的接口怎么规定这个数据,别人写的接口怎么规定的数据?这个我们没有必要说每一个都去去 死到这个东西啊,我们知道感性上说接口是这么个意思,他给我返回数据,我通过这个 key 拿到相应的数据啊,就可以了。 好,然后呢我们再继续再继续呢,我们看看每一项啊,你刚才不是说有三十项吗?我把每一项拿出来看一下怎么去拿的。哎,你注意啊,我在这还是用这个响应字典 response 下划线摹制,然后呢返回号 items, 因为它有一个 key, 本身 items 就是 一个列表,它里边存了好多个仓库的信息,所以因为它是一个列表,那我在这加一个返回号零,就是拿第一个元素 啊,第一个仓库的信息,然后呢就给我们这个 response r e p u s 下回键 add 啊啊,一个简写形式,那我看一下每一个仓库它有有多少个 key 啊,有多少项啊,所以我在这呢, 呃,用 l e n 再看一下啊,那在这呢,我们可以看到哦,每个仓库有八十二个 key 啊,记记信息项啊信息项,那比如说这个仓库的名称,这个仓库的描述,仓库的所有者,创建时间,修改时间等等等等啊,有八十二个 key 啊,是,是这个样子啊,当然我们肯定,呃,不是说全要它,那我们对哪些感兴趣我们就要哪些呗。啊,那在这我们简单说一下,比如说它这个里边有仓库的名称,用的是啊 r e p u s 这个单个库的啊字典啊,然后方括号内幕,那就拿到了这个名称, 然后呢,我们还可以通过这个 owner, 那 这个 owner 呢?是所有者的意思,但是这个所有者肯定还是一个,呃,一个字典的一个姓氏啊,一个这个 owner, 比如说他的头像啊,他的登录名称啊,啊,他的邮箱啊等等等等,所以在这儿呢, owner 下边再加一个方括号, owner 本身就是一个字典,然后它的 log in 啊,这儿呢是它登录的那个账号名称哎,是是这么个意思啊,好,然后这个仓库有多少人给了小星星啊,是这个 key 啊,这个这个键, 这个呢,我是完全从书上摘抄下来的啊。呃,那这个这个单词我不会念,前面是 s t a r 星星的意思哈,后边 com 的是统计,但是加了一个 g a z e r s 我 就不知道了哈,总之它表示的是啊,这个仓库有多少人给了小星星, 然后接下来我要想看这个仓库,你得给我一个 url 地址啊,一个网址啊,好,那就在这个单个库字典里边啊,它那个 key 是 html 下划线 url 啊,这样呢,就拿到这个仓库的地址 啊,然后呢,这个仓库什么时候创建的,也是在这个字典里边啊?我们现在所有看到这都是一个单个库的信息,就是一个字典啊,好, 然后它这个字典里边的 key created, 下划线 at 啊,那就是创建时间啊,这个呢,其实我们看多了,这些单词应该是能够记记下来啊,然后这个呢? update 啊,下划线 at, 呃,这个是更新时间,你说我不知道啊,我没记下来,那是因为你才学多长时间啊, 对吧?你后边儿写项目的时候就这些单词就太常见了啊。呃,一些描述信息叫 description 啊, 好,也是这个字典里边了,那我们呢,可以打印看一下。哎,我们看啊,那从这到这啊,它的名称叫 public a b s 所有者啊,那它这个账号也叫 public a b s 啊,然后它的星星数, 呃,四十三万星星数,也就是说有四十三万,个人觉得它这个项目不错哈,给他点了星星啊,相当于给他点了赞,然后仓库地址,你看仓库地址就是一个。 呃,网址嘛,对吧?好,然后创建时间,更新时间,描述信息,哎,这一堆内容啊,好,那回来,实际上呢?呃,这是一个库的信息,那么如果说我们想把这个接口的数据,刚才不是查看它有三十个库呢吗?符合条件呢?哎,那我们可以 foring 去便利一下啊, 那 foring 的 时候我们是用这个 response 下回键 tick, 这是响应的信息字典,然后所有的信息在 items 里边儿啊,那每一个 就是一个这个单个?这个库代码库的字典叫 r e p u s 啊,简写啊,实际就是 repository 啊, 下划线 dick 啊,就是这个,然后下边我再逐个的去打印这个库的信息就可以了。好的,这个打印的结果我就没有给大家去准备啊,这个和无非是把刚才那第一个仓库的信息,然后其他的信息,这不就是一个模板的形式吗?就都显示一下,所以这个就没有必要去看了。 来,这个是我们通过 github api 接口,然后看了一下它返回的数据是什么样子的啊,可以拿到这些信息, 然后我们来第二个文件,我们第二个文件,呃,就是在原文呃,复制一下,然后呢改一下名字,后边加了一个 with you v i s u a l 啊,这这么一个文件啊,这个文件里边我们要拿到数据再给它画个图来,那前边呢?这两行首先导入 requests 模块,然后我们还导入了 plu 点儿 express 这么一个子模块儿啊,把它重命名为起个别名儿 p x, 我 们准备要画画儿哈。好,那接下来还是刚才那个 a b i 地址, a b i 请求地址啊,啊, 然后呢?这个还是一样的附加信息,头部信息啊, headers 啊,头部信息,然后呢,我们一样的是 requests 点 get, 我 要去获取数据哦,然后传的参数 url, 我 向哪儿去请求数据以及查询条件是什么,然后 headers 里边儿是一些附加信息, 在这儿我们只是有了这个附加信息,只是说要求你给我返回什么格式的,实际上,呃,还有一些时候,我们这个 header 里边会加一个叫做呃 令牌的东西啊,就是你有这个令牌你才能够请求数据,我才给你数据,你没有令牌,对不起,我不给你数据啊,还会,那也是常常见的信息啊。好,那紧接着呢,我们得到了这个 r r 响应对象,响应对象,把响应对象调用一下 json, 把真正的数据转化为我们 python 当中的字典形式 啊,然后再继续,这个时候呢,我们拿到了整体的数据,我们应该整理数据才画画啊,所以整理数据我们在这准备了啊,三个空格列表,第一个啊, r e p u s, 也就是 代码仓库的,这后边写的是 links 啊,实际是要保存这个仓库的名称,只不过我希望这个名称呢,能够一点击这个名称进行一个跳转,所以同时它又是一个超链接的形式啊,所以我们在这是给它起的名字叫 links 啊,这是第一个啊,主,其实里边保存的主要保存的是仓库的名称。 然后第二个,我们要收集的信息是这个仓库的星星数啊,都有多少人点赞了?第三个,呃,我们要收集一个信息,就是当我们画这个图,鼠标移上去的时候,一些提示信息,哎,我们就要这三类信息啊,所以是三个列表,然后我们就逐个地去便利响应字典里边的这个 items 啊。然后呢,那就是在这儿 e p o s 下行键,这个是每个仓库啊, 然后我们每个仓库是一个字典,把每个仓库里边的 name 拿出来,把每个仓库里边的呃 url 地址、网址拿出来。好,这两个拿出来干嘛?第三行代码用上边这两个数据啊, 你看在这啊,我用了它的名称,用了它的 url 地址,把它拼接成了一个特殊的这么一个字母串,以 小于号 a 开始啊,后边以 a 大 于号结束。这个实际上叫 html 代码啊,就是网页代码呃,它在网页上显示出来就是一个超链接形式,我们看到的那个名字是 r 下划线 name, 当我们点击这个名字的时候,会跳转到 r 下划线 u r l 这个地址去啊,这是它大体的意思啊。当然,这样拼接成一个字母串之后,我们由 r 下划线 link 来保存啊,就保存了这么一个特殊的字母串啊,然后接下来把这个仓库当中的星星数啊拿到, 再接下来把仓库当中的这个所有者的名称拿到,接下来这两个信息,我也给它拼接成一个特殊的字母串, 一个字母串 r 下划线 o owner 就是 这个仓库的所有者。然后后边这个监控号 b r 斜线大于号,这个实际上是网页里边的回车换行啊,出现这个标记啊,那它前后的内容会出现在两行,所以前边 owner 是 在一行, 然后后边那个 r e s r 下划线呃, description d e s c 在 列第二行啊,是这么个意思啊啊,总之呢,它呢就是拼接成这 r 下划线 harv 啊, 实际上上边儿这七行代码儿,我们主要的是要这三行啊,其他那两行是为了拼接成它的啊,更准确地说,我们就要拼接出这三个变量来,第一个是 link, r 下角线 link 里边儿包含着它的名称以及它的地址。第二个它的 stars, 它的星星数。第三个 r 下角线 hover, 那 就是鼠标放到这个图形上边的时候,它显示了这个信息,然后我们把这三个变量保存到或者说 append 追加到这三个列表里边去,那我们其实后边我们画图肯定是也以这三个列表为基础啊。好, 那画图呢?我们在这呢,首先,哎,先,呃,想这么一个标题啊, github 上边 star 数最多的 python 项目啊,因为我们查询条件里边 api 那 个地址里边有查询条件,我查的就是, 呃, python 项目,而且让它按这个 star 数排序了啊。接下来那横坐标,纵坐标 x 轴,外轴那个标签显示的文字分别是什么啊? x 轴是 repository, 那 就是准备显示一个一个的仓库名称 y 轴 stars, 那 就是说每一个仓库到底有多少个 star 啊? 那在这呢,我们用的是 p x 点 bar, 它的意思是说,呃,画那个条形图啊,或者说叫柱状图, 然后 x 轴 x 轴,我们在这儿给的是啊, r e p u s repose, 下回见 links, 我 说了 links, 本身它是一个超链接,它里边主要显示的内容是仓库的名称,也就是说在 x 轴会显示仓库的名称,但是呢,这个名称我可以用鼠标点击啊, 然后外轴,那它就是这个仓库的这个 star 数啊,到底有多少人点了赞啊,那这个外轴如果其实呢,就是它这个条形图的那个高度啊,你的这个点赞数高,你这条形条形图,这个条就高,是这么个意思。接下来是标题标签,然后这个 啊, hover 下角键 name 啊,等于 hover 下角键 text, 那 就是,呃,每一个条形我鼠标移上去的时候相应的提示信息,这个这个比较简单啊,好,再往下,再往下呢,这个我们整体来说一下啊,呃,这个呢,你知道能设置就可以了,也不需要记住, 我们现在很多代码不需要记住啊,你只需要知道有它,你想起来啊,这可以设置这个,可以设置那个,然后具体怎么代码问 ai 就 可以了啊,在这呢,那就是设置标题的字号, 设置 x 轴那个标签, y 轴那个标签的字号啊,这个代码就这个啊,然后下边呢,这个是设置,我们这个不是条形图吗?啊?或者说要柱状图,这个柱它的颜色是什么啊?第一个参数设设置颜色,第二个是设置这个柱的,呃,透明度 啊,我们之前可以用阿尔法,实际上它在这还有一个单词叫 o b a c i t y 啊,也是表示这个透明度的意思啊,零点六, 也就是说它也有点半透明的意思。最后一行那就是显示出来就可以了啊,那在这呢,我们执行一下,执行一下呢,就会打开浏览器看到这样的这个图了啊,我们可以看到 x 轴是每一个仓库的名称,然后呢,每一个仓库的星星数多,这个条就多啊, 以及我把树标放上去的时候会有相应的这个提示信息啊,那主要是这个作,呃,作者,然后这个描述信息,仓库数以及 star 数啊这些信息啊。好, 那接下来我们就小结一下,小结一下呢,那这节视频呢,我主要是说,首先明确 api 的 用处是什么?用处就是让我们的程序可以获取数据,处理数据。那紧接着呢,我们在这又说了术语两个,一个是请求,一个是响应,以及它们相应的这个单词 request report 啊, 然后再接着那这个 api 它的形式其实呢,就是一个网址的形式啊,我没有具体地去说,因为具体这个 api 的 形式,呃,我们后边有可能会去 学习框架什么的,自己去写这个 api 接口程序,那个时候再说啊。好,然后呢,紧接着我们又手动地去尝试一下,把这个 api 地址复制下来,扔到浏览器地址当中去,然后呢,浏览器也给我们显示出来它响应的这个数据。 不是所有的接口都可以啊,呃,因为,呃,有的接口是允许你 get, 有 的接口是允许你 post 的, 这个不一样,只能是说 get 的 时候可以。 然后,呃,我们又写了两个代码文件,第一个代码文件叫 python, 下行线 repost, 点 p y 在 这个文件当中,呃,我们是获取数据,然后打印了一下,看看这个数据里边到底有什么信息,主要就是了解这个它的接口返回数据的这个结构啊,它是这样一个嵌套结构啊, 当然我们核心的代码肯定是用 requests 这个模块点儿 get 啊,去请求得到的啊。然后呢,我们第二个代码文件叫 python request, 嗯,下划线 with you, 点儿 p y 这个文件里边儿呢,我们是获取数据,也是通过 requests 点儿 get 去获取的,然后整理出来我们想要的数据,把它画了一个图儿啊,这是我们干的事儿啊。好,除了以上的内容,然后在这儿呢,我还有一个补充啊。第七 就是我们的接口还存在一个请求权限和请求频率的问题啊,当然我们这个 github api 接口啊,我们这个练习没有,但大多数实际工作场景的 api 接口都存在这两个内容啊,请求权限和请求频率。 那请求权限,通常情况下是我们首先先登录啊,不管你以什么方式登录啊,你登录之后呢,会得到一个令牌,然后当你得到这个令牌之后,你需要向这个服务器的 api 接口请求的时候,你要带着这个令牌 啊,那服务器那个 api 接口一看,哎,你有这个令牌,令牌也是真的。好,那就把数据给你,是这么个意思啊,好,而且呢,呃,在这这个令牌通常也是 token 啊,这么一个单词,它和我们大模型里边说稍 token 那 个单词是一模一样的,就可以理解为这个 token 是 一个单词,两个意思啊。好,这个是请求权限上边,而我们实际会牵扯到一个令牌的问题啊,然后请求频率,那请求频率呢?通常情况下是说,嗯, 你不能说在一秒之内你,你请求了很多次,这样的服务器也忙,忙不过来啊,所以可能会要求你每个小时或每天最多请求多少次。会有这样的一个限制。你比如说我们现在呃,一些,呃, ai 大 模型的这个请求,尤其是免费的这 请求,他那也叫 api key 吗?那可能就会对你限制一下,比如说一个小时只能请求六十次啊,一天只能请求多少多少次啊, 当然还会有其他的这个限制啊。好,那主要来说请求的频率,请求的权限。好,以上就是我这节视频所分享的全部内容,因为透彻,所以简单,我是讲师井水。呃,这节视频完了呢,我们就已经把这本书的三百三十七页已经完成了。 如果说这个视频你有什么疑问啊,欢迎在评论区给我留言啊,当然我其中有一些表达,如果不准确,你也欢迎啊,可以在评论区留言,咱们讨论啊。那让我们下个视频再见。

今天来分享一下游戏人物制作方法,如果我们已经有人物模板的话,就可以直接喂给 ai, 让他给我们生成想要的人物。如果我们没用模板,可以使用 frame running 给我们提供的模板,这里是有很多种模板的, 每一个都可以选择, 今天就使用深层大杂烩的这个来演示一下,我们选择这个横板键式, 然后只需要我们给他提供我们想要的人物图片,就可以生成不同的角色了,这些都是可以直接生成的。我们下载一个想要的人物,然后回到 freemoreng 工具箱, 选择一键处理,点击常规处理,然后上传我们刚刚保存的图片,点击起用抠图,这样我们的人物背景就去掉了。点击应用并预览, 然后下载图片,回到首页,选择 roman pro 功能,依旧使用零散切图功能,然后上传刚刚保存的图片, 点击自动识别,这样我们的人物就自动框选出来了,然后下载零散 cd 并解压出来, 这样我们就得到了分割好的人物动作素材, 然后告诉 ai 文件的位置,以及不同的动画为多少帧到多少帧,因为 ai 是 不知道这些图片对应着什么动画的,所以我们得告诉他,然后我们打开游戏看看效果, 因为攻击动画不是很丰富,所以手感还是有点欠缺。好了,本期视频到这里就结束了,感谢大家观看。

打算做一个二十一期的纯小白零基础 ai 入门教程,希望我们不再为 ai 焦虑而使用 ai 做点事。 整个系列打算呢,会分成三个部分,第一部分基础篇,带你理解 api、 token、 scale 这些我们经常听到的概念。第二部分,应用篇,带你去使用 cloud code code 这些 ai 工具。 第三部分是实战篇,我们一起从零开始用 ai, 真正做出并上线一个简单的带鱼民的网站。希望大家多多点赞、收藏、关注,让我们有更大动力把这个系列做完。今天是基础篇第一期,什么是 api? 什么是 api k, 我想用 deepsea 的 官方文档加实际操作,带你真正看懂这两个概念。先做一个最简单的比喻啊, api 你 可以把它理解成一扇门,门后面是 ai 真正的能力,比如生成代码或者图片,但这扇门不是谁都能直接打开,你必须按照它规定的格式递上一组钥匙, 而 api k 就是 其中最主要的那把主钥匙,如果钥匙不对门就不会打开,也不会返回。结果现在我打开 deepsea 官方文档,这里有一段官方给的调用对话, api 势力,很多人第一次看到这里已经晕了,感觉像黑客呆毛。但其实你可以把它理解成按照规定的格式去敲门。 比如这里这个地址其实就是 deepsea 的 api 大 门地址,你把内容按照它要求的格式发过去,它就会把 ai 的 回答返回给你。 接下来我们简单主行看一下 curl, 意思是发起一次网络请求,你可以理解成开始敲门,然后这行 意思是我会按照 jason 格式说话。 jason, 你 可以简单理解成电脑之间交流的一种固定的说话方式,就像这扇 a p i 大 门,只认这种格式的钥匙。 接下来这行,这里就是我们经常听到的 api k, 它本质上就是打开 deepsafe api 大 门的主钥匙, api 大 门看到这把钥匙才会确认你有权限来找我的 ai 办事。怎么获得这个 api k 呢?很简单,在 deepsafe 官网点击创建, 创建好后及时复制,然后充值几块钱做实验就可以。而其他这些参数,比如 modal messages, 其实都像其他固定格式的小钥匙, 只有大家一起组合正确,这扇门才会真正打开。其中 model 就是 我们常常说的 deepsea 又更新了什么什么模型,这里是 deepsea v 四 pro。 然后这两行,第一行的角色是系统,内容是系统给 ai 的 设定, 你是一个乐于助人的助手,你可以把它理解成隐藏人设或者后台提示词。第二行的角色是用户,这里才是真正最关键的内容,这里的 其实就是你真正说的话,也就是说你在网页里输入 hello, 本质上网页最终也是把这句话发送给了 deepsea 的 api, 只不过网页帮你做好了 ui 界面输入框,所以你会觉得我是在网页里和 ai 聊天。但实际上真正回答你的一直都是后面的 api。 现在我不用网页,直接在 mac 的 终端里手动调用 deepsea api 终端,你可以简单理解为直接和电脑底层说话的窗口,我们填入了自己 api k 的 那段代码,然后把 content 内容变为中文粘贴进去,然后回车, 你会发现 deepsea 真的 回复我了,而且返回了一大串数据,但其实这里真正重要的还是这一句,也就是说网页聊天其实和 api 调用本质上没有区别, 分别指是网页帮你把这些 js 数据自动整理好了。所以很多 ai 产品的最底层的本质其实都是一个界面加一个 api 调用,真正厉害的其实是后面的模型能力,而 api 就是 你和 ai 之间的连接方式。这也是为什么 我们现在使用很多第三方 ai 工具时,比如用 cc、 switch 这样的工具来回切换不同大模型,经常都需要填写 api k, 因为本质上你只是让这个软件拿着你的钥匙去帮你敲开 api 大 门。最后总结, api 是 门,门后面是 ai 真正的能力打开要固定格式的一组钥匙,而 api k 就是 其中最主要的那把主钥匙。好啦,如果你有什么想法和问题,欢迎在评论区留言哦!

二零二六研究生 macbook 最佳使用指南第三期它来了,上半部分讲本地或者服务器下大模型与 agent 智能体的开发和岁化部署,主要做介绍, 探讨包含以下内容,目的,最大问题解决方式,网站和客户端选择,模型和 agent 的 选择流程,技术站和一些开发项目。而下半部分讲 api 调用,大模型辅助开发,分为大模型开发,辅助工具和 agent。 那 我们先看上半部分。第一个目的主要是为专业资料、论文课件数据做成一个专属的私人模型, 拥有专属的 agent, 能够接入本地软件脚本,仿真文档库,做个人工作流的自动化。最重要的就是像我这样 faker 般呢,转码入门大模型应用开发,为后面找实习做项目准备,和多 agent 对 话与协助,提高效率。第二个最大问题是什么呢? 当然是表现太拉了,好比刚出生一样,远不如 a p r 调用商业大模型,它好比成年人好。那怎么解决呢?第一个搭建 r g 个人知识库,方便大模型去调用,就是包含以下的向量数据库,多路照回, 有这几个向量查找,就是图查找,关键词查找以及重排序。第二个有 function calling, 就是 函数调用问题, 下面第三个就这个 q 可以 叫 laura 微调,下面提示词就是 prompt 工程, 下面加入强化学习算法进行优化。下面我们来看网站和扣单选择,这个 hugging face 非常重要,那么它有一个开源项目 be code, 还有各种的 code, 这个 l l m, 然后成员开发的话就用这个欧拉玛,用户使用的话就是这个 l m studio。 那 下面讲模型和 agent 的 选择。先来看模型选择,那本地的话,像我是 m 五 pro 二十四 g, 推荐 m l x 格式,因为有专门优化,更快更省内,存有两个小模型跟中等模型, 小模型呢就是指一百五十亿模型参数以内的,那么纯文本的就是这个前文三,它不带 v l, 然后杠八 b, 加上巴比特的量化,比斯比特要好点,占用八点七二 g, 那 多模态的最新的三点五杠九 b 有 这个 p a l 更好, 它是四比特的一个旋转量化,是由 z lab 制作,精度啊,几乎不掉。下面是强推理正六版,它呢是用 cloud 四点六 opus 当老师进行指导。下面是多摩菜,正六版是 opus poetic v l m 当老师来指导。接下来是中等模型,就是一百五十亿到七百亿之间,纯文本的是千万三杠十四 b, 多模块的是前门三点五杠二十七 b, 下面是强推理增六版,这有两个版本,都是用 cloud 四点六 opus 让老师来指导它。下面是大模型,是大于七百亿的,因为太大了我无法使用,所以下面就来到了服务器部分, 一定要记得是 g g u f 格式的模型。如果你是第一种情况,那推荐的是拉玛杠三点三杠七十 b hermes 或者 hermes 杠四杠七十 b, 千问三点五,杠三十五 b 杠 a 三 b, 记得是 f p 八。 如果是第二种情况的话,推荐千问三点五杠一百二十二 b, 杠 a 十 b, 记得选择这样一个东西。如果你是第三种情况,就是选择这样一个格式。 如果你是这样的一个服务器,那么推荐的是千问三点五杠四百九十七 b 杠 a 十七 b 选择这样一个格式。 好,下面来到流程部分,一共分为六个, r a g 流程, agent 流程、 multi agent 协助全流程、 function calling 运行全流程, agent skills 运行全流程, agent memory 机器系统全流程。那先看 r a g 流程,首先用户提出问题,接着应用接受请求,再 query 理解 改写,再向量化查询,再向量解锁召回后续文档,再重排过滤结果,再拼接上下文构造 prompt, 再打磨型,结合问题运行接口内容生成答案,最后输出,再看 agent 流程,提出问题后, agent 接受请求, 再进行历史对话记忆的解剖,大模型意图识别与任务拆解,生成执行计划。 agent 接收执行计划,判断是否需要调用 skills。 接着路由的匹配 skill skill 读取上下文与能力配置组织调用策略与参数草案,大模型补全具体调用参数。 agent 通过 skill 发起调用请求, msp 工具发现与选择 mcp 调用具体工具, api 工具执行具体任务。 mcp 接收工具执行结果, skill 解析教验格式化结果。接着 agent 整合 skill 结果 与上下文打磨型生成最终回答 agent 就 向用户返回结果。下面来看多智能体协助全流程。首先用户提出任务管理, agent 接收请求后,识别目标约束与成功标准, 把任务进行拆解,制定写作计划与依赖关系。接着他分配此任务给研究 agent 与执行 agent。 好, 下一步就是 r a g。 接着提炼关键信息与证据,基于计划执行计算写作或代码任务,按需调用工具 或者 api 或者数据库返回执行结果管理。 agent 呢?那就汇总各 agent 的 中间输出,检查事实性、逻辑性与格式,给出修改意见与风险提示。如果触发了 补充研究或重做部分步骤的话,就节带修正结果,接着整合最终方案并生成答案。好,最后三个呢,我们简单过一下啊,就不说了,大家看一看。这是第一个,这是 agent skills 运行的全流程, 这是 agent memory 记忆系统的全流程。接下来到技术栈部分,首先是模块化编排框架 long chain, 跟着的是官方文档网站跟视频的网站。 下面是数据框架用的 lama index, 它专为二 a g 诞生,在某些策略上比 longchain 更好用。下面是它的官方文档,下面项链库有 crma 和 qqrent, 当然有这个 milverse, milverse 是 阿里字节等大厂常用的企业级分布式项链库,它适合的是海量的数据。 当然下面两个呢,针对的是本地开发的,一个是用 rust 编写,性能极高,这个呢是轻量级。接下来是文档解析与结构化切块儿,一个是 lama pass 这样一个解析 api。 下面是 un structured, 它是工业级的非结构化数据的 e t l 工具。下面是 d s pi 自动的 prompt 优化框架。接着是 r e g flow, 由字节跳动开源提供全流程的格式化工具链。下面是 graph r a g 由微软开源引入知识图谱来解决全集推理问题。 接下来是 regas 和 trulance, 用来评测 r a g 的 核心指标。接下来推荐几个记忆框架,一个是 mem 零, 是目前最火的 agent 的 记忆层实现,下面是它专为大模型应用构建的快速可扩展的长期记忆服务。下面是 long man, 是 由 long chain 官方出的记忆模块儿提取工具。下面来到主流的实战框架。 第一个是 long graph, 它基于图和状态机编排,对数据流的控制的极度严谨。 接下来是 crew ai, 基于角色扮演的这个多智能体框架。下面 auto gen, 一个用于创建多媒体 ai 应用的框架。接下来是 open ai 的 swarm, 是 open ai 官方开源的超前量级多智能体实验框架。下面是 matter gpt, 是国内顶尖的多媒体框架,用来模拟软件公司的标准作业流程。接下来是让 agent 教护士训练,让 agent 在 真实的模拟环境中去试错,有这个 web arena os world, 用来模拟真实网页操作系统的评测与训练环境。第二个 trl 是 hugen face 官方的强化学习库。下面常见的微调框架是有拉玛 factory 提供零代码个性化的 web ui 界面。 昂,它更厉害,显存呢,降低了百分之七十,速度提升了两倍的一个微调框架。接下来是企业级高品发推理引擎,两个,一个是 v l l m, 是 当前工业界的绝对主流。下面是 s g long 针对结构化输出和复杂 prompt 友好的推理引擎。下面格式化 long chain 开发平台是 define, 如果当 bot 开发应用用 coos。 下面是两个纯自动化工具 zappier 跟 n 八 n, zappier 是 在线用,无法本地化部署,而 n 八 n 是 可以本地化部署的。 接下来后端的 web 框架是 fast api。 最后一个是工程化基建组件,有三个, docker 就 叫做 larry 吧,它基于 rabbit mq, 接下来是一些开源项目,模型训练用 mini mind 从零到一训小模型。 下面 rag 实战有 long chain chat chat, 它是国内的最火的基于本地知识库的大模型问答项目。而下面两个是 private gpt 和 quiver。 而 agent 的 实战呢,有 auto gpt, open minus learn, cloud code chat 第一 v open interpreter, 当然还有综合的有大模型 universe 和大模型 action。 在 视频最后呢,我们谈一谈 api 调用大模型进行辅助开发工作。大模型选择的是 deepsea v 四 pro, 开发辅助工具是 cloud code 和 codex。 那 agent 我 推荐两个,一个是 id, 它是命令行的清亮代码 agent, 第二个是 one, 是 i d e 级全功能的 agent。 好, 以上就是本期的全部内容了,我们最后一期讲 b 装应用插件和字体推荐,拜拜。

呃,这是一个自己做的一个基于 api 渠道,本地可以编辑图片生成的工具。因为我们像 gpt 里面就二,它是只能在官网上是用生成的图片,只有一 k 或者二 k, 最多二 k 买的。 然后像这个本地用 api 是 可以生成到四 k 的 功能的话,像跟正常的 gpt 都差不多。 然后也可以批量,像一个要求批量生成多张图片,这是我网上随便找的素材,然后要求然后再批量上去,他就可以三张一起操作。然后像这个生成的图片呢,可以将它重新生成了,或者是设为参考,点参考,他会直接变到 点参考,直接编到左边这边过来,然后复制这一个参数,就是他之前的一些参数要求,也可以再复制过来。那其他一些就是啊,一些表面上的功能,然后也可以全选以及批量操作。 功能的话大概就是这样子的,然后他生成的话会比较慢,因为我找的中文商,他生成图片会稍微慢一点,具体的话就看自己找的中文商那些的功能,功能都是以那个 gpt 的 为基础搭建的, 像后面还会制作一个详情页模式的一个功能啊,像这个详情页工作台,这个啊,像是我们产品的个技术信息啊,填进去,然后这一些给它设定一下, ok 就 好了,这些经验不用太多太高,那个像素, 其他这个素材再调整一下,然后就让它生成规则,因为这个我还没做好。 ok, 像这个它就每一瓶啊,首屏视觉啊,每一瓶呢,都会有这个 相应的细节,然后我们也可以点进去编辑啊,这一瓶它是要求视觉效果,这些我们可以自己做操作 编辑,然后再叫它生成本屏或者是选择,然后生成选中的这几瓶。大概流程是这样子,因为这一个详细的功能的话我是还没测试好,这个还得做细节优化。 整体的大概工具的功能就是这样子的,基于 api 然后在本地编辑的一个工具。啊,这是刚刚那些啊上传好的效果我就不一一点开了。大概的效果你看刚的一些基础信息操作,然后包括 他自己生成的这个规划,然后按规划下来每一屏的安排过去所生成的图片,其实效果已经是非常理想的,然后细节的话就看后期自己按需求调整一下就可以了。

今天教大家不花猫力币聊天的方法,首先点开 api 设置, 点模型提供方归机流动 确定,点这个使用自有 api, 然后点这个粉字获取喵钥 匙,点密钥, 这边可以新建密钥,新建多少个都是没问题的,但是密钥不要让其他人知道, 注意这是重点。然后可以自己命名一下,不命名也是可以的。然后点三条杠,回到模型广场,点这个漏斗,只看免费的, 这边有很多免费的这个模型,随便点一个,然后点这个复制,复制好了之后来到这边复制上去就是 ok 的。 这边说如果你密钥输上去了,模型无法,模型打不上去的话,这个密钥就要去重新生成,然后再放进去,模型就可以复制上去了。 ok, 宝宝们再见。

ok, 那 我们开始讲设计模式的外观模式,外观模式的意图其实也很简单,是为了让我们子系统中有一组 接口,能提供一个统一的高层接口,让我们的子系统更加容易使用。不要让别人知道你子系统里面的实现,或者让别人在你的子系统里面去 乱七八糟的调用 a p i 或者电容接口。那我们在接入式系统中,子系统通常是模块组合或者系统服务,比如说我们的传感器,我们的显示或者我们的通信,那系统服务就是我们的电源 airsoft 或者文件系统。 那比如说我们操作电源源的时候,我们不能就是说在阿蒙的那个片子里面,不能让对象去调各种电源液的电压啊什么的,让都让他手机调,你就直接给出一些传统的,比如说什么性能模式啊,低功耗模式啊,正常模式,对吧?那我们 整个外观模式的作用就是把复杂的定位流程收敛为简单的 api, 让别人能很简单的知道你这个模块是怎么用的,你这个系统怎么操作。 重点不是让我们的能力扩展啊,新增,而是为我们现在已有的子系统建立更容易被上层使用的边界。比如说别人就知道设一个开合关,那你就不要让他知道后面的东西,对吧? 好,那我们讲一下它的一个动机,如果没有,嗯,就是外观模式的时候,上层就必须面对多个模块的 和电路顺序的问题嘛,比如说这里一个问题,场景温控系统,如果我们不用外观模式的话,那温度我们是不要从传感器那里先读, 读了传感器,然后我们又要把它显示出来,对不对?然后再用这个 arduino, 然后去设置那个 风扇,然后就通信,再把数据发出来。那上层就必须知道我们所有的一个模块必须掌握我们的电用顺序,这个顺序你但凡改一下它就 不对啊,对吧?而且我很严重难以维护。问题不在于模块太多,而在于调用者被迫知道太多的情况。那我们的上层逻辑就这些,嗯, ssr 的 那个值,然后显示的值,然后 嗯设置的一些风扇的东西,然后通信发送的东西,他都必须知道,这样对于上层来说是不是太麻烦了? 那引入我们的一个外观模式之后,那复杂的流程就会被折叠成一个入口,那就是比如说这个 theirmost on circle, 那 我们只引入这一个接口,这里面的接口就会完成读取传感器更新显示,然后控制我们的风扇并发送数据,这样的话接口就会从原来的四个改成了一个,由多变少,复杂度也会, 嗯,从分散变得集中嘛。因为其实嗯上层的电热毯只需要知道你这个温控的逻辑在调用就行了,它就直接调这一个接口就行了。上层逻辑只管这个,它不管你后面的什么 sensor, display 或者风扇,然后以及通信之类的。 那其实外观模式也有一定的适用性啊,就是我们的子系统复杂啊,他比如说 power 管理的时候又始终外设中断,然后还可能有网络协议栈啊之类的,他太复杂了。那我们就需要把接口抽象成一个 标准的可控的一个范围吧,那我们比如说电用顺序也是固定的,常见的就是触触啊,采集处理输出,那我们就不需要让电用者知道,我们直接把 那个顺序给他固定好,然后同时也希望结偶。上层 ui 和业务其实并不关层,关心底层的一个细节,他只想调用简单的 api 完成对应的功能即可,剩下的如果出了问题,他肯定找你底层的,对吧? 然后外观模式也适合分层架构,适合作为应用层和驱动层中间件之间的边界层,因为他可以把接口进行收敛。 那在分层架构中,外观模式推荐放置的位置也非常的明显,他肯定是在应用之下,然后在我们的驱动之上或者中间件之上,他需要把上层想做什么和第一层具体的底层怎么做给隔离开。 那我们的一个外观模式的一个结构,其实也就是刚刚我们在 图里面提到的这一个,对吧?那比如说我们的那个 subsystems 系统的 a, 子系统的 b c, 然后最终有我们的外观模式统一成统一的接口调给 client, 也就是应用层进行调用。最终我们其实外观参与的一些 东西有哪些嘛?它第一个要提供我们统一的接口,比如说我们 parsnip device star, 它是一个封装的很精简的接口,然后封装子系统的调用和管理调用的顺序, 其实它其中还有一些子系统的参与,它需要实现我们具体的功能。不知道一个外观模式的存在, 那比如说它用 client 调用的时候,其实它不知道有传感器,也不知道显示,不知道通信,不知道具体的设备,那我们的客户端就只管调用外观模式,不操作它的子系统,因为它有外观模式统一提供给我们,我们不要去动它, 不然的话那我们的应用就会非常的复杂,上层逻辑就不要参与底层的调度细节,这是我们在应用开发分层过程中非常重要的一个逻辑或者原则。 那外光模式的如何协做的?第一个是控制流程,比如说我们的这里的 client, 它会调那个 round circle 对 不对?然后这下面它会,嗯外光模式依次会去做这些功能, 所以 client 它只管这儿这儿的一个调用,它不管后面的,后面呢有它的那个 subsystems 系统去做, 所以我们的嵌式执行链就会变成这样,内函数里面的应用掉它的 round circle, 然后到下面 round circle 里面自动去掉它的一个子系统的执行过程。第二呢方向就变成了 client 加外观,再到 subsystem, 所以外观模式其实它也每次我们也会讲嘛,每个设计模式有好处也有坏处,好处肯定是它的一个。嗯, client 就是 我们的应用开发人员,不依赖于它的子系统,也可以简化我们的接口,替代多个底层调用, 提高我们顶层的一个口维护性。修改的时候只要我们保持终端那个接口不变,那是不会影响我们上层的应用,然后明确我们的一个 软件分层提供清晰的价格边界,那肯定缺点,他有可能变成上帝类,上帝类就是啥都能干,啥都干,是不是?这个也要注意,就像微软的那种超级接口一样,一个函数几 几百个参数,对吧?这种也不行,然后最后灵活性也会降低。高级用户可能就是比如说有些要实现一些特效功能,他可能需要绕过我们的一个外观模式去直接操作 subsystems。 好,最后我们讲一讲在切入式里面,嗯,外观模设计模式的话,更关注于顶层的接口层级和模块边界,它不是管我们的语法形式的,它只是给我们一个 界线吧,让我们分清楚就是在哪一层去做什么样的东西。所以外观模式可以是 c 函数模块接口或者是一个函数,嗯,结构底加轴针都行, 他只需要暴露上层真正需要的操作,隐藏固定的电路顺序,哪怕他就传一个全集变量给你,他也可以认为是一个外观模式的设计模式的一个体现。所以不要把所有的系统能力啊,就是 也不要把所有的系统能力都塞一个巨大的入口,你都不变成内函数了吗?你把所有的东西全塞在塞在一个函数里面,那,那还要内函数干嘛,对吧? 好,最后我们讲一讲,其实外观模式它可以结合,因为这外观模式它是一个结构性的设计模式吗?它不是之前的创建型的,它可以结合之前创建型的一个模式,比如说,嗯,那个车厢工厂创建子系统,然后单立的话管理全区, 然后状态模式的话处理内部的状态切换。最后我们说一下那个外观模式的分层,哎,其实刚刚也讲过,就外观模式是介于应用和中间件还有底层驱动之间的一个薄层吧。 哦,这还有啊,外观模式在嵌入式中的一个典型落点,往往是把常见的流程打包成统一的入口。 嗯,这里举了一个电源管理的例子,比如说 sleep, wake up, 其实它操作的东西大家做过低功耗的都应该知道,其实,呃,单片机做低功耗,或者说按摩芯片做低功耗,它其实不是这么简单的,虽然你只掉了个 sleep 和 wake up 的 唤醒, 对吧?它其实后面包含了一大层的东西,那比如说我们的 lcd 驱动啊,玩过屏幕的也知道,没,没有那么简单,不是直接输出一个东西,它就能画的来,清屏就清屏,出出话就出话。其实它内部掉的东西也挺多的呀,比如说 spi, gpl、 dmi, 如果是 spi 驱动的屏幕就会包含这个, 那我们的设备控制层一样的就是做一个简单的抽象吧。最后总结一下,外观模式呢,不是某种接口的形式,是一种系统边界的设计方式,它约束的是我们不同层级之间的一个, 嗯,整体的一个设计趋势吧,它在我们的应用中间键和驱动之间, 最核心的本质就是要隐藏复杂的子系统,提供一个统一的入口,降低我们的应用复杂度。那典型的弱点就是电源管理啊, l c d 这种复杂的外设文件系统、设备控制, 最终外观模式。其实一句话总结就是让上层人觉得这个系统更好用,更简单。

你的 openclaw 和 hermes 还在花钱调用大模型的 a p i 吗?今天我教你用零成本本地部署奥拉玛,在你的电脑上直接跑大模型,还能无缝对接 openclaw 和 hermes, 实现免费玩 ai 智能题工具。首先介绍一下欧拉玛,什么是欧拉玛呢?欧拉玛是目前最简单的本地模型工具,在 windows、 mac 和 linux 上都支持,几分钟就能装好,八 g 内存就能跑。当然了,还是建议最少要安装十六 g 内存, 这样体验起来更加流畅。如果有英伟达的显卡,还能够使用 g p u 加速。了解完了欧拉玛是什么之后,我们来看一下欧拉玛如何安装。首先我们要访问欧拉玛的官网欧拉玛点 com, 它的首页是 一个羊驼抱着一个龙虾,下面的英文是 power open claw with ollama, 中文的意思就是使用 ollama 为龙虾赋能,从这一点我们就能看出它是全面的拥抱和支持 open claw 了。这也是为什么今天我要在 open claw 的 专栏里专门做一期 ollama 视频的原因。 废话不多说了,首先要下载欧拉玛,点击右上角的 download, 这里我们可以看到它有 mac os、 linux, windows 的 下载方式自动已经给我们定位到了 windows, 点击这个黑色的 download for windows 按钮, 就会弹出下载框,点击另存为保存,有点大,两个 g, 这个网速非常感人,所以我建议大家用迅雷来下载。 我们已经下载完了欧拉玛的这个安装包,下面我们就开始安装欧拉玛的安装有一个问题,就是它没有让你选择 需要安装的文件夹这个选项,它默认是安装到我们的 c 盘 user 底下的,如果你想安装到指定的文件夹,那你需要换一种方式,我们先把这个安装过程停止。 我们找到拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇拇 斜杠 d i r 等于这里写上我们的安装地址,也就是记盘的欧拉玛文件夹。打回车就跳出来安装界面,我们点击安装,大家可以看这里已经安装到记盘的欧拉玛这个文件夹下面。 进了这个界面,就代表着欧拉玛已经成功安装并且启动了。安装好了欧拉玛,我们再来看如何下载模型。在欧拉玛的网站上点击这个 models, 就 可以进入模型列表,这里都是可以使用欧拉玛直接下载使用的模型。我们来找一下 谷歌的 jam 四,这个是最近小模型中比较好的,可以通过这一句欧拉玛 ram 四来进行下载。 输入奥拉玛 ram 捷摩斯回车运行。安装完了,我们来跟他说一句话试试。我们在这里输入一个,你好打个回车。 好的,扎马四已经回复了我们,虽然有点慢,但那是我电脑性能的问题。大家可以看到现在已经成功地让大模型在我们的电脑上运行起来了。再下一步我们就来看如何把欧拉玛接入到 open cloud 中。 ctrl d, 我 们来退出欧拉玛,然后输入 openclaw config, 进入 openclaw 的 设置,这个我们直接选择本地运行,这个我们选择第二个 model, 打回车进入,然后我们要在这里找欧拉玛, 这个就是欧拉玛提示我们欧拉玛不可用。我们来重新编辑一下 openclaw 的 配置文件。 openclaw 的 jason, 这个就是 openclaw 的 配置文件。我们来找一下 allow 这一项,这里就是扩展的 allow 这一项,我们要在这里添加上 alama。 我 们来运行 openclaw config 来设置 openclaw 的 大模型。 选择默认的本地模式,这个我们选择第二项 model, 就是 设置模型,这个是选择模型的提供商,我们来找一下 alama, 这个是询问我们选择云服务还是本地模式。我们选择最后一个本地模式,这个是欧拉玛默认的 b、 c、 l。 回车,这个是有哪些可用的模型?只有一个,我们按空格选中回车确认 提示,我们已经把模型信息写入了配置文件,我们退出。我们回到 open 可乐,这里是我们 问了 openclaw 一 句你使用的什么模型,他们回,他回答,我使用的是谷歌的伽马四。我们这次的 olamata 下载安装以及安装模型,以及如何在 openclaw 中使用 olamata 模型。到这里就结束了,关注,我每次 都给大家带来一个 ai 的 新知识,感谢大家的观看,再见。

今天我们会完成桌面板打开之后的第一次设置,那么我们就开始吧。第一次打开 codex 桌面板,我们要先把界面分成三块来看,左侧是项目和一些插件的入口,中间就是我们的一个对话框了,最下面有一个设置面 板管理。对,那么我们新手进来要先处理几件事情,第一个工作模式,第二个选举指令,第三个批准策略,第四个沙盒,第五个插件入口。 ok, 那 我们先进到设置里面看, 在设置里面左侧有十二个分类,包括常规、外观配置等等。第一次使用我们重点来看这几个,我们先点开常规,常规的第一项就是一个工作模作,开发项目的时候,我们一般选择适用于编程, 你选择了这个模式,那么 codex 会更愿意指示文件命令验证方式。如果你平时是以日常工作居多,比如说是以文字创意等等,那你可以选择用日常工作。在下面的权限区域,我们要来看一个重点是完全访问权限,这里记得是关闭的状态,如果这个开关打开之后, codex 可以 直接编辑更大范围的本机文件,运行网络命令,它的风险会明显变高,所以作为新手阶段而言,我们默认把它关闭掉就可以了。这里的速度可以选择是标准还是快速, codex 会基于跟你的一个整体对话,给到你一个相应的建议,当然如果用快速的话,它的套餐用量也是会增加的,那么我们平时用标准就可以。 那接下去我们来看第二个重点是个性化的,这个选项里面有两个,一个是个性,主要是选择 codex 回复的默认语气, 我这里选择的是务实,希望它能够简洁、专注和直接。第二个我们要去关注的是自定义的指令,这里的自定义指令要知道它是局工作规则,所有的项目都会读到它。所以新手我建议你们只要写八行内容就可以,这八行内容我会放在评论区,当然我自己的会 更完整更长一些。我的结构大概是包括使用范围与优先级通用的一个工作流,安全与合规,通用代码规则,验证与测试提交的规范,常见的项目命令工具,然后输出的一个文本规则。还有一些个人偏好,对, 我觉得大家一开始就用前面的这个八行就足够了,后面当你越用越多。你可以跟 codex 去总结你们经常碰到的一些问题,或者是你自己觉得 codex 经常会犯的一些错误,你把它整理成对应的规则放进去就可以了好吗?它有一个记忆的选项,目前是实验阶段,大家可以把起用记忆这个给开启就可以, ok。 第三个重点是配置,我们来看一下配置的页面配置我们来关注两个内容,第一个是批准策略,第二个是杀核设置。批准策略一般我们都会默认的是 on request, 它的意思就是说当 codex 遇到高风险动作的时候,就会停下来让你确认。当然这里如果说你是用 never, 那 就相当于一次执行到底了,不需要你的任何的批准,所以我建议新手都是用 on request 吧。沙盒设置这里它的默认是 workspace right, 它主要在当前项目里改文件,允许网络访问,这里就是默认开启,你可以把这里的批准策略理解成为它是一个确认按钮,哪些时候需要你来确认?把沙盒设置理解成为 codex 的 活动范围, 你给它框定了一个能够编辑文件和改文件的一个范围,它就只能在这个范围里去进行一个行动。我们再来看一个大家比较容易忽略的一个点,或者是比较容易混淆的一个点, 就是在桌面面板的左侧有一个插件,这里的插件它其实包含了 skill, mcp 和 connect。 skill 是 工作流,是我们的一个技能文件,它里面包括一些代码审查、做表格、生成 ppt 等等。同时像 mcp 就是 codex, code 等等。 connect 呢,是第三方账号的一个连接, 比如说像这 eraser, git, a lotion 都会有,所以这里的插件其实它就是一个能力包的一个合集,像 m, c, p, skill, connect 这些都是它里面的具体的能力,大家根据需要去进行一个安装就可以。 ok, 那 我们再回到设置里面剩下的几个,我们只是来做一个印象, 比如说像外观,你可以基于自己的系统去定义主题色,浅色或者是深色,当然这里有一个隐藏选项,它有一个宠物,看到了吗?这个就跟 cloud code 是 一样的,就是最近出了一个宠物,当你选择唤醒它的时候, 你看它的右下角就会出现这样的很可爱的一个宠物形象来陪伴你头顶。 it 主要是来管理分支的,像浏览器使用和电脑操控,主要针对的就是 browser use 和 computer use, 在 我们后面也会去讲到像以规章和使用情况,就是你本地的一个任务的一个管理和一个用量的展示,平时经常的去看就可以了。

大家好,我是老汤,现在讲一下 alac 加入这个 ai 大 模型调音的使用方法,我们现在这个 alac 软件从 yg 六开始都加入了 ai 大 模型来协助使用调音。首先我们点开这个 按键,出现右面这个 a r 电话框,第一次使用需要进行 a r 设置,在国内使用,我们建议就直接使用这个 type c 接口类型,就直接按这些默认的网址,它也是默认给你输入进去,关键是这个 api k, 这个是需要自己去申请的,因为这个是收费的, 大概跟他再花一次几分钱,这个申请的网址在这里双击他就会打开,我已经打开好了,如果没有这个账号,第一次他是会让你去注册一下,注册完了在这个页面 就可以,呃,先充值,点这充值,刚开始充个十块钱就可以,微信、支付宝都可以支付。第二步就申请一个创建一个 a p i k, 直接点这个创建名字随便取,这个 k 它只显示一次,这个它只显示一次, 所以这个时候你就要复制到你自己保存到你自己的记住的地方,这句话就直接复制到软件里面,到这里粘贴完了,确定 ok, 这样子就设置好了。这个时候我们就可以直接把音箱接入电脑,用 usb 键接好, 这边就直接可以去跟他 a r 电话,比如说我直接让他把 人声调通透一点,帮我把人声调的通透一点。这个语音输入是 windows 电脑的一个功能,直接加,直接按 windows 加 h 他 就出来了,所以你也不用输入。打字完了之后,你把你的需求 输到这个电话框里,当然是越详细越好,你越详细调的就越准,我这里只是做演示,所以没有输入太多 之后就发送,这个时候取决于你网络时间一般会久一点,可能要一分钟左右,一直在等待它的返回。这里有显示 ai 这个按键显示取消,就是在发送电话当中, ok, 看到曲线已经在变化了,这时候就已经 ai 帮你在调了,这个是调的曲线,这个时候假如你硬件是直接连着的, 这个数据就直接下放到你的音响中去了,我们这个时候就可以打开你的播放器,边听音边对比,这个开关是有效的。这个调整前后和校准前后对这个调整一样是有效的, 调整前什么样子,调整后什么样子,你听现在的,假如不满意你继续会跟他说,再通透一点, 或者是多了再减一点,直接就跟他讲,然后他会记住你前面条的,这个是连贯的,他会记住你前面条的,一直跟他对话就可以,就这么简单。那今天就先到这里。