粉丝7060获赞1.8万

哈喽,大家好,今天我来分享一下就是我自己在学习中遇遇见的这个问题啊,就在这个狼群中,我发现就很多博主上都讲说,呃,如何管理,呃,如何进行 ig, 然后如何进行这个对话消息的存储, 然后这个短期对话消息的存储,他们一般都是在狼群里面用这个 in memory server, 然后 把它存住起来,但是具体的细节他也没有讲到,然后就会导致我,嗯,我自己当时在学习的时候也会遇到很多困难,就比如说感觉学了很多个视频, 然后嗯的,然后发现每个视频讲的都大差不差,但是就是触摸不到,你感觉说为什么人家可以做像 check gpt 那 种网站,然后跨对话,呃,跨 section 就是, 嗯,他们之间是有隔离的,然后每个隔离他们,呃,每个 section 之间他们都有这个,嗯,记忆能力,那我们如何用狼圈实现呢?嗯,今天我也就是做了个小小的例子,也是把我近期学到的东西进行一个分享。 然后我们这次这次需要的就是一个 ue 的 包管理器,然后它是用来配置环境的,然后它也是可以呃,用这个 kind 来替换的,就是看你们自己喜欢吧。然后我这里是用到了一个 vsco 的 id, 好 吧, 然后因为我们需要去,嗯,长期的去管理对话记忆,就不是像说我打开用一次完之后第二次,呃,再打开这个 agent, 它就已经没有任何记忆了,所以说我们是需要一个数据库去存储它的这个对话消息的。 呃,所以说我们这里面会用到一个 doker, 然后来进行一个打开一个容器,一个关于呃 post circle 的, 嗯,用,我们这用的是 post 用的,我们用的就是这一个。嗯,它的数据库,然后为了模拟就是说你去发送请求,然后再去得到大模型的回复。 嗯,因为我们当时就是看到了许多网站上或者网网络上面教的都是, 嗯,就是在狼圈不是在 python 本地里面问他问题,然后他给你一个回答,就是没有那种体验感,就是你无法知道说到底是我们需要。呃怎么在网,就是模拟一个现实的场景,怎么去通过问他一个问题, 在网上问他一个问题,然后他再去调用。呃 api 什么之类的,所以说,嗯 嗯,之这之间我们所用的这些东西到时候我都会一一讲清楚啊。然后也就是做一个我最近的分享 啊。然后这个 uv 官包管理器呢?我们首先就是需要去这个官网上下载,然后去下这个东西, 然后我们所需要做 agent 的 框架,我们选的就是这个狼犬框架。好吧?然后,呃,这里我就不讲都可怎么下载了。哦,你们可以去这个官网上看一下它这个, 嗯,下载的这个这个流程吧。嗯,然后你们就可以这这网有点卡呀,那我们等一下再看。哎,可以了, 就可以对应自己的电脑系统安装,然后我们就可以在中终端里面去,嗯, 终端里面去。呃。运行这个豆壳,然后豆壳有我们的知识,可能到时候会提及一点点,但是不会提及特别多,包括这个 fast api, 我 们只是过来用一个参考。 嗯,重点主要讲的是,呃,我们如何去用朗倩加上这个数据库,嗯,去进行一个对话的存储,对,然后,嗯,去观察一下不同,呃,对话里面输入不同 id 的 情况下,然后他会进行不同的对话管理。 嗯,然后现,然后现在我们继续打开文件夹, 嗯,我们设它这个直接随便建一个新的文件夹吧。然后,嗯,我们打开新的窗口,然后我们在这个窗口里面打开我们刚创建的 study 文件夹,嗯, 嗯,我们打开终端,然后我们输入 u, 嗯, we, 我 们先出示化一下这个 study 的 环境,然后在我们的 u 里, 这样子就可以让它这个虚拟环境给它跑起来。然后在这个时候我们可以什么?我们必须先激活一下这个虚拟环境, 现在就我们已经进入到这个环境里面了,看到没有?然后我们如果想下载一些东西的话,我们就可以把一些, 我们就可以把一些包然后放在这边。我们举个例子吧,就我们不是需要用到狼圈吗?然后我们就把一些狼圈的包放在这个地方,然后我们就用嗯,公式勾 b 杠 u v eight 杠 r v, 然后这个时候它就会迅速帮我们下所有的包了。嗯, 那如果要是我们想就说这些包安装不够的话,我们还想再还需要别的,嗯,包来,嗯,别的库,我们还需要别的库的话,我们就还可以继续用 u v eight 的 这个东西来去进行下载。呃,任何库,好吧, 我们也可以用 u v pip 呃, install 来下载,就比如说我们等会也要用到一个 dot e n v 这个库,嗯,但是它这个库的名称应该是 p y t。 去我们 python dot e n v 对 u v pip install, 然后这个时候它就会写好了,然后现在我们可以打开,随便在这边新建一个,嗯,我们就叫做 memory 啊,刚开始我们就先导,嗯,先需要去导入一些必要的库。嗯, 呃,为什么我们需要这个 dot e m v 呢?就是说,嗯,就是说我们如果这样模型的话,有两种方式,一种是,呃,我们 需要去模型厂商调用他的 api, 然后他们如果调用模型厂商的 api 的 话,我们就需要 api key, 但这个 api key 是 非常重要的,因为你只要泄露给别人的话,别人也可以用你的这个东西,那就相当于在消耗你的钱。嗯,如果是你把它传到网上的话 就说,所以说我们一般是把它放在,就是说在这个地方创建一个 get dot e n d 文件夹,然后在这个里面放你的 api key, 嗯,还有你的什么 base url, 反正就一些重要的信息放在这个地方,到时候上传到 git 或者上传到别的地方的话, 它就,嗯,会被隐藏掉。对,然后我们回到这个地方,然后我们这个地方我们就可以直接用 load, 嗯,然后 这个时候我们就可以把这个 dot e m v 里面,到时候我们会放一些 api key 什么之类的,把这些东西放在这里面。对,然后嗯,它就能提取到, 然后这个是我们需要的第一条,这里这个是去调用 api 最基本的指令之一吧。然后, 嗯,现在我们需要创建一个 agent, 那 agent 就 相当于智能体,但是,嗯,以前的还没有智能体的情况下,我们都是用工作流的嘛。但是在狼群的框架中,它是 就是说可以只用 create agent 来,嗯,直接很迅速地创造一个智能题,而不是,嗯,再去需要自己用。如果需要构建复杂的 agent 的 话,就我们选用 long graph 嘛。但是这边为了方便,我们就直接用 long chain create agent 来做示范, 然后我们可能还会用到。 还有, 嗯, 呃,但是你看到我们这个地方想导入我们这个狼圈里面带的这个数据库的这个库它是爆黄色的,所以说我们可能需要记得重新安装一下 啊,我把这个直接复制下来吧, 嗯,应该没问题啊。对,然后现在我们就是已经导入的比较基本好的库,等会我们如果需要遇到还有新的库头,我们再把它导入进来,然后我们现在就是可以去,嗯,先去, 嗯,做一个, 呃,就是我们可以去构建一个这个, 用这个东西去,嗯,构建一个大模型也就相当于去连接大模型。但它这个用的 chat open ai 的 话,它这边里面默认的 url 跟它 api 全都是这个。 嗯,这个,这个,这个啥呢?这个 open ai 公司的,所以说,但是如果要是像我的话,我就一般用的国内的模型,所以说我们需要一些,嗯,比如说 base url, 比如说,嗯, 嗯,自己的 openai 的 那个 apikey 是 说这些东西都是我们嗯需要自己去准备的,那比如说有的网站,例如说什么硅基流动啊,什么他们都会给, 对,嗯,或者是火山引擎之类的,反正这种东西大家都应该能找到的,所以说我们这个时候就需要去 把刚刚在这个豆豆 e m v 里面的这个 a p i k 去给它进行一个添加嘛。然后我这里选择的模型,我是选择了一个 kimi k 二点五的模型, 对,然后我们把这些东西做完之后,就其实相当于说我们可以通过这个东西,呃,通过这个嗯 a p i k 去调用到模型场上的模型了,然后我们去嗯, 构建模型的话就还需要一个什么?就还需要 agent 嘛?所以说我们就需要把这个大模型装到一个 agent 里面,嗯, 然后嗯,大概就是这样子。所以说我们一般来说构建 agent 的 话,我们就是嗯 agent 等于 create agent, 然后在里面放我们的 llm, 啊,对吧? llm 是 什么?就是我们的模型, 然后这里面还可以放很多参数,比如说你想要的 tools, 这些东西可以自己去定义的,然后我们的这节课就不会去涉及到。对,这个视频里面我们就不会去设计啊,涉及到比如说这里面还可以放什么 system pro 啊, prompt。 但是我们这节课的目的是什么?是为了去嗯,把这个 agent, 就是 如果是单单这样子写的话,他是没有呃,没有记忆的,就是说他可能是你问他这一条完之后,他可能就忘了下一条,或者是你关闭行程完之后,他就可能就已经忘记了所有的东西嘛。所以说在呃之前的时候我们就会说嗯,他会有一个 这个,就是说会让券它自带了一个叫做 嗯 in memory saver, 然后这个东西的话它就会去嗯,呃,储存储,储存你之前的这些所有的对话记录,包括你的,然后模型返回你的,然后把之前的所有对话记录再去进行一个 嗯总总和,然后再加上你新的 query, 新的问题,然后再发给模型,这样就会显得模型它是有记忆的,但实际上你在调用 a p i 的 时候它是没有记忆的嘛?可是我发现了一个问题,就是说,嗯, 可能在网上的课程没有很多人能提到说如何让这个记忆去长久化,而是直接用这个 in memory server, 然后告诉你说它可以去用这个 a 键去储存记忆,所以说我们在这里就需要,呃,嗯,用到这个 post g r e savers。 对, 所以说我们刚开始就是在这个过程中,这这这个去连接 a 键,去连接数据库之前,我们就需要去安装我们的 doker, 然后我们 doker 就是 安装下来,其实就是它有一个这个图形化界面, 然后我们如果要去运行都可的话,我们就要去中断,所以说我现在就是打开个中断。对,然后我们现在打进了这个中断完之后,我们就可以先 看看你的都可在不在。嗯,就是在官网上下载完之后,你就可以去看到这个都可在不在。然后都可里面有两个点,就是说一个容器,一个是镜像, 真正运行起来的东西叫做容器。然后镜像的话它其实就是一边给你讲了一些这些库啊的版本啊什么之类的这些东西,然后等到你把运行呃这个镜像运行起来的时候,然后它就真正成为了一个容器,但它镜像就是镜像,你一个镜像可以起多个容器。对, 呃,所以说我们现在就是需要去在这个兜可环境下去,嗯,部署一个我们自己的这个, 嗯嗯。这个这个数据库嘛,然后兜可里面首先就是有几个操作,一个是 dos 兜可, 嗯, round, round 的 话就是什么意思呢? round 的 话就是相当于说你把已经爬下来的这个镜像,然后去运行成容器,那 或者是你可以直接,如果要是在你,嗯,如果要是在你这个,嗯,如果要是在你这个什么 呃这个都可的这个文件里面,就是说他没有镜像,他会直接自动去往上爬去那个镜像,然后再把它呃运成容器。那如果是你单单只想排个镜像的话,你就可以只用都可铺,应该是他应该可以直接爬下来的, 然后当容器去呃 start, 呃容器,呃,可就说他可关可开嘛。所以说我们就可以用, 比如说该把它爬下来镜像,我们可以用 docker start 这个东西去,嗯,把这个容器进行,嗯,运行,然后把这个 容器进行关闭,用 docker stop。 那 start 跟 run 区别的话,就是说 run 的 话是原本已经不存在的一个东西,然后把它运行起来,但 start 跟 stop 完之后就相当于说你原本已经有这个容器了,就是已经存在这个容器了,然后,嗯 嗯,你原本已经存在这个容器了,然后,嗯,我再进行去一个打开跟关闭,但是这个打开关闭的话,它不是删除,如果要是要删除的话,应该是 dog remove, 应该是 r m 吧,反正好像是这样子的。对, 但这节课只会用到一个 dog run 或者是 dog stop dog star。 对, 还有一个, 嗯,常用的指令是多个 ps, 多个 ps 的 话,我们可以看到说我现在就正,就说现在正在运行的容器有什么?就比如说我现在就是已经在运行一个呃 pos g r e s 的 这个容器,然后它里面就是可以存储我的这个数据的这个知识 就是我之前的所有的信息嘛。然后,呃,那我们还可以使用 dok, 那 我们现在就试试一下,把这个容器关掉,我们就可以它的容器名称叫做啊, my post g r yes, 所以 说我们就可以使用 dok, 然后运行完这个完之后你就可以发现说我们再使用。哎, 我在使用多克 ps 的 时候,我现发现我的这个容器已经没有了,但是我们可以怎么查看它呢?我们可以看所有的容器是在呃都 杠 a, 杠 a 的 意思就是相当于说它是杠,呃,显示全部,然后就可以看到之前我启动的所有容器,加上,嗯,它什么时候进,它进行了什么时候,还有这个什么时候之,什么时候创造的,就都可以在这里看到。 对,然后等一下我们会讲这个 docker 怎么在 docker 里面去运行这个数据库。 好了,现在我们继续去讲这个,嗯,豆壳怎么去运行这个数据库的容器,呃,我们首先需要这一段代码, 这段代码,呃,它上面讲的已经很清楚了,他说 doctor wrong, 就 我刚才讲过了,就是它会自,如果是找不到它的镜像的话,它会自动去网上找到这个镜像。那我们找到什么镜像呢?呃,看一下,嗯,我们看找到了这个,嗯。 post g r e。 最新版的这个定向看到吧。然后呢?这个就是我们数据库所需要的这个,呃, username 跟 password, 对, 然后为什么会需要这个做这个端口映色?因为,嗯,我们,呃,其实这个 dok 挺像虚拟机的,但是它跟虚拟机还是有些不一样的东西的。嗯,我们如果需要让本地电脑去连接到这个 dok 的 话,我们就需要去做这个端口映色。对, 然后这个 name 是 我们去创建的容器名称,你看这个是镜像名称,这个是容器名称,是不一样的。然后 运行这段代码完之后你就可以发现,嗯,你在这个它就会自动去帮你下载,然后我这里已经下载过了,所以我就,嗯,不再去下载它了。对, 我先把它删了, 随便先这样子,然后,然后我们现在还是我先把它 start 出来吧。 好了,现在就相当于说其实已经, 其实我们已经相当于说我们这个容器已经运行了嘛,然后容器运行的时候,呃,嗯,就是它会, 嗯,就我们可以进入这个容器的终端,就是我们可以,就比如说像数据库,它有自己的终端命令行操作,我们就可以 一定要写这个 i t, 如果要是没没在 i t 的 话,它就是直接就相当于说进去就出来,就是,呃,就是 运行了一段,但是我们现在是要直接进入到它终端命令行里面,然后做操作的,所以说我们一定要这个 i t, 然后后面就是我们的名称, 然后我们刚刚不是还有设置的一个,嗯,然后我们还要选啊, 这个是进入它的数据库终端,嗯,对的,然后我们不是还有这个 user 类吗?就是我们刚刚设设置的那个, 然后我们还有,嗯, 这个就是我们刚刚的设置的账号跟密码,然后我们就可以通过这个方式去进入它里面。 对,然后你会发现这个地方已经变了,就说我们现在已经其实进入到了这个,嗯,这个数据库里面,然后我们现在要对这个数据库里面的东西进行操作,我们就可以就执行一些数据库指令嘛。然后我们可以先看一下 这个,就是我们现在目前,但是你们如果要是刚刚创建完的话,就可能先看不到这些,因为这个 checkpoint 其实是我们当 long chain 跟这个数据库连接起来,它会自动创建的,好吧? 然后我们现在,呃回到这个地方,呃回到这个地方来说我们就可以去连接,但是要怎么样连接呢?呃,我们来看一下怎么样连接。嗯, 首先我们连接的话就是说要把这个 a 键它的对话历史呃做去连在这个,嗯数据库里面,然后根据刚刚但是怎么样用 python 跟这个数据库连接,我们就是需要一个, 然后你会发现这个东西就是我们刚刚设置的这个端口映射的这个端口,然后我们用的数据库名称看到吧,然后你有了这个东西,然后把这个东西, 呃,就是建立这个东西,就是建立我们这个 python 跟这个都可运行的这个容器之间的连接,然后我们可以去 呃打开这个通道,嗯,然后在这个地方,刚刚我讲过了 a 键就是这样构造的嘛,所以说我们为了方便我们就这样子,好吧。然后 post server 就是 launch 里面它我们刚下来的这个库,对,然后从,然后根据给他这个地址,对,然后他就会找到在这个地方去抽象, set up 就是 抽象它会。呃,为什么我刚刚会有这几个表格?是因为你有 set up, 它就会进行一个抽象, 然后这也就是我们刚刚讲的说如何 create agents 跟如何,嗯嗯,就是他去 create agent, 就是 我们刚才讲的这个东西,然后这个 checkpoint 你 会发现刚才呃很相似,就在我们这个嗯终端里面就可以看到, 就是这个 checkpoints。 然后以后我们就是说包括用户对话啊什么之类的,它的这个历史记录都会存在存放在这个 checkpoint 里面。然后不管你是啥时候打开这个 嗯, python 啊,或者是把它关掉,就是把这个服务器开关掉的话,它的这个里面历史消息都是会记录在这个我们所存的这个数据库表格里面的。所以说现在我们就 嗯不会去,因为说嗯,我们去关掉啊,这个 vs code 啊,或者是怎么样子,然后导致这个数数据去,嗯去损失,就是说它会被清洗嘛,然后现在我们就去 啊,这已经我弄好了代码,然后大家可以看一下,然后我会对它进行一个讲解,就说当 我们每次在对这个 config, 我 们先来讲讲这个 config, 这个 config 它就相当于说是你识别数据库名称的一个标签, 也是这个东西最关键的地方就是说在于如何区分不同 section, 就是 在于这个 config cosigma 里面这个 three 的 id 就 相当于说一个不同的 sex, 就 相当于你如果是用在 ai 的 话,它有不同对话窗口,它是有不同的记忆的,就是它每个对话窗口不是有不同的记忆吗?它是怎么管理它?是因为它是通过识别这个 three 的 id, 然后 你通过相同的 three 的 id 的 话,他就会找他就会每次发消息,然后把这个 three id 里面的所有对话进行去呃,发送,包括再包含加上你的 query, 然后发送给这个 chart gbt, 或者反正你的大模型去进行请求他。 呃,所以说,然后这个假设,现在我们就可以说假设我们已经连好这个数据库了, 嗯,然后现在他为什么会这样?现在好,嗯,对。然后我们现在可以验证一下我们之前所说的东西, 这个就是说为什么我们要去构建数据库的原因。假设我们有个 input message, 说 user 问了,说,你好,我叫 bob, 上海天气怎么样?呃,那他既然有上海天气的话,我就给他加一个呃, getv 了吧。 这个是一个函数,然后我们就可以说模型要是知道这个函数的话,它就可以调用。呃,我们就也就随便写个最简单的 demo, 也不用写别的东西,所以说我就在这个函数就加在这里。好, 现在模型有这个,我们第一个先问说,你好,我叫 bob, 上海天气怎么样?然后第二个就是说,嗯, 呃,已经告诉他名字了,然后我现在就想问他说我刚刚说的名字叫什么?然后用的是不同的,用的是相同的这个 section id, 你 会发现这个 config one 跟 config two 嘛? 这个 config 跟 config 为什么 invoke 要带 config? invoke 这个就相当于说你的 query, 然后这个就相当于说你之前所含的这个历史消息存储的这个地方。 然后我们可以先试一下,然后在这之前,我们刚刚,我刚刚已经,呃把这个 e m v dot e m v 给配置好了啊,然后我们先运行一下, 嗯,然后你看我们可以看到第一轮对话, 等一下,他这个可能会比较慢,因为我用的模型是 key 二点五,然后他可能思考的时间会比较久,对,然后 在这个等待的时间,我可以说我们等,我会把这个 thread id 换掉,然后再去问他说我叫什么名字,然后这个时候他就不会去 呃,他就不会知道说呃他叫什么名字。为什么?因为我们改了这个 three id, 他 就会从呃数据库,他就会呃从那个另外一个 three id 里面去。嗯,提拿他的对话信息,然后过来去, 嗯,整合到我们的 query 里面。 怎么这么久?稍微再等等吧, 重新警告一下。 你看我们等,我可以查看说他到底有没有去把这个东西存储到这个数据库里面, 你看他说我注意到你今天重复几次问同样的问题呢?这是我之前去试过的,然后我们现在可以去看一下。嗯嗯, 我们可以在这个数据库里面,然后我们可以 select from。 啊, 现在我们可以看到它这个这个数据长什么样子,你会发现你看这个 chat section 三是我 chat session 是 我们之前。嗯,咋说呢?就是刚刚在那个地方,就是刚刚在这个地方 config 里面设置的这个 chat session 一 二三,然后在这里呢,我们就 这里我们也可以看到这里是它有 change section 一 二三,然后我们就可以看到嗯,这里所有的消息嘛。那如果要是我们换 把这个 change section 一 二三,我们现在就把这个,呃第一轮对话先给它, 呃,先给他删掉,哦,不是删掉,先给他隐藏掉,然后我把这个换成一个我们完全不知道的 id, 就是 完全没见过的 id, 然后现在再带上他的 config, 再去问一次说我叫什么名字, 你看他会回答说,抱歉,这是咱们第一次对话的消息,所以说,嗯,为什么会呃,导致这样,就是因为我们在这个 invoke 的 里面去设置了一个 config, 然后这个 config 它就是用来呃这个 config, 它就是用来去呃识别不同人的,这也就是为什么你在登录同个账号里面开的不同的窗口, 它在这不同窗口里面它的这个对话率实际是不同的。然后如果是我们用 logon 来构造的话,就是说我们需要在这个 invoke 里面去加这个 config, 然后至于这个 config 说现在是我们自己生成的嘛,嗯,所以说如果在前端的话,它会在全前端自动生成一个这个 config, 然后也是唯一 unique id 的, 然后然后再发送给后端这个数据库,然后传到,通过发送 a b i 请求,然后传到这个,然后让数据库构建这个不同的通过,就是说识别不同的 config, 然后传不同的历史对话进去。 嗯,我们现在可以再回到终端看一下,呃, thank you, 然后我们可以再回到终端再执行一下刚刚这一条命令, 你看到没有?这个就是我刚刚发的,然后这个是我之前发的, 这个就是我刚随便乱设的这个 id。 但是他为什么没有拿之前的这些对话历史记录呢?因为之前的这些对话历史记录就是相当于说,嗯, 它是属于这个 id 的, 所以说它们两个是隔离的,然后这两个隔离的话,你就会简单理解说如果是我使用这个 id 的 话,我就拿不到其他的信息,所以说这是比较安全的。对,然后把这个数据库到时候关掉的话,然后再重新打开的话,它,呃。信息是一直保存的, 就说一直存在你的数据库里面的,包括,嗯,你只需要用 python, 然后跟这个数据库连接,建立连接,你就可以知道。 呃,你以前的信息。对,呃,今天的分享就到此结束吧。然后剩下的 fast a p n 部分我们后面再讲。嗯,然后这个就是,呃,嗯, in memory 跟你使用这个数据库进行连接来管理这个对话历史记录的不同,因为你使用 in memory 的 话,你可能在关闭这个进程,关闭这个 vs code 或者是怎么样子之后,你可能下次就已经找不到历史对话记录了。 但是我如果要是把这个数据,呃,如果是我选择把嗯,这一个,嗯,就比如说我现在先把这个 vs code 关掉吧,好吧。 然后我关掉完之后我再重新打开这个窗口。呃。重新, 呃。 重新打开这个窗口,那现在我是不是已经相当于说重新打开了?然后我现在就是说我用这个,呃,我用这个 section, 我这把没把这个孔飞改掉,但是我现在也不告诉他名字了,然后我现在还是把这部分隐藏掉,就他不会去问他,然后我现在只问他说我叫什么名字,你看他会不会知道, 你看他说 ai 的 回答,你刚刚说你叫 bob。 所以 说今天是你已经第三次问我这个问题了,所以说我在前面没有问他的话,他还是能拿到我之前的对话历史记录,他不会因为我去关掉这个进程,然后去丢失掉自己 呃的这个对话历史。所以说这也是为什么在你遇到的你用的这些 ai 打磨型平台,为什么他只要登重新登录账号他就会去?嗯,知道你之前所有的对话历史,就是他会进行一个数据库的储存。对, 这就是背后的原理吧。对,好,那今天的分享就到此结束了,然后过两天可能再发那个 fast api, 然后把这个东西串起来,好吧?

看到有的同学装麦 siri 数据库,装了一天还没装好,像我这么珍惜时间的人看到了都心疼啊。今天呢,我就教大家使用刀客三分钟装好麦 siri 前置条件,来看一下操作步骤,第一个拉取麦 siri 镜像并启动麦 siri 容器啊,就这个命令啊,看一下就行,一会儿直接看我操作。 然后第二个就是那个开的连接配置啊,就这几个东西啊,随便看一下啊,直接看我操作就行了。接下来呢,我们就打开我们的 vip 地址,打开终端 ip 地址点啊, 然后呢,在上面看到了吗?就是这个地址啊,记住它有用啊。然后呢,我们打开我们的 v s code, 在 v s code 当中啊,打开一个终端啊,然后呢,通过 s s h 工具去连接无网图系统,这样的话就方便执行命令,因为可以直接复制命令并执行,很快捷 啊,这里说明一下哈,这个呢是你的无方图用户名,然后这里呢是你的无方图地址啊,然后呢,就这样输入你的无方图登录密码, ok, 这就连接成功了。接下来呢,我们就通过这一行命令去拉取一下这个麦斯扣镜像并启动容器啊,这里呢,我说一下啊,这个呢是呃,麦斯扣的端口,然后这里呢是麦斯扣的密码,你可以设置成你想要的密码啊,然后呢,我们拉取的麦斯扣呢是八点零啊,直接复制 然后回车啊,现在就在拉取啊,这个速度还是很快的哈,你一定要配镜像,你不配镜像的话,你可能拉个一天也拉不下来, 大家看速度是不是很快。 ok, 这就好了,一分钟都用不了。接下来呢,我们就使用我们的 navicad 去连接一下这个莫斯科数据库啊,这里点击连接,然后呢莫斯科, 然后呢输入连接名称,连接名称的话随便起零零零,这个主机地址就是你的 vivo 虚拟机地址啊,我输入我的幺九二点幺六八点八六点幺三七,然后端口呢是三三零六啊啊,用户名是 root, 然后密码就是你刚刚启动那个容器设置的密码, 然后呢连接,点击确定, ok, 这就连接成功了,我们测试一下哈啊,查询,新建查询,我们通过创建一个数据库测试一下,嗯, test, 然后呢执行 啊, ok, 对 吧?啊,这就完成了是吧?装 micro 很 容易的啊啊,几分钟就装完,你装完之后呢,可以去你同学面前装个逼,或者说啊,你要是勇敢的话,你去你老师面前装个逼, 你跟老师说,老师装个 micro 用两年吗?用不了两年啊,几分钟就装完,想学吗?想学我教你,哈哈哈。 然后最后就是大家每次要使用这个 microsoft 的 时候,你都要打开你的虚拟机啊,然后呢并执行这个命令啊,启动 microsoft 容器,然后呢你不使用的时候,你就把这个 microsoft microsoft, 对 吧?然后呢进入 microsoft 命令行,是这样的 啊,就是说可以通过这个编辑器直接进入到这个 microsoft 的 命令行,就是这个命令啊,这个密码是我的哈,你可以改成你自己的密码哈。

一天一个计算机知识,今天要讲的是 docker 以及它的架构。你是一家互联网公司的运维人员,维护公司的多个应用服务。随着业务的快速发展,公司新开发了很多应用,每个应用都有不同的运行环境要求, 比如有的应用需要特定版本的 python, 有 的需要特定版本的数据库。你要把这些应用部署到服务器上,问题就来了。在传统的部署方式下,你得在服务器上手动安装和配置每个应用所需的环境,这不仅耗时费力,而且很容易出错。 一旦某个环境配置出了问题,应用就可能无法正常运行,还可能影响到其他应用。而且当你需要把应用迁移到其他服务器或者不同的云平台时,又得重新进行一遍繁琐的环境配置工作,效率极低。 那么有没有一种办法能让应用的部署和运行变得更简单、更高效,并且能保证应用在不同环境下都能稳定运行呢?这时候 docker 就 闪亮登场了。本地环境隔离我们先从简单的情况说起。 想一下,你有一个房间,你要在这个房间里同时进行绘画、做手工和做实验。不同的活动需要不同的工具和材料,而且它们之间不能相互干扰。 如果把这个房间比作服务器,不同的活动比作不同的应用,那么你就需要一种方式来把这个房间隔成不同的区域,每个区域专门用于一种活动。在计算机里,我们也可以对应用的运行环境进行类似的隔离, 就像我们可以在服务器上创建多个虚拟的小空间,每个空间里安装特定应用所需的环境,这样不同的应用就可以在各自的小空间里独立运行,互不干扰。这种在服务器下为应用创建独立运行环境的方式就是所谓的本地环境隔离。但是这种本地环境隔离也有一些问题, 如果每个应用的环境都完全独立,会占用大量的服务器资源,而且管理起来也很麻烦。容器化部署 为了更高效地利用服务器资源和管理应用环境,我们可以把每个应用及其所需的环境打包成一个独立的包裹,这个包裹就是 docker 的 容器。 就好比你把绘画活动所需的工具和材料都装在一个大箱子里,这个箱子就是一个容器,你可以很方便地把这个箱子搬到其他房间。 在新的房间里,这个箱子里的绘画工具和材料依然可以正常使用,不需要重新准备。同样的, docker 容器可以在不同的服务器或者云平台上快速部署和运行,因为它已经包含了应用运行所需的一切。但是多个容器在同一个服务器上运行时,也会存在一些问题, 比如不同容器可能会竞争服务器的资源,像 c、 p、 u、 内存等。这就好比多个箱子放在一个房间里,可能会互相挤压空间。为了解决这个问题, docker 引入了资源限制机制, 就像你可以规定每个箱子只能占用房间的一定空间一样, docker 可以 限制每个容器使用服务器资源的上限,保证每个容器都能稳定运行。镜像和仓库刚刚我们提到了把应用及其环境打包成容器,那么这个打包的模板是什么呢?这就是 docker 镜像。镜像就像是容器的蓝图, 它包含了应用运行所需的所有文件和配置信息,你可以根据这个蓝图创建出多个相同的容器。想象一下,你有一张绘画活动的设计图,根据这张设计图,你可以制作出多个相同的绘画工具箱子。为了方便管理和分享这些镜像, dawk 还提供了镜像仓库。 镜像仓库就像是一个大的仓库,里面存放着各种各样的镜像。你可以把自己制作的镜像上传到仓库里,也可以从仓库里下载别人制作好的镜像。 就像你可以把自己的绘画设计图存放在一个公共的图纸库里,也可以从这个图纸库里找到别人设计的图纸。 docker 的 架构现在我们来看看 docker 的 整体架构。 docker 主要由 docker 客户端、 docker 守护进程、 docker 镜像、 docker 容器和 docker 仓库组成。 docker 客户端就像是你的遥控器,你可以通过它向 docker 守护进程发送各种命令,比如创建容器、启动容器等。 dock 守护进程就像是一个大管家,它负责接收客户端的命令,管理镜像、容器等资源。 dock 镜像和容器我们前面已经讲过了,而 dock 仓库则提供了镜像的存储和分发功能。 dock 是 什么?简单来说, dock 是 一个用于开发、部署和运行应用的开源平台, 它通过容器化技术,让应用的部署和运行变得更加简单高效。 dock 可以 把应用及其所需的环境打包成一个独立的容器, 这个容器可以在不同的环境中快速部署和运行,而且不会受到环境差异的影响。 docker 的 应用场景非常广泛,比如在开发过程中,开发人员可以使用 docker 快 速搭建开发环境, 保证开发环境和生产环境的一致性。在部署过程中,运维人员可以使用 docker 快 速部署应用,提高部署效率。在测试过程中,测试人员可以使用 docker 创建多个独立的测试环境,保证测试的准确性。现在大家明白了吗?最后遗留一个问题, docker 目前的容器都是在单个服务器上运行的, 如果要实现大规模的应用部署,需要多个服务器上运行的。下期我们聊聊这个话题,我们下期见。

memorning lan speed pro 让 ai 真正拥有记忆。 millage of aich, 即生化危机后带来革命性 ai 记忆系统。 manpless 在 get bob 四天斩获近四万星,成为史上最高分的记忆系统。 但对于已经安装或打算安装 memory lan speed pro 的 open cloud 用户,你不需要安装 manpless 来用这套系统, 因为我们把 manpels 的 整个核心架构完整搬进了 memphis b pro。 我 们在研究 memphis 时发现它的供电结构和分层记忆机制非常强大,但 memphis 用的是 chromite b, 而 open cloud 用户已经在用 memphis b pro 的 底层性能更好。那直接把 memphis b pro 的 架构搬过来不是更好吗? 于是我们做了这件事,把 a a a k 压缩格式搬过来了,把主动遗忘策略搬过来了,把三层衰减模型和 webo 算法也搬过来了, 把四层记忆结构和六类分类体系全部搬过来了。你的 ai 不 再是每次对话都是从零开始,它记住了你的编码风格,你用 tabs 还是 spaces? 你 偏好的数据库,你做过的每一个技术决策, 你告诉他的每一个重要信息,他都会快绘画。记住这分式,简单一行命令,安装 open cloud plugins install memory lance b pro 北大, 安装完成后,重启网关,三层衰减模型,自动管理你的记忆。 core 核心记忆几乎永不遗忘。 working 工作记忆动态调整 peripheral 外围记忆自然消退,配合 webo 衰减算法,重要记忆越来越强,噪音记忆自然消失。 memory lance b poe 自动注册了多个 m c p 记忆工具。 memory recall, 让 ai 从记忆中解锁任何相关信息。 memory store 存储重要信息 memory extract 从对话中自动提取关键决策。 memory cross session 关联跨绘画记忆, 你不需要手动操作, ai 自己就记住了。你可以用自然语言和记忆对话。之前有没有讨论过 posgrid s q l ai 能准确回忆上次那个 bug 是 怎么解决的? ai 能帮你找出来,零学习成本,不需要记任何命令,让 ai 真正拥有记忆。让 opencla 成为你最懂你的助手。 安装只需一行命令,不需要复杂的设置,详细的集成指南在我 get up 链接在描述栏有问题可以在评论区留言。如果你觉得这个视频有用,请点赞关注、分享。 memorylands b pro, 让 ai 真正拥有记忆从今天!

哈喽,大家好,今天给大家介绍另外一个我做的开源项目, rust cicle light web ui, 它是一个极致清亮的 cicle light web 管理工具, 它的抖可镜像前后段加在一起还不到十兆,跑起来也是性能非常的高,而内存占用还不到十兆,而且还支持 ai 纠正 cicle 的 功能,甚至你可以用自然语言去写 cicle, 技术栈方面的话,后端采用 rust 的 语言, rust 代码性能可以媲美 c 和 c 加加,前段的话采用 sorry 的 gs 和 react 非常类似的语法,但是性能比 react 强很多,打包的静态文件还不到一百 k, 压缩后还不到三十 k, 加载速度也是非常的快,下面给大家演示一下, 可以看到这个小的表,它的五行查询时间还不到一毫秒,只有零点三八毫秒,然后这里有一个我的网站访问记录,查询前一百条数据还不到两毫秒,然后再给大家演示一下 ai 纠正 c 口的功能, 比如说我写 c 口不太熟练,我把这个 limit 的 i 给少敲了,这是我们直接运行,可以看到这里直接报错,说语法错误。但是我们这里有一个 ai fix 的 功能,我们点一下 可以看到非常快,他就已经把我们的 c 口给我们修复了,然后我们点运行就可以拿到正常的结果了,然后我们再给他拿一个难一点的,比如说我们直接拿汉字跟他写 c 口查询,访问量最高的 十个 u i ok, 我 们点击 a f x ok, 可以 看到瞬间他就把这个 c 口直接写出来了,然后我们直接运行,也是可以顺利查询到数据,详细的使用方法包括技术点解析,还有开源地址都可以参考我这篇博。 cico light 可以 说是装机量最大的数据库,没有之一,而且在 ai 的 时代, cico light 的 含金量还在不断上升。如果你正在纠结用啥数据库的时候,先选 cico light, 再搭配这个不到十兆的高性能的 cico light 可识化工具, nice! 当然,如果你在纠结用什么技术和语言的时候,放心的去用最新的框架和语言,因为 ai 可以 帮你扫平语言和框架之间的差异。 关注我,带你用 ai 重新定义软件开发,觉得有用的话三连支持一下啦,谢谢!

我们最近在招 java 工程师,昨天面试个小伙子,简历一拿过来,我眼睛都亮了。大型商城项目开发经理、分布式事务熔断降级微服务架构,还有 radis 集群、 elastic search, 再加上消息堆列、分布式锁链路追踪。另外还写了用了多款容器部署 k 八 s 集群管理 数据库,还用了存储复制加分库分表,甚至加了普罗密修斯监控一套,全给用上了。看着老虎人了, 我赶紧追问项目上线多久了?有多少实际用户?日军并发能到多少?结果小伙子吱吱呜呜说,项目还没上线就做了个 demo 测试,都没经过几轮。说实话,这种后人我们基本直接怕死, 干了这么多年开发,我太清楚了,这些流行技术不是堆在简历上就有用的,没上线,没经过实际用户检验,没扛过真实场景的并发和 bug, 你说你会用,顶多就是会搭个架子,真遇到问题根本 hold 不 住。我们乙方要的是能扛活的,能为甲方解决实际线上问题的,不是只会背记住名词的。

刀客一键封装什么意思?刀客一键封装就是别人把 ai 模型运行软件环境配置全都提前装好打包封死,你不用自己一个个下载组装配环境,只要运行这个封装包,它就自动全部部署好,直接就能用。当然装好之后还是要微调下的, 比方公司数据库知识库你都是要自己上传的,只不过比起自己装 ai 装龙虾简单太多了。关注我讲小学生都能听得懂的 ai。