粉丝3921获赞2.2万


我们这时候进入到大模型应用开发,就使用这个 login 这框架嘛,那什么叫大模型应用开发呢? 那既要开发一个完整的应用嘛,就不仅仅是说学大模型了,因为大模型本身还是擅长于对自然元的理解和生成。当然了,现在不光局限于自然元了,包括对图片的视频、音频的理解和生成,大模型都可以搞。 但是我们开发一个 app, 一个应用嘛,还有其他很多功能需要完成。比如说我希望他能够自动的去上网查询一下最新信息,希望他能够完成一个文档解析,希望他能够去搜索浏览商品,然后呢帮我自动的去下单 等等。这类功能我们通通称之为工具。那么工具的实现其实还是传统方式嘛,你要去掉各种各样的接口,比如说你要去掉淘宝的一个搜索接口,去掉支付宝的微信的支付接口。 所以在大冒险出现之前,这些功能该怎么写,现在还怎么写?只不过呢,现在我们要把这些功能和大冒险融合在一起,共同开发一个 app 时, 那么就有了朗庆这样一个框架。在朗庆框架里面虽然说包含了大模型和工具两部分,但它还是以大模型为核心展开的, 我们还通过这个 pickin store 去安装一下我们的朗庆。那现在呢,已经到了这个一点二点一了,这边还强调一下,就之前的话都是零点几、零点几, 那零点零几就表示这个版本还不够成熟,还在频繁的变化当中。而一旦升级到一点几的话,就意味着他会比较稳定, 轻易不会再改变了,那就算有新的功能加进来,他也是去升级这个次版本号啊。主版本号最前面这个一是轻易不会变的, 只要主编码号这个一不变,就意味着它始终是向前兼容的。就说我们现在这个课程呢,是按照一点二点一来讲,那么将来就算它升级到了一点九,一点十,咱们现在讲的所有的 api 在 将来依然是可以直接使用的, 这叫兼容嘛。但如果说将来主编码号变成二了,那么之前在一里面的某些 api 它可能就不再支持了。 那么第一节课咱们先通过浪清这个框架来调几个大模型感受感受。第一个我们先调这个 deepsea, 我 们打开 deepsea 官网,当然了本节课我所讲的所有的网址都会出现在我的代码的注示里面,或者出现在我的文档里面,大家拿到代码,把那个 u r 从代码里面拷贝出来就可以了。这边我们点这个 api 开放平台,这边需要注册个账号, 然后的话这边有一个 api k 的 管理,我创建一个自己的 api k, 你 后续所有的 deep 调用都需要把这个 k 呢作为参数传过去,这边可以查看这个用量信息。 我当时充了十块钱,现在还剩下七点八四元,所以十块钱其实可以用很长时间,待会呢我们也可以去调用字节的这个火山引擎, 这个链接也在我们的代码里面有。这边有一个模型列表,现在是豆包的一点八,在公测当中往下翻,咱们点这个豆包 c 的 一八,那么就跳转到了火山方舟的管理控制台左侧这边我们往下翻, 有一个系统管理,开通管理,开通管理下面的话,这边有一些模型,语言模型、语音模型、视觉模型、向量模型和智能路由模型。那么语言模型呢, 你可以选一个点击开通服务就可以了。我现在是开通了这个豆包 c 的 一点八,大家你也可以多开通几个。另外的话强调一下,就这个向量模型这边呢, 我们也需要开通一个,那我开通的是这个豆包 ambidi, 因为后面课程我们需要去调用这个 ambidi 能力。那这个模型开通之后的话,开始呢是免费的, 比如它这边有多少 token 的 这个免费使用额度嘛?包括这边这个豆包一点八也有这么多的免费使用额度,所以大家可以放心使用。然后这边有一个 api k 的 管理,当然了你也需要先注册一个开发账号,然后呢生成一个 api k, 我呢是把这些 api k 都放到了我的环境变量里面去,将来我在代码里面呢,直接从环境变量里面读取 api k 作为参数,传给对应的后端就可以了。 当然了,你也可以把这个 api k 呢存到你的配置文件里面都行。然后在朗清里面,为了去调用各个模型呢,我们需要去安装一些工具,比如调 deepsafe, 我 们需要去 piping store 这个 long chain deepsafe 这边我来写一个函数,我要去创建一个 deep seek 的 模型, create deep seek chat model 这边我已经引入了 chat deep seek, 所以呢这边我来一个 i r m, 等于这个 chat deep seek 好 看,参数怎么传? 第一个需要把你的 api key 传过去,这是当初你在 deepsea 高网上这边创建好的,这个 key 我 不是已经放到我的环境变量里面去了吗?这边的话,我直接读取我的环境变量 get in, 输入环境变量对应的那个名称, 这个都是你自己配置的啊。第二个参数,指定 model name, 我 们调的是这个 dipstick chat 模型。好,这两个是必须真的。然后还有一些可选参数,比如说指定一个温度 temperature, 这个温度呢?取值是零到二,那么温度越高,它会越发散,温度越低会越冷静,越聚焦。比如说数理化类的,你可以把温度设到低点零点五,零点三, 而文艺创作类的,可以把温度设高一点一点五,一点八,对不对?咱们取一个中间值一点零。 max tokens 表示你想控制大模型返回的这个文本长度, 因为它返回的特殊越多,那么你的金额消耗就越多嘛。想控制一下边,我控制成三千吧,还可以控制一个 timeout。 每次用大模型,你的最大等待时间是多长? pass 里面时间都是以秒回单位的,这边呢,我最大等待二十秒,超过二十秒还没返回结果。那么呢,本次调用就直接以一个异常就结束了, 还可以指定一个最大的重试次数,假如第一次失败了,你是否允许他再重试第二次?好,最后我去返回这个 l m, 所以 这一些参数都是可选的,可以指定也可以不指定。我们来试一下 model, 等于调这个模型, 然后我们看一下这个模型的名称, model name, 通过这个 model 点, model name 可以 答出来,然后我们问他一个问题, model 点掉他的 in book 函数,好问一个问题,今天是几号? 把它赋给一个变量 completion, 等于它,然后来打印这个 completion 看一看,好跑一下,那么这个模型调用还是比较慢的,需要等个十秒左右看这个结果。模型名称是 dipschat, 就是我们刚才在这个地方指定的模型名称嘛。那么这个 inlook 函数返回值呢?它应该是一个类,一个 class, class 里面它对应了一个 content, 它返回这样一句话。还有很多的其他信息,比如这边啊, to cost 表示调用了几个工具嘛?目前的话,我没有调用任何工具,所以工具调用为空。 这边还有一个关于 token 的 使用状况,输入七个 token, 突出了二十个 token, 总共消耗是二十七个 token, 那 么他这个时间呢?二零二五年的一月二十四号肯定是错的,就说大模型他不可能知道这些事实的信息。 如大模型是二零二四年六月一号训练好的,那么二零二四年六月一号之后发生的事情,他肯定是一概不知的, 所有跟当前时间是相关信息他都不知道,所以呢,他这个时间会是错的。那么将来我们通过自己写一个函数,就写一个工具嘛,来告诉大漠新当前的时时间是什么?好,不管怎么说吧,这个接口是能够调通的。 那么我们再来换一个模型,看一下火山方舟豆包模型怎么调?我来创建一个 ark chat model, 这个 ark 表示的是火山方舟 i o m。 等于 啊,刚才咱们调这个 chat deep secret 嘛,但是对于这个豆包模型来说啊,官方并没有去维护一个 room 下面的可用的一个库, 因为我们知道豆包是自结的吗?而字节它是用的构源,字节有一个 i n o 框架,专门是用来做构源的大模型应用开发的, 所以呢,它们目前还没有去对接这个 python 语言,那目前我们还是需要通过这个 open ai 的 方式, 通过它的 api 来调用火山模型。那怎么调呢?我们看一下,这边是 chat open ai 啊,很关键一点,我们要指定一个 ul, 这个 ul 呢,定到 ark, 就是 这样一个 ul 啊,目前需要写死, 然后的话跟刚才一样,指定一个 api k, 指定一个 model 名称, api k 呢?我还是去读我的环境变量,而这个模型名称呢?模型名称我们还是来到后台这个地方, 比如说这个豆包一点八,我们点进去,然后往下翻,这边有一个调用时历。好,那这个时历里面的话,我们看到 这是那个模型名称,我们把这个字母串呢拷贝过来,拷贝过来粘贴在代码的这个地方。 ok, 这个是豆包一点八对应的完整的模型名称。那么同理你也可以额外的配置一下其他参数,我们呢就不再配置了, 所以这三个是 b 一 倍函数,然后返回 i r m。 好, 我们把这个模型替换一下,这一次我替换成 arc, 那 么再来运行一下,开始它也会很慢。这个是模型名称 啊,豆包呢,就比较诚实,他说我无法获得当前时间,让我去查手机,查电脑。而这个 deepx 呢,就很自信的告诉了一个错的时间,它也包含了其他信息, 比如说这个工具掉了哪些,然后用量啊?输入了五十一个透坑,然后返回的是一百零九个透坑,总共消耗是一百六十个透坑。 就说虽然你问的这个话是一模一样的,今天是几号,但是呢,不同的模型,它这个 token 的 计算方式是不一样的。 deepsea 认为我只输入了七个 token, 而这个豆包呢,它认为我输入了五十一个 token。 所以 你要衡量一下这边给出的免费使用额度,五十万个 token, 它可能并不是你想的那么多。然后其实我们还可以在运行时就调这个 inlook 的 时候来指定这一些参数,指这边我指定一个 config, 这边一个 dict 来一个 configurable, 它对应的 value 呢?又是一个 dict 的, 这里面我另外的指定一个 timeout, 超时时间 为三十吧。另外指定一个 temperature, 温度,比如说是一点五吧,一点五。好,就说当初我去创建模型时,我指定的超时呢是二十秒,温度是一点零, 这是跟这个模型绑定的。但是说对于某一次具体的 invoke 来说,我可以临时的再去换一个参数配置, 那么如果指定配置了,就以这里面的配置为准。如果 invoc 时没有指定相关配置的话,那么就以当初创建模型时指定的配置为准。 然后的话,我们也可以一次性的问大模型多个问题。那么在廊城内部呢,它可以开辟多个县城并行的去调用大模型, 因为我们知道大模型词调用很慢嘛,当你问题比较多时,你可以搞并行,这边我来演示一下。 好,假如说你有多个问题,这是一个 list messages 需要问的话,那么第一步跟刚才一样,先创建模型,然后呢,这边通过调 byte。 注意啊,刚才是调的 invoke 一个问题,现在多个问题的话,你需要通过调这个 byte, 哎,把这个问题列表 list 传递了,当然你也可以通过 config 来进行一些配置, 那么这种情况下,你这边传几个消息,他就会开几个县城。那假如说你传了一百个消息呢,他就要开一百个县城,那为了控制住这个最大的县城数目啊,你可以在这边加一个参数,是吧? max concurrence 最大的变化度嘛, 配置为五,那最多就只会开五个县城。先把前五个处理完,然后再接着处理后五个,这样逐步逐步地把这些个 messages 全部处理完, 那么对应的它返回的这个 responses 也是一个 list 嘛?这边呢,咱们把原始的问题和 response, 哎,通过 zip 把两个集合呢给拼起来, 打印出对应的问题和对应的答案。就这个 content, 因为我们只关心 content 这一部分嘛,后面的暂时不打印好。那么这边呢,我准备了三个问题, 让柄形地去掉大模型,看看效果,再来 pass 一下,好,打印 message, 这是原始的问题,打印 response content, 这个呢,它对应答案,这个是一个问题,这个是个答案,这个是一个问题,这个是对应答案。好,这节课呢,咱们就讲一些通过朗讯去调用各个大模型。

面试官问,你讲讲 long qing、 long flow 和 long graph 这三个看起来名字差不多的东西到底有啥区别?很多同学听到这可能心里就开始打鼓了,坏了,这三个我不都是混着用吗?不就是调接口的吗? 如果这时候你支支吾吾,那大概率就要被刷掉了。但这其实是一个非常好的展示你架构能力的机会。大家好,我是大鱼,来,我们往下滑。今天我带大家把这三个概念彻底捋清楚。好,大家看这张图,这三个东西其实在同一个生态里扮演了完全不同的角色。咱们一个一个来看。 首先看左边这个绿色的廊桥,大家想一想,我们在盖房子的时候,最重要的是什么?是砖头、水泥、钢筋? 当前就是那个地基和工具箱,它帮我们把大模型、向量、数据库、提示词这些零散的组建封装成了标准的接口。它的核心思维是链条,像流水线一样。第一步做什么?第二步做什么?是限行的。再看中间这个橙色的 loft。 有没有同学觉得写代码很枯燥,或者想给不懂技术的老板演示一下?这时候就轮到他出场了。 long flow 是 一个低代码入口,它其实就是给浪线穿了一层好看的衣服,你可以通过拖拽连线来画流程,它的定位是快,快速出原形,快速演示。最后呢,看右边这个紫色的 long graph, 这可是今天的重头戏。大家思考一个问题,如果你的业务逻辑特别复杂,不是简单的问一句答一句,而是需要机器人自己思考,自己纠错,甚至还需要几个人工智能互相吵架讨论呢, 普通的链条就搞不定了。 long graph 就是 为了造智能体而生的,它的核心不是链条,而是循环和状态,它让大模型拥有了像人一样的大脑回路。 那有的同学要问了,那我做项目到底选哪个呢?来看这一排场景对比,你就明白了。第一种情况,如果你只是做一个简单的文档问答,比如上传个 pdf, 然后问他第二张讲了什么,这种任务一条路走到黑就能完成,不需要回头,郎倩绝对是首选,简单直接。 第二种情况,如果你明天就要给客户做演示,或者你是江小白入门,不想写 python 代码,只想通过拖拽展示逻辑,那就用 lan flow。 第三种情况,重点来了,假设你要做一个全自动写代码助手,大家想一想,这个流程模型写了一段代码,运行代码呀,报错了。 这时候如果是普通的 lan key 会怎么样?他就停了,把报错甩给你。但如果是 lan graph 呢?他可以拿着这个报错信息,回头再去调用模型。 哥们儿刚才写错了,根据这个报错再改改,写代码,报错,修改再运行,这是一个循环。记住一句话,只要涉及到了循环和复杂的决策,无脑选 long graph, 面试官问到这里,其实只给你打了个六十分。如果你想拿高薪,必须得讲出点坑来。咱们来看看实际开发中会遇到哪些痛点, 以及怎么解决?看第一个痛点。 a, 现行逻辑无法回头。刚才我们说了,普通的链条是一条道走到黑的,怎么解决?也就是我们图上写的引入 edge 和条件分支。在 long graph 里,你可以写一个 if else, 如果模型觉得自己答得不好,就走重试那条路,如果答得好,就走结束那条路, 这就叫自我修正。再看痛点 b, 多智能体状态混乱想象一下,你有三个智能体,一个负责写代码,一个负责测试,一个负责写文档, 它们之间怎么传递信息?如果用传统的方法,传着传着,可能前面的话就丢了。解决方案是什么?大家看右边, global state schema 全局状态模式。 这就像我们在开会时,桌子中间放了一个共享记事本,不管谁说话都往这个本子上记。而且 long graph 有 个很厉害的机制叫 reducer, 它能保证信息是追加进去的,而不是把别人的话给覆盖掉。 最后痛点 c, 人机协同这个问题非常经典,假设你的机器人要帮用户转账或者发送一封很重要的邮件,你敢让它自动发吗?万一它发疯了怎么办?是不是得有个人点一下确认?但是在传统的代码里,程序跑起来就很难停下来。 long graph 怎么做?它引入了 check pointer, 它可以在发送邮件这一步之前,啪按个暂停键,程序把当前状态存到数据库里,然后这就挂起了,直到人类用户在前端点了一个,批准他读取刚才的存档,继续往下跑, 这就叫时光倒流和断点虚传。好了,讲了这么多,我们最后来个总结,以后做技术选型或者回答面试官,大家就把屏幕最下方这个公式刻在脑子里。在这个架构体系里, long chain 是 我们的手和脚,负责干脏活累活。 long graph 是 我们的大脑,负责思考、规划、记忆和决策, 所以一个真正的生产级应用,它的架构一定是 long chain 的 基础能力,加上 long graph 的 逻辑编排,等于解决复杂业务的 agent。 讲到这,大家对这三字的关系清晰了吗?好了,今天的分享就讲到这,大家点赞点关注,后期我会分享更精彩技术内容。

大家用小龙虾用 open curl 的 时候,有没有发现一个问题,它没有办法进行桌面 ui 的 操作,只能在这种浏览器界面进行操作或者收集信息。但是在国内跟国外不一样,比如说各个平台,它的操作都是非常闭塞的,比如说微信,你是没有办法进行操作或者执行的,但是我们的很多工作或者生活都是在微信上面, 你要做的话就完全没办法能够实用下来。所以说今天给大家分享两个项目,一个项目是这个 torx, 也是昨天我已经分享过的,今天给大家实测一下,它这个速度会比较慢啊,直接进行 u u i 操作, 我们直接让它,比如说之前我已经执行过一次,我直接再让它执行一次,它这个速度会非常的慢,因为它是 u i 界面操作的,后面我可能也会做一个开源的项目,看能不能解决这个问题, 把它有些固化的东西,能不能把它做成 r p a 的 方式,它的速度就会快很多。进行录屏操作,然后加 r p a, 加这种 ui agent 的 方式来解决这个问题。 今天就给大家演示一下怎么样能做这样一个,呃,能做 ui 界面操作就行了。再就是还有一个 agent, 我是 用的这个 agent s 啊,它是第三个版本,它在这种 ui 界面操作上面, os word 这个排行榜单,它是定义的水平,所以说我直接用的这个框架来使用的,我刚才用的就是这个框架,因为这个没办法支持这个 windows 的 操作,它是默认使用的这个 mac mac os 的 电脑, 所以说我没有用这个,这个跟这个是没有本质区别的,甚至这个它的商业或者说齐全度会更高,但是它会非常的轻便哈,它就是一个 c o i 的 方式,你可以让 cloud code 把它扒下来,然后写一个脚本,让它能正常执行。然后你再告诉 open curl 五,或者你直接让 open curl 五去先测试一下这个项目能跑通了之后,你再让 open curl 五把这个项目给它打包成一个 skills。 但是它有一些问题,就是我是用的这个 kimi k 二和这个通信千问三点五, 它这个东西还有点 bug, 就是 kimi k 二它是零到一的,这个做了缩放的一个定位,比如说它这个幺零八零乘幺九二这个呃幺九二零的像素,但是它输出的不是具体的像素点,而是一个压缩了的,所以说这里还是有一些坑,大家可以稍微微改一下, 会更加准确啊。这个用 open curl 或者说 cloud code 改可能会更加好一点,然后 给大家看一下,然后你让它打包成 skills, 加载到你的 open curl 里面就可以了。 ok, 我 们来看一下它执行的过程。 ok, 它已经点到这了,还正在输入了已经。它的速度确实是很慢,因为它要有非常多操作,首先它要 去截图了之后点哪一个他也去,点了之后又要截图,又要上传,上传了之后又要看一下是否下一步应该做什么操作。而且他的这个框架或者这两个框架他都是两个模型,一个规划模型,一个执行模型,所以说他速度会慢到离谱。而且我们这个是云端的模型, 一个这样的截图下来大概是一兆多,所以说你上传云端也需要时间,他理解又需要时间,所以说就非常的久。 但是我想了一个这个解决方案啊,用的 r p a 的 方式,后面如果成功的话给大家做开源,大家也可以关注一下。可以关注一下我啊,可以看到他已经发出去了,下面应该他会有回复了,等一会他应该就可以回复了。 其实本质上就是你先把这个骑起来,可以跑了,这个脚本可以跑了之后你就把它放在这个 open curl 里面,然后你让 open curl 去配一下就行了。 那你用 cloud code 去配 open curl 也好,还是用这个 open curl 去配 open curl 也好,两个都是可以的,但是最好有两个把它分开,一个坏了,你还能用另外一个去修复一下。所以说这个东西还是有点问题,可以看到结果已经执行完成,约二点五分钟就发了一个, 呃,给我女朋友发了一个,爱你哦,呵呵,就大概是这样的操作,其实他的这个能力还是非常强哈,他 kimi k 二的这个能力都非常强。在 osword, 他 kimi k 二是拿到了 soata 的 水平的,我们可以看一下他这个评测的能力,他用这个基准 是能达到人类的平均水平的。七十二,如果用现在更好的模型的话,应该是比七十二差不多吧,应该还要少一点,因为他这个是多次实验的,他是另外一个版本,但是是要高于这些其他的一些版本模型的。 但是它是用了两个模型啊,一个是呃规划模型,一个是执行模型。但是像现在 kimi k 二它的性能非常好的情况下,你可以让 cloud code 给你改一下,把它改成统一用一个模型,它就没有办,没有必要去两个模型再错切换了。 还有就是它那个模小的执行模型,它默认使用的本地模型,你统一让它用一个模型就可以了。 ok, 这个就是今天的一个分享。

我今天抖音上看到有博主搞了一个这个龙虾的一个 ui, 可以 使用启动中停止重启,诊断问题, ai 的 配置,当年我用的是迷你 max, 二点五 包月,四十九块钱一个月,然后信息渠道我配置的是飞书,一目了然,真的全中文,一目了然,飞书,哎,我看微信,钉钉 这都有,然后诊断诊断的问题,应用日制有什么问题?怎么样设置里面你看称呼 好强呀,然后我这怎么弄的呢?其实特别简单,当时看到博主做的时候,我就直接打开我的这个, 专门做这个软件,我不知道叫什么名字,我是个纯小白,然后我就直接跟他说,我说我要做一个这种格式的东西,把那网址扔进去,然后全程我只用点啊,问这什么东西,他告诉我这是一个 openclo 的 一个 界面,然后就你安装最新版本吧,然后他就开始一步一步安装,真的就好就好简单。现在装龙虾也是,之前我装龙虾需要三个点,三个小时, 现在我只要半个小时不到,我只要告诉他我要抓龙虾,然后我全程坐在旁边点点点,然后就好了。以至于现在我作为一个 u i 的 app, 我 通过既然打开龙虾我都不用网页什么的,我就在我这个这个 app 里面点开,哎, 一点就搞定了。

大家好,本节课呢,我们再来一起了解一下浪秤响应的流逝输出。我们之前已经了解了如何通过浪秤来创建一个大语言模型应用, 我们在去使用的时候,直接将我们的需求发送给模型,这个模型会根据我们的需求生成对应的响应结果,而这个响应结果呢,往往是有两种情况,第一种情况呢,就是内容比较长, 那如果说啊,他根据我们的需求响应的内容比较短的话,那么这时候呢,我们就会发现这个结果很快的就给我们输出到了这个页面或者是控制台, ok 吧?那么这时候如果说对于用户来说的话,那么他相对来说呢,体验是比较不错的,因为很快的就能得到这个答案吗?对不对?但是如果说他响应的内容啊,比较长的时候, 那么这时候的话呢,我们就会发现啊,他给我们响应的这个时长就比较长了,你就比如说当我们发送过需求以后,他可能会要求我们等待五秒或者是十秒甚至更长时间,比如说二十秒,或者说三十秒,或者是一分钟都有可能,对吧?好,但是的话,你会发现 他等归等,那么我这个程序呢,他是没有给用户的任何回馈的,那没有给用户任何回馈,那么这时候用户呢,就会感觉到,那这个程序太慢了,我不就问一个问题吗?你半天都不给我响应,对不对?就给人给人一种感觉,爱答不理的那种感觉一样了,对不对?所以说的话呢,这个用户体验就不太友好了。 好,那面对这样一个情况,那么怎样才能提高这个用户体验呢?那么这时候啊,我们就可以考虑使用一个技术,这个技术呢就是咱们要聊的这个流势输出啊,所以说本节课呢,我们要去掌握的一个点就是知道如何使用这个流势输出就可以了, ok 吧? 好,那么接下来呢,我们再来一起看一下啊,那在这的话呢,写了这么一个简单的一个介绍啊,就是介绍这个流势输出到底是什么东西呢?那么我们一块快速的过一下吧。 这个流式输出的话呢,指的是用户在输入问题以后, ai 模型呢,是边生成边显示响应的内容,然后逐步的展示 ai 的 思考过程,而不是等待所有的内容生成完毕以后,再一次性的返回完整的答案。 那么我们之前在编辑代码的时候,是不是就这样的,就是当他把内容全都生成完了以后,然后再一次性的返回,这样的话呢,就会导致用户给我们就是等待的时间过长吗?对不对?现在的话呢,我们就可以什么呀?用流式输出了,他可以一点一点的,什么呀,就是边生成边去响应内容, ok 吧?好,那么知道这个意思以后,然后在这的话呢,我还做了这么一个表格啊,那么我们来看一下这个对比,那么按照我们原来这个编辑的方式的话呢,咱们用的是普通输出,也就是非流式的, 那么它的特点是这样子的,当用户发送完这个问题以后,那么只需要等待几秒,然后呢?哎,一次性的将所有的结果 完整的给我们返回过来,当然这这个几秒的话呢,是因为需求比较简单,如果说需求比较复杂的话,就可能几十秒或者说更长的时间了, ok 吧?重点是什么呀?就是这个等待的时间是一个什么呀?是一个比较 长的时间啊,你说他在等待的这个过程中,用户是得不到任何的响应的,你只能等, ok 吧?好,那么再就是流式输出, 流式输出的话呢,就是当用户提完问题以后,那么这个 ai 的 话呢,他会立马啊,就是就会在很短的时间内就给予用户啊想象的一个响应了, 那么 ai 想到哪了,他就会在这个控制台,或者是在我们的页面上就是输出到哪,那就是就输出到哪啊,他比如说他想到了一个一二三好,那么他就会把一二三给我们写出来, 后来他又想到了四五六好,那么他就紧接着就把四五六给我们输出出来,是这样一个意思, ok 吧?那么也就说他会逐步的把这个答案给我们进行输出,所以说的话呢,当用户看到这样一个效果了以后,就会感觉到,哎,这个程序呢,感觉还行,对不对? 毕竟什么呀,问了问题以后,他会一点一点的再去往外去输出嘛?那么用户呢,也可以一点一点的去观察这个响应,这个结果,对吧?好,那么这是这块啊,成,那么这了解完了以后的话呢,那么我们对于这个流失输出呢,大概有什么功能?心里呢?也基本上有这么一个,有这么一个思路了,对不对?好,那么接下来的话呢,我们再来看一下这个代码怎么去实现, 这个代码实现的话呢,也相对来说比较简单啊,其实说白了就是几行代码的事啊,那所以说的话呢,我们就直接展示看效果就可以了。 好,那么我们就打开咱们这个编辑代码的工具啊,那编辑代码工具的话呢,在这啊,我们这已经提前写好了一个,就是咱们写的这个练式调用,对不对?那么上面的话呢,咱们还有这个什么这个模板呢?还有这个输出解析啊,那就都在这个 long chain 关键对象里边,那么我们就直接在这后边进行补充就可以了。好吧, 好,那么补充的话呢,这样啊,我就把这个练习调用,我们再给它复制一份,再给它复制一份。好,那么复制一份过来以后的话呢,那么在这里边我这儿就写上一个,再给它加上一个吧,这写上一个东西叫做流势输出啊, 流势输出好,那么有它以后的话呢,然后我们看下这底下这个内容, 你像这个内容的话呢,其实我们之前呢去写的时候,无非就是什么呢?就是做了一个啊输出的这个模板,然后的话呢定义了这个题词的模板,然后后边的话呢我们再去做这个练式的去调用。练式调用的话呢,我们这就是这两行代码嘛,就这两行就是这就定义这个练式,然后后边的话呢进行运行,对不对?这是咱们这个之前的写法, 那么现在的话呢,我们再去输出的时候,我们可以看一下啊,我们再去输出的时候,你会发现他这一直让我们去等,为什么在这等呢?因为这个模型在等,等在什么?在生成这个结果, 所以说的话呢,我们要等一段时间,等了三秒多,看吗?这是目前啊,我这个机器是用的三秒多,那么咱们各位小伙伴呢,可能会用不同的时间,但是这个东西不重要,重要是什么?就是我们等了三秒以后,这个结果才能一次性输出,这样的话就是你想到哪了,那你给我输出到哪? 好,那么这时候怎么做呢?那么这时候的话呢,我们直接啊就是换一个方法就可以了,那换哪个方法呢?我们就把这个这儿可以看到这儿,咱们是通过这个链调用的什么呀?调用的 evoc 对 不对?调用这个 evoc 的 话呢,我们现在不用它了,这个是相当于什么?是一次性的跟我们进行响应,那么我在这的话呢,给它改成叫什么叫做 stream, 点着它,那这样的话呢,我们就相当于是得到了一个留啊,得到一个留好,那么当我们得到一个留了以后是什么意思呢?我们就可以把它理解为就是这个输出的结果呢?它是一个文章啊,或者是一个长段一段长的文字, 这个文字的话他并不是一个一次性全都跟我们响应,比如他会一点一点的给我们进行什么呀?读取,读取了以后呢,然后再给我们去进行相的一个获取,是这样的好,那么正因为他是一点一点的去写的,所以说的话呢,在这我们就可以这么去写了,写个负循环,这给他,给他写上一个叫做,嗯, c h u n k u k 吧,这个东西 就是这个块,那么也就说我们顺便从这里边一点一点的去获取数据,那么获取到这个数据以后的话呢,在这我们给他进行像那个打印,打印这个结果就可以了。那么打印这个结果的话呢,我们在这啊,因为他这个内容有可能啊,就是一段一段话,那你就比如说这这一句话,这一句话呢,他可能一开始只生成了这点, 那么后边的话呢,还会紧跟一些像内容进行输出,那也就说这段时间来说的话,就是他会被拆分成多块,那么所以说的话呢,在这我们就什么呀? print 的 时候,你要记得不要让他自动换行 啊,因为他一自动换行了以后,他有可能什么呀?就是勾股,然后后边第二行定里,然后是然后后边一个,然后关于等等,他就这样就不太友好了,那因此的话呢,我们就为了避免他不必要的换行,我们就在这呢给他加上一个 end, 这个 n 的 话呢,就是相当是不让它自动换行了,好吧?然后再其次就是 flash, 那 就是 flash 这个东西呢,代表什么意思?就是,嗯,那个内容的话呢,我们 print 打印的时候让它及时的打印,也说你即即使有一个字母,那你也给我打出来,是这个意思, ok 吧?好,那么这儿搞定了以后的话呢,关于咱们这儿这个东西啊,咱们基本上就是, 嗯,就是流逝这块基本上就算是搞定了, 好,那现在的话呢,我们看这个结构应该是比较清晰了吧,无非就什么呀,就是我们通过这个 stream 这个方法获得了这个啊,连续响应的这么一个东西,那么连续响应的话呢,咱们通过复制进行调用,它就可以在这跟我们进行输出, ok 吧? 好,那么除这以外的话呢,那么我们也可以考虑啊,在这的话呢,给他把这个所有的结果呢,都给它存储一下,给它一个列表啊,那么也就说你当拿到一部分东西呢,都给它存储一下,这个意思, ok 吧?好,那这的话呢,就是就是 输出存储这个存储输出,那在这的话呢就是,嗯,存储存储每每一次, 每次的这个输出结果, ok 吧?好,那么这搞定以后来接下来的话呢,我们来去运行一下啊,看看这个效果是这样子的吗? 好,那么当我们运行以后,然后我们会发现可以看到这的话呢,他是依然去是,就是很,还是等很长时间一次性给我们进行输出的,对不对?那好像给我们的感觉就是没有这个流逝的问题,这个流逝这个输出的话呢,是在这的话呢,我们要注意点这个东西啊,他实际上这的话呢,要跟这个输出 解析器这个东西主要是他的原因, ok 吧?那为什么是是他的原因呢?是因为我们有了这个输出解析器以后,那么他会什么呀?他会将完整的这个结果,将这个完整的结果拿到以后,然后把它封装成对象, 然后呢再进行输出,对不对?但是如果你想想他都拿到了完整的结果了,那么我们理论上来说的话,我是不是就可以直接输出到控制台, 对不对?只是说什么样?你现在拿到封装去了,对吧?那么好,那么问题是咱们说了这个流逝输出它能节省什么时间?它是节省什么呀?就是 ai 模型再去想的时候,你再去思考的时候, 那你把思考的内容,你一点一点给我输出出来,对不对?但现在的话呢?你思考这个过程,现在呢?我们已经不在意了,我们在意的什么?就是你把结果记得给我格式化一下,对不对?因此的话就看不到这个效果了。好,那么面对这样一个情况怎么办呢?那么我们把这个东西,比如说我把这个输出这个结果给它干掉, 给它干掉以后,然后现在什么这个链里边已经没有这个输出结果这个东西了,对不对?好,然后我们再去运行,你就会发现,这时候你看这个内容看到吗?它是在一点一点的,我们去添加的, 一点一点添加的,这就是什么呀?这就是它的一个进行的相应的一个输出。那有小伙伴可能就想了,说,那这个东西我也看不懂了,对不对?好,那么是因为什么呀?因为我们打印的是这个是一个对象,我要它里边内容 啊,是一个它那个,它打印出来是一个 amessage 嘛,对不对?那么我现在就直接打印它对象嘛,打打印它里边那个值嘛?好,那么这时候我们再去运行,你会发现 看到吗?这时候我们就会发现它这个内容就是明显的就是一点一点的往里边往外进行输出嘛,所以说的话呢,这时候就是比较友好了, ok 吧?好,那么这是这块啊,成,那么这了解了以后的话呢?关于咱们这个啊,如何使用这个流逝输出,大概基本上已经明白了,无非就是什么呢?就是原来以 log 呢?换成什么呀?换成 stream, 然后呢?我们通过循环的方式进行相应的一个输出,这样子的, ok 吧?好,那么这是这块啊。

一天学一个变态的大模型知识点,今天讲的是来看从入门到精通。 哈喽大家好,欢迎来到浪铲实战课程啊,那这个课程呢,是基于 deepsea 这个大模型来给大家讲解浪铲这个 框架以及一个项目实战。那咱们浪铲的版本呢,是基于零点三的这个最新的版本,那在浪铲这个课程里面会给大家介绍到这些方面。首先第一个是浪铲的一个快速入门, 那在这里面会给大家把 longchain 的 整体啊,全都给大家过一遍,比如说 longchain 的 一个基本使用,提示模板输出的一个解释器,以及我们怎么用这个向量存储,以及一个简单的 ig 实现,还有我们的 agent 代理的一个基本使用。 那我们在第二个模块的话,就是 longchain 的 一个 model io, 那 这一部分呢,总共分为三个大的模块,就是提示模板,我们的 model 模型以及输出解释器啊。那在第三个 章节呢,我们回家讲到 log 键的链啊,首先第一个就是一个 log 里面链的一个基本使用,以及链的调用方式,还有我们 log 键中啊,内置的常见的一些链的使用。 那接下来呢,我们回家讲到这个 log 键的实现的一个 r g 啊,这是一个简单的 r g, 没有经过任何的优化。那这里面回家讲到文档的加载,对吧?我们怎么加载本地的,怎么加载这个在线的?然后呢,文档的切割文本,向量化的模型啊,以及向量存储,还有我们的这个 retwo 解锁器。 那接下来我会给大家讲到 luncheon 里面的一个 agent 代理, agent 的 一个基本使用啊,我们的 openai function agent 以及这个 react agent 啊,这个是咱们呃 agent, 也就是智能机里面用的比较多的一种这个框架。 然后接下来就是 longchain 的 这个工具啊,那在这个工具里面,我们会给大家讲到 longchain 的 一个工具的一个初步认识,以及更多的工具的使用。那接下来的话就是 longchain 里面的这个 memo 的 记忆管理,那在这一块会给大家讲到两方面,第一个就是最基础的记忆管理方法, 然后再会给大家讲到更高级更灵活的记忆管理,那把这些所有的模块给大家讲完之后呢,我们会通过一个 luncheon 的 项目实战啊,来给大家把所有的知识点呢,给大家穿插起来,也会给大家做一个项目实战啊,那这个课程呢,就是我们啊整体的一个知识点的一个架构。 那我们接下来正式的进入到 luncheon 的 一个框架的学习啊,那我们在讲课的时候用的是这个主比特,然后也给大家准备了这个 pdf 的 一个课件啊,大家可以方便课后去看, 然后当然推荐大家用这个注册这个方式,那我们进来看一下快速这个初识 luncheon 的 一个快速入门。那 luncheon 呢?首先它是一个框架啊,主要就是用来做咱们这个大模型这个应用, 那它的好处就是什么呢?我们用这个框架啊,它本身提供了一系列的工具套件以及接口,那可以让咱们的开发者啊使用语言模型来实现各种各样的任务,比如说文本啊,到图像的一个生成文档回答,聊天机器人等等啊,但是我们现在可能用这个 luncheon 做的比较多的, 还是啊这个基于文档的回答以及聊天机器人啊这些应用,对不对?那下面给大家看一个它的一个官网啊,这是 long chain 的 一个官网,然后它官网上这里都是英文的,对吧?大家如果说英文不太好的话,这里面也不需要担心啊 啊,这里面有一个中文的这个一个文档啊,然后它基本上就是照着翻译过来的,而且它的版本呢,也更新到了最新的一个版本,所以说啊,大家如果英文不是特别好的话,可以去看一看这个中文的啊,它基本上就是照着官网去原版不动的翻译下来的, 你看大家看这里旁边基本上都是一模一样的。好吧,那我们接下来借用这个官网里面的这句话啊,来看一下这到底是个什么东西,我们来看这里啊 啊,这个大家如果说看一些啊,想看这个英文的,但是又看的不是特别懂的话,然后大家可以下载一个浏览器的一个插件啊,叫这个沉浸式翻译啊, 你看 lunchin 是 一个什么东西对不对?一个简称 lunchin 是 一个用于开发单元模型驱动的应用程序的一个框架,咱们用框架的好处就是人家给咱们开发写好了,对吧?而且 lunchin 简化了大模型应用的生命周期的各个阶段啊, 比如说什么开发阶段对不对?生产阶段,部署阶段啊,这三个阶段其实都需要我们去完成对不对?那开发阶段的话,我们使用浪线的开源的构建, 这个组建对不对啊?来开发咱们的应用程序,利用第三方执行和这个模板可以快速的开发出来。那生产阶段我们使用这个 lsmith 可以 去检查评估啊 啊,监控您的链儿,包括我们的提示词对不对?然后最后部署啊,最后部署的话,我们可以使用这个 lasso 将咱们的任何的链儿呢转化为一个 api 啊,就是咱们现在做的项目的话,一般可能都是前后段分离的对不对?那我们用 lasso 的 话,可以把这个链儿转成 api 的 一个形式啊。 那接下来的话,我们来看一下 lasso 里面的核心组件儿,它的核心组件儿的话一共有这么大概六个,第一个就是咱们的提示模板,第三个是咱们的数据解锁, 第四个是这个记忆 memory 啊,第五个就是链,第六个就是 agent。 大家先对这些核心组件有一个简单的印象就可以,等我们把这些所有的都讲完啊,然后大家回来再看。哎,这个时候大家就会啊,知道 luncheon 里面的核心组件总共有哪些,然后它分别是干什么的, 咱们现在分别跟大家说,比如说模型干什么的啊,铁木板是干什么的,对吧?大家可能现在也是有点模糊啊,但是这个基本上如果大家之前接触过大模型的话, 这个模型啊,其实包括提示模板,这个两个大应该不陌生啊,但是对于后面的,比如说数据剪辑呀,记忆啊,链啊,或者或者咱们那个 agent 啊,这个可能不是特别的一个熟悉是吧? 这个没关系,我们后面呢都会给大家一一的讲解到啊,包括它里面封装的一些这个模块啊,比如说模型 i o 的 一个封装,它包括什么代码? model, prompt、 output, password 啊,这个输出解析 对不对?以及这个 retou 啊,就是我们的一个向量解锁,是吧?它包含了什么模块啊?这些模块呢?我们后面都讲,都会给大家讲到,大家先有一个眼熟就可以,对不对?比如说 retou, 咱们的向量解锁, document loader 是 我们的啊,各种各样的文档的一个文件的一个加载器,比如说我们要加载 pdf 的 啊,加载 word 啊,加载这个 macdunk 啊等等。然后接下来的话就是咱们的 imagine model 啊,这个大家看到这个东西就知道它肯定是为了 r g 做准备的,对不对?包括这个向量存储啊, vitry story 啊,就是向量的一个存储,还有最后一个对文档的一个日常操作啊,比如说我们要切割呀,对不对? 然后最后啊,它的一个模块里面还有什么?还有咱们的 agent, agent 的 话就是一个智能体,对不对?但如果说之前接触方式拷定的啊,就是咱们 agent 中的一部分啊,它要为了实现某些,对吧? 比如说它可以调用外部功能的函数啊,谷歌搜索呀,对不对啊?文件 i o 啊,查天气啊啊等等等等。那这个它是怎么实现呢?大家可以简单理解,就是通过那个防身 call 用来实现,然后下面是它的开源的 code 组成啊,比如说 lanchang code, lanchang communication 啊,这个 这个我的发音不是特别标准啊,但是然后大家知道啊,这是个什么东西就可以,然后包括 lanchang, graph, lan solo, lan smith, 对 吧?可能我们在开发阶段用的比较多的其实是上面几个 啊,上面几个 luster 和 lsmith 的 话,是这个项目开完成之后,咱们要部署的时候才会用到。那上面给大家简单介绍了一下 lunch 这个模块,以及它里面的一些这个开源库,还有这个啊, 它的核心组件。那我们接下来看一下 lunch 的 我们要用的版本到底是哪个呢?啊?就是我们要指定它去安装的一个版本啊,就是我们通过 pip install lunch, 大家去安装这个零点三点七这个版本,然后后面这是什么意思啊?后面其实是换源啊,大家如果不换源的话,可能安装会比较慢。 然后还有一个版本,我们要去指定的就是这个 p i p install launch open i 啊,零点二点三,然后大家也去指定一下这个版本的去安装,那为什么要指定这个呢?这个其实是,呃,并不是 launch 最新的一个版本啊,它它我指的最新的是什么? 不是这个零点三除了零点四,而是什么?而是它后面的一个小版本,对吧?比如说零点三点八,零点三点九,零点三点一几,对吧?它现在后面的小版本呢,其实是不断在更新的,但是 啊,没有说从 longchain 零点二更新到零点三,零点三更新到零点四,现在零点四还没有出来这个最新的版本呢,大的版本呢,就是零点三,所以说我们用零点三这个版本来给大家讲,好吧, 那这个呢,就是啊 longchain 的 一个基本介绍,我们接下来看一下 longchain 的 一个基本使用,我们通过 longchain 来调用 openai 来进行对话,当然这个 openai 的 话,它其实内部啊,我们可以调用的模型是比较多的,包括这个国内的 deepsea, 我们先来导入这个模块啊,然后这个呢是加载咱们的点 e v 文件啊,咱们的点 e v 文件里面存了很多的这个 key, 对 吧?然后这个呢就是 chat open i, 我 们要进行对话,对吧?大家不要看它的名字叫 chat open i 啊,是不是只能调用这个 open i 的 然后一些这个 模型啊?其实并不是,接下来我给大家看一下怎么去调用咱们国内的 deepsea 的 一个 key 啊,这个 key 呢,现在在官网去申请就可以了,但是现在基本已经停了啊, 他现在也已经不让充值了,所以说大家现在应该申请不到了,但是大家可以通过其他的平台啊,比如说手速流量 api 对 不对? bc l 然后 k 这个 k 呢,大家现在应该申请不到了,就是因为他不能充值,不能充值的话,嗯,我们是没有办法去用的,对吧? 但是我们可以看一下代码,可以看一下它的代码,首先第一个就是它的一个 k, 然后第二就是它的倍速 l, 所以 说这个相对来说其实是比较简单的,我们只需要拿到它的 k, 把这个 k 呢写到哪里?写到这个点 e n 文件里面,然后接下来呢就可以把它获取到,获取到之后我们的模型啊, model 的 话,这里面指定啊叫 这个 deep secret 啊,它它的模型名字不叫阿姨,大家要注意啊,我们通过代码调用的时候,它的模型名字啊,不叫阿姨, 它现在的模型就是那个 chat 叫 v 三,然后它的推理模型呢?叫什么?叫这个 r 一 的模型啊?咱们在通过代码在调用的时候,它其实叫这个东西,所以说大家在用的,在这里面写模型名字的时候,不要写 deepsea 跟 deepsea 啊,这个它的模型名字是这个, 然后接下来 open ikey 的 话就是这个,然后贝斯源呢,也换成这个 deepsea。 那 接下来的话,我们这个模型在 long chat 里面啊,就相当于 更换完成了。如果说大家不写这里面的东西的话,他默认的话用的是这个 g p c 三点五,当然我们也可以用 g p c, 其他的比如说 g p 四四 o 啊,都可以,大家在这里面去直接去换就可以了,然后我们要去调用,对吧?那通过什么方法呢?通过这个 in google 啊,问他什么是大模型,对吧?然后打印这个 response, 然后这面打印了五十个等线,然后又把他的内容取出来,那大家看这个是他的直接的返回啊,这是他直接的一个返回,好吧,他基本上返回都是用 markdown 的 这种格式,然后呢?这是他的 content 取出来了, 看没有 content 取出来,对不对?大模型啊,是什么?然后大模型的核心特点举例,对吧?然后应用场景啊,什么挑战正义,然后未来方向,这个所有的他基本上都给你列出来了,看到没? 这个就是这个 i e 推理模型。但是如果说咱们换成什么,呃,咱们换成这个 oki 的, 他可能回复就没有那么多了,而且他可能并不,他可能回答啊都不是特别的准确,可能 那如果说我们要用这个 open i 的 话,可能我们我们就把这两行代码分开,因为我们要用这个代理,对吧?然后大模型通常指的是啊,深度学习吧啦吧一堆啊,大模型指的对不对?这个回答照 deepsea 的 回答可能就稍微差点,然后当然我们也可以去换模型,对吧?在这里面指定模型就可以了,比如说把它的 model name 指定是指定为这个 gpt 四啊, 这时候我们再来看它这个回答,可能就会比这个默认的 g p 三点五要好一点。这里如果大家什么都不写的话,它默认就是这个 g p 三点五,当然大家在那个点英文文件里面写上它家的 k 和 bc l, 这个我在我的点英文文件里面其实是有的, 然后这里啊继续学习,对吧?答模型通常是指,是不是啊?这个回答相比刚才三点五那个回答呢?可能就更准确一些, 对吧?这个是单轮对话的一个,咱们调用 deepsea 的 这个模型啊,因为大家可能现在这个 deepsea 现在调用不了,对不对?然后我们剩下的啊,咱们用这个大家可以自己去换啊,咱们课堂上用什么用这个 t v t 啊,或者说用这个 deepsea 都可以, 那这里面默认的话就是三点五杠 turbo, 那 咱们刚才进行的是这个单轮的对话,对吧?那其实我们也可以进行多轮对话的一个封装,首先还是先导入,然后来实例啊,里面什么都不写,默认就是这个三点五, 然后从这个,从 lancan 这个模块里面导入什么?导入 ai message human system, 这个其实相当于啊,如果大家之前学过 open ai 的 话,相当于这个 open ai 里面的 assistant user system, 对不对?像那个角色,对吧?那我们的 message 的 话就可以封装啊,比如说 sitter 木封装,你是这个于老师的个人助理,你叫小木,对吧?然后黑幽默呢?就叫我叫同学小张,是不是?然后这个又说了一句啊,你是谁?是不是?问他你是谁,对吧?那没那个我们正常的回答应该是什么? 应该什么?这个你是对不对? saturn, saturn 相当于什么?相当我们给这个 ai 附了一个角色,对吧?那我们现在在问你的话,你其实是指的应该是那个 ai 的, 对不对? saturn 这个 user, 所以 说他的回答应该是个人助理,叫小木,对吧? 啊?这个时候我们来运行看一下正常的回答,对吧?你看我是于老师这个个人助理,对吧?有什么可以帮助到你?那这个呢?就是一个啊, launch and 的 一个对话啊,它的一个单轮对话和多轮对话的一个简单的一个基本使用啊。 我们接下来看一下 launchchain 里面的一个提示模板的一个使用啊。首先我们要从这个 launchchain 点 code, 点 prompt, 然后导入一个叫 chat prompt timet 这么一个啊模块,然后我们要用的话 怎么用呢? chat prompt timet, 然后,然后 from message 这里面的话我们可以去传啊,传一个这个源组,那第一个呢,就是 system, 也就是它的一个角色,我们定义给这个 咱们的一个 ai 的 一个角色,比如说告诉他你是一个世界级的文档编写者,然后这个 user 呢?就是我们啊,我们自己输入的, 对吧?用户输入的,然后这里我们可以打印一下这个 prompt, 那 接下来的话,其实我们要把这个提示词发给谁?发给咱们的大模型啊?怎么发呢? 在浪差里面有这种操作,叫练式操作,什么意思啊?就是把它处理啊,经一个竖线,然后呢交给大模型,这个大家怎么理解啊?如果大家学过内个词的话,其实应该见过,这叫管道服, 比如说在 list 里面它有命令。 ps, aux 对 不对?查看现在所有进程,但是我不想查看那么多,我只想查看什么?查看 register 进程,那大家就在中间可以加上一个竖线,就起到什么?起到一个传递的作用,就是把它处理的结果传给他, 对吧? ps, a o s, 查看所有进程,但是我想在这些所有进程里面过滤出来,过滤出来是吗? reddit, 所以 说就把所有进程交给这个命令,然后再去处理一下,那其实在 longchain 里面也是差不多的,我们写好的这个提示词,对吧? from message 啊,这个,当然这是其中的一种用法,我们这个提示模板也不止这一种,我们现在是一个给大家把 longchain 里面所有的指点啊,先给大家快速过一遍, 这个练式调用的话,我们后面也会给大家详细讲解,也就是把这个题模板交给大模型,对不对?但是有一个变量没有什么还没有传啊,有时候用户输入的还没有传,那这时候怎么办呢?我们可以通过嵌件 excel 格式去调用,然后呢在这里面写 input, 对 不对?把我们的问题写上啊?什么是大模型?那这时候我们来运行一下, 上面就是它的一个提示模板,看到没有?上面提示模板,这个是我们要输入的一个变量 input, 然后 input 这个 type 啊,剩下的基本上 message 里面,呃没有什么东西,对不对? message 里面唯一一个就是 system 嘛, system message, 然后这块 time 就是 您是一个世界级的文档,对吧? 那这个接下来是他的一个回复啊,接下来其实就是他的一个回复了,比如说 content 大 模型指的是指的什么东西?然后后面,呃,但如果说你只想你只想去获取内容的话,直接也可以点 content, 对 吧?如果说你想看的比较全,他这个里面什么都有,比如说 我们的总共的头肯是多少,对不对啊? prom 的 头肯是多少?总共的头肯是多少,是不是?然后它用的模型的名字是哪一个啊?它这个 user 啊,这里面它每个其实都有记录,所以说如果说大家想看到比较全的信息的话,可以直接这样,如果说你不想看到的话,直接点 ctrl 把它取出来就可以了。 那这个就是 lanchen 的 其实模板的一个基本使用啊。那我们接下来再来看一下这个输出显示器啊,这个输出显示器的话,其实就是控制咱们 lanchen 的 一个输出,好吧,那我们来看一下它具体是怎么来控制这个输出的,那上面还是一样的,我们要去导入,对吧?这里面还是从这个 lanchen 点 lanchen 下弦扣的 来导入这个 output pass 里面有 string 啊, jess 啊等等啊,然后我们具体讲到这个输出显示器的时候,会给大家每一种都介绍一下, 那最开始还是一样,我们要来抽象这个模型啊,默认还是三点五,大家如果想要 type c 的 话就换成 type c, 咱们在之前的视频里面也都跟大家讲过,那接下来的话,我们就要创建一个文档,对吧? type prompt, 然后第二行 message, 那 这里 system 给它定义的就是你是一个啊,擅长编辑技术文档,对吧? 其实我们可以让他做一个什么,作为开发者,是不是啊?你是一个擅长编辑技术文档的一个开发者,或者说产品经历啊等等,这个角色呢?大家可以自己定义,对吧?根据大家的一个需求,然后这个 user 呢?同样是音库的,这是我们用户要输入的一个问题,对吧?比如说我们要去问他啊,这个 launch 是 什么呀?对不对?大模型是什么呀? 然后接下来的话,我们听一个输出解释器啊,这个输出解释器是一个叫词顺啊,叫 putpasser, 也就是说我们最终想让 lange 输出的一个结果呢?是一个字串,对吧?那我们怎么把这个啊,这个输出解释器和这个 lange 最终那个输出把它结合在一起来呢?就是通过我们这个链,对吧? 我们的这个 prompt 啊,模板,对吧?要传给大模型,对不对?那大模型现在有了回复,有了回复之后呢,我还要经过输出解释器的一个处理,就是相当于什么?相当于一层一层,像那个啊,像那个生产的链一样, 对不对?咱们这个工厂里面是不是有那个链,对吧?第一个工人组装一下,第二工人组装一下,第三工人再组装一个,对吧?最终呢把这个成品呢给它拼接起来,对不对?给它组装完成,那这个链呢?其实跟这个就非常的像我们的 problem 的 创意大模型,对不对?大模型处理完成之后,哎,我最终的一个输出是要输出成一个租串,对吧? 那我们来看下浪欠,然后这个欠点一维口啊,这个还是问他这个浪欠是什么?那我们来看他的一个输出到底有什么不一样的一个地方, 哎,大家发现两千,对不对?这是他的一个回复啊,他的回复现在其实就是一个字母串,那有人说这里面和我们之前其实没什么区别,对吧?那如果说我们把它去掉,大家就能看到区别了, 我们刚才这个回复就是什么?就是一个纯字母串,那你像现在他是不是有 amessage, 对 不对?是不是有这么多的信息,对吧?如果说你不想要这么多信息,你也不想自己去取的话,其实我们可以通过一个叫输出解器,直接扣上它的一个输出啊,这种是比较方便, 那包括我们也可以,比如说让它输出一个 json 啊,但是如果说是一个 json 的 话,那我们的音符其实也要变,也就是说我们的回复啊,我们的回复的时候就要指定大模型回复一个 json 呢,对不对?如果说你本身回复的还是像这种 啊,正常的一个字串的话,那我是没有办法把字串啊,是没有办法它这个输出解释器是没有的话,把字串直接变成 json 的, 所以说如果说我们想让它输出是一个 json 的 话,那你必须要告诉它, 那最终呢?你的输出呢?是要用 json 格式进行回复的,那这个时候我再用什么?再用这个 json output password 来处理一下,对不对?那我们先来看一下这个效果, 然后前面问题用 question 回答,用 answer, 这个大家可以指定也可以不指定,不指定的话它就默认,对不对?那 你看我们看指定了 k 之后的话,开头就是 lancashire 是 什么,对吧?然后这是他的回答,那有时候说我都用 jason 回复了,对吧?我都指定用 jason 回复了,那这里你这个 autoplaster 是 不是没有什么用啊?对吧?我们来看一下区别啊,看一下区别 就是我们让他用 json 回复,看到了吗?他其实回复的是不是 json 格式?是的,但是啊,并不是我们想要那种,他其实还是在这个 a m s h 里面,我们还是要通过 ctrl 把它取出来啊。这个就是我们用了这个输出解释器它的一个什么好处? 它可以直接获取到你想要的这个数据的一个格式啊,就不需要我们再去做任何的一个处理了,对吧?包括这个 k 对 不对? y 六啊,我们都可以去去定义, 这个就是我们的一个输出解器的一个简单的一个使用。好,我们接下来看一下这个向量的一个存储啊,那如果说我们想把这个数据啊,把它保存在这个向量数据库里面,那我们要怎么去存它? 那这里面我们选择一个这个 fast 这个向量的一个数据库,那么首先要去安装一下,就是通过 p i p install fast cpu 啊,当然他有这个 gpu 的 版本,但是大家可能电脑里面并没有这个 gpu, 对 吧?那我们就选择安装这个 cpu 啊,然后我们还要去安装一个模块,就是这个 lanchang 啊 community, 然后它安装那个版本的零点三点七啊,大家去尽量安装跟我一样的这个版本,那我们这里面去啊,把它数据保存到那里面,我们这里面用到了一个叫 web loader, 来去找一个数据啊, 啊,它是一个,大家看这个模块的名字叫 web loader, 对 不对? webbase loader, 它就是从网页上去加载数据的,那接下来剩下还是一样了,走代理,对吧?然后接下来啊 webbase loader, 首先它第一个参数有一个叫 webpass, 也就是说它要把哪里的数据呢?给咱们 抓取到啊?他要抓取这个网站,对吧?他抓取到这个网站上的一些数据啊,那我们看他是怎么抓取的,他是通过什么呢?他其实通过这个 b i 四,然后去获取这个 id 啊,这个其实涉及到一点爬虫的知识啊,大家如果说没有学过啊,爬虫的 b i 四的话,咱们可以这样 就直接选中它,然后这块有个 d i v, 看到了吗?我稍微放大一点,它的 d i v 有 一个 id, 然后呢大家发现啊,这里面当我把这个 d i v 删掉的时候,就整个页面啊,它其实没有东西了,对吧?那比如说它所有的文字其实都是在这个 d i v id 为这个 d i v 下面,对不对?那所以说我们就解析啊, 通过 bs, 然后呢 id 等于它这样的话,其实我们就可以把这个数据呢,把它获取下来,好吧?那这个时候其实我们可以来测试一下,比如说我们来运行啊,打印,对吧?这样直接运行, 然后大家看啊,这个其实这个时候呢,它其实就已经获取到了这个数据,看到没有配置 content, 然后这里一大堆啊,这这数据就特别多了,咱们就不看了,好吧, 那接下来的话,我们继续往后看来这个代码我们怎么把这个数据保存到咱们那个向量数据库里面呢?对不对?那首先啊,你既然保存到向量数据库里面,那我们首先要做一个向量化,对不对?那这里我们选择什么呢?选择这个 open i 的 你白领来做向量化。 那接下来的话就是导入这个 fast 以及什么 retou 啊,它是一个什么 text split, 对 不对?就是文本切割啊?我们不可能把啊整个的所有的文本,对不对?一次性的全都存进去啊?我们一般是要做切割的, 而且去做编辑的时候,它的数据的长度其实也是有那个啊,它的 token 的 长度其实也是有这个要求的,对吧?所以说我们一般的做法呢,都是先把这个文档先把这个加载文档呢做一个切割,切割完成之后呢,然后我们这个时候才去什么啊?再去保存, 对吧?那切割的时候就会有这个串 size 和这个串的 overlap, 这个串 size 的 话就是说每一块切多大,然后这个 overlap 呢?它是其实是一个滑动窗口,也就说两个啊,你切的这个两个块之间的重叠部分有多少?这个我们呃在讲那个 r g 的 时候会给大家详细的讲到, 然后接下来的话其实就是切割,切割完成之后的话,我们看一下它切割了多长啊?就是我们刚才加载那一堆文档,它把它切割成了两百四十八块,然后接下来的话其实就是一个响亮的存储啊, fast 点 from document, 然后把这个 document 切完块之后的这个 document 呢,把它往里面一传,然后对应的这个编辑啊 存进去,对吧?也就说咱们项链数据库里面现在存的是文档,然后还有什么?还有这个项链啊,还有那个项链,那项链长什么样?就是比如说是一堆数字啊,这种数字的都是, 好吧?文档和向量它是对应的啊,它为什么要对应呢?对吧?因为我们将来可能要查询,对不对?我们查询的时候查的什么?查的是向量,但是最终返回的是要文档,对吧?我们最终给给这个用户去返回的是文档,而不是一堆这个向量,对吧?因为你给用户返回这一堆向量的话,它是看不明白的, 对不对?那这个呢?就是用 logite 啊,怎么去做一个向量的存储?我们接下来看一下如何用这个 logite 啊?怎么去做一个向量的存储?我们接下来看一下如何用 logite 啊,怎么去做一个剪辑。 那这里面其实我们借助到了一个链啊,叫 create steve document 键啊,这个链我们后面也会详细的跟大家讲, 然后接下来的话我们导入这个模板啊, from tammy, 然后呢?这里面这句话很重要,就是仅根据提供的上线文回答一下问题啊,这个其实可以最大程度的避免幻觉,以及这个啊就是回答的问题呢,和我们的文档呢没有关系,但是这个只能说最大程度的避免啊,不可能说完全的避免。 然后这里面有一个 content 啊,然后 content 这个标签啊,是为什么要写呢?这个其实是我们后面那个链里面它必须要写的。我们如果说用这个链的话啊,你的行私模板里面必须要有这个东西,然后问题的话,这个就是我们自己要去写的了, 那接下来的话我们来实地啊,这个导入对不对?菜单, ok, 然后来实地啊,这个当然大家可以换其他的模型,对不对?换咱们国内的啊,都可以,比如说这个 deepsea 啊,对不对?质朴清颜呢? kimi 啊啊,这些都可以。 然后接下来的话我们要创建一个啊文档的一个组合链 create, 这个把大模型往里面一传, lm 往里面传,然后 prompt 往里面一传, 对不对?将文档内容和用户的这个问题组合成一个完整的提示,然后我们接下来要给谁呢?给这个大模型来生成回答,对吧?那你在生成回答的时候,大家知道 i g 的 话,它要去剪辑,对不对?那这个时候呢?哎,我们又用到了一个链啊,叫 create 编辑,是不是? 那这个东西是什么?其实就是我们上面这个项链存储的啊,把这个数据啊存到这个项链里面,对不对?存到这个项链数据库里面,发到这个项链数据库里面,然后接下来的话他要去解锁,对不对?那现在的话他其实就是这个,其实就是那个解锁器了, 然后 i 子设置这个 k w a r g s 的 话,就是说设置了最多我解锁三个文档,那接下来的话我们就来创建这个解锁链,那解锁链的话它需要两个参数,第一个就是刚才我们的解锁啊解锁的这个,然后第二的话就是我们那个 dongle 的 check, 就是 文档的一个链,然后它把这个 两个链组合在一块,对不对?他就实现了什么?实现了从咱们这个向量数据库中来解锁相关的文档,而且将这些文档呢和用户组合成最终的一个提示词啊,就可以发给咱们。行了, 那这个时候我们去问他,比如说建设用地啊,用地使用权是什么?然后我们来运行一下这个代码,当然这个代码现在的回答呢,可能不是特别的好,对吧?他说啊,这个什么地表的对不对? 现在他做的不好,这个是也正常了,因为我没有做任何的啊,其他的一些优化,对不对?所以说这个 r g 的 话,只让大家去看一下实现的一个流程,就是我们用 lange 怎么快速的实现了一个 r g 啊?通过了两个链, 对吧?那这个链呢?其实也是我们后面会详细的给大家讲到的一个知识点啊,这个大家不用担心,好吧?这两个链我们后面也会给大家讲, 这个 create 和这个他其实相当于什么?第一个链相当于将文档和这个用户的问题对不对来做了一个拼接。那第二个呢?其实就是将解锁器和什么和这个文档那又做了一个拼接,好吧?然后最后呢交易大模型跟跟咱们那个正常的 ig 的 这个程序啊,基本上也是一样的。 好,那我们接下来看一下这个 luncheon 里面的 agent 的 一个使用啊,也叫代理,那在 luncheon 的 框架中呢? agent 呢?是一种利用大模型啊,来执行任务和做出角色的一个系统,那在 luncheon 的 世界中, agent 就是 一个智能代理啊,我们也管它叫智能体,对不对?咳, 那它的主要任务呢?其实就是提取我的需求,然后分析当前的一个情景,从它的工具箱呢,选择最合适的工具来执行操作,对吧? 那它具体可以干嘛呢?比如说它可以使用工具对不对啊?它有各种各样的推力引擎,对吧?它 a 轮它在使用,它还有什么?还有一个叫可追溯性啊,当然还可以自定义啊,交互啊,记忆啊,执行器啊,这些的话,大家现在可能啊,看不懂,对不对?先有个印象就可以啊,一样的,先有个印象,等我们详细的讲到的时候, 然后大家就知道啊,这些工具怎么去用啊?对不对?它的记忆能力,我们怎么给它添加对不对?以及它的这个 agent execute 啊,我们怎么去用,对吧?那我们还是以刚才那个案例来快速的看一下它的代码的一个实现啊。 首先呢我们创建一个工具,叫什么?叫解锁器的一个工具,对不对?我们把这个解锁器啊放在这里,然后这个是什么?这个是解锁器工具的一个名字,然后下面其实就是一个描述了,对不对?接下来这就是工具啊,我们有了工具就可以给这个 agent 去使用,对不对?那怎么去用呢?来看这啊, 那这里其实是导入了一些模块,然后呢我们这块啊这个模板大家发现,哎,我们的模板呢写的什么?我们这个 prompt 呢?写的不太一样,对不对?那这个 prompt 它的模板是在哪里啊?它其实是在这个浪, 这个浪颤的一个官网啊,官网里面,然后呢我们可以去找它各种各样的模板,好吧,那如果说大家想看一下这个模板是个什么样子呢?大家可以直接在这里搜索 啊,直接在这搜索,然后点进去,点进去之后呢大家就可以看到它完整的一个这个模板是一个什么样子了,看到叫 system, 然后这个就是聊天记录,对不对?这 human 的 话就是咱们的一个输入啊,那这个呢,就是 agent 的 执行的一些信息。 那接下来我们有了模板之后呢,我们可以干嘛?实体化 chat open i 对 不对?然后 create open i function agent 啊,就是通过这个 function 创建一个 agent, 然后把大模型一传,工具一传, prompt 一 传,对不对?接下来其实就可以执行了,把这个 agent toys 工具啊,这个是什么意思?就是打印执行过程, 打印 agent 整体的一个执行过程,我们在刚开始的时候,建议大家把这个参数都给它加上,就是能看到它执行的整体的过程,那这个时候我们去啊运行这个代理,好吧,我们再来看一下,就是我们通过 agent, 然后让去问一些问题, 就是他要去搜索啊,他其实也是通过这个工具,你看他开始执行,对不对?然后呢这是他这个执行结果, 那,那我们再执行一次,这个其实我没有看到他的执行的一个过程,那来看这里,这个时候大家注意看啊,他其实用到了这个东西,看到没有?用到了这个东西,那这个东西是什么?是不就是我们上面自己定义的这个工具啊, 对不对?这是不是就是我们自己定义的这个工具的一个名字,对吧?那他用这个 工具,然后呢?去什么?去检测,对不对?检测出来了这么多的信息,然后呢?哎,有答案了,最终把这个返回,大家发现用 agent 要比 r g 啊,它的一个结果要好得多,是不是?起码它查出来这些东西的话,信息呢?其实是比较多的,对不对?那这个呢?就是在 longchain 里面啊,咱们怎么使用这个 agent? 好 吧, 快速的简单的一个介绍啊,我们是通过这个 function, 通过这个 function agent 方式创建了一个 agent, 然后通过 agent execute, 然后去执行了这个 agent, 那 最终的一个执行结果,那第一次为什么会看到啊?第一次那种情况呢?就是它这个 agent 判断了一下 它没有什么,它其实没有用这个去解锁,它正常来说的话,我们去问的这个问题啊,它是什么?它应该是用这个解锁器, 应该是给我先去解锁,而不是说用模型直接返回。我们刚才第一次那个看到的应该是模型直接返回的信息,但是这个我们知道并不对,对不对?应该是去这个相册数据库里边去解锁,对吧?用这个工具去解锁,你把解锁到信息给我返回啊,这个才是正确的,对吧?那这个呢,就是一个 agent 的 一个简单使用啊, 我们接下来看 logon 的 第二部分, modelio, 那 modelio 的 话可以把对模型的一个使用呢拆分成三个块啊, 那第一步呢就是咱们的输入提示 prompt, 第二步呢就是咱们的调用模型啊, predict, 然后第三步呢就是咱们这个输出啊, pass, 对 吧?那这三部分呢,我们会分别的来给大家讲,在第一部分的快速入门呢,这三部分呢,其实我们都有提到,但是没有讲的特别详细,对吧? 那接下来的话,我会把这三块啊,把大家讲的把这三块呢分别的给大家讲的详细一点。那我们先来看这个第一个提示模板, lunch 的 模板呢,它是允许这个动态的选择输入啊,根据实际需求来调整输入内容,适用于各种各样的特定的任务和应用,对吧?那语言模型这个就不用说了,对不对?它提供了各种各样的接口,对吧?我们可以通过不同的这个 接口去调用不同的模型,对吧?比如说最近特别火的 deepsea 啊,我们也是可以去通过 longchain 去调用的。那第三部分的话,就是我们的一个输出解析,那利用 longchain 的 输出解析功能的话,可以准确地输出模型所需要的信息啊,避免处理用于的数据,比如说你输出了我们想要的数据,是一个 json, 对 吧?那我们可以通过输出解析器直接输出一个我们预期的 json, 一个数据啊,就避免了模型的输出,之后呢,我们还要自己去处理,对不对? 那这三块呢,形成了一个整体啊,在浪叉的过程中呢,就是他被统称为什么叫 modelio 啊?他每一块呢,每一个环节呢?浪叉都提供了这个模板和工具啊,他可以啊,帮助我们快速的调用各种语言的模型的接口。那我们先来看一下这个图片啊, 那这个图片呢,其实是浪叉官方的一个图片啊,比如说这个 modelio 第一部分 format, 对 吧?就是他看这 x y 啊,对吧?相当于一个, 他直接把这个 x 放这,把这个 y 放在这里,对不对?然后把这个拼接好,那这样做的好处就是 x y 的 话,其实我可以根据用户动态的输入啊,来去变化,对不对?或者说啊,可以通过其他的方式来获取到 x y 这个值,不是说每次都是去固定的对不对?那这里面我可以传给大模型啊,也可以传给这种聊天的,对吧? 然后输出,那输出的话我可以让它输出成帧这种格式对不对?那这三部分呢,统称为 model l 啊,就过程对吧?那我们先来看第一部分,就是咱们的一个提示模板, 那在浪颤的 model i 中,提示模板呢?是其组成之一,这个当刚才大家看到了,对不对?那语言模板的提示呢?是用户输入了一组指令或者输入,对吧?这跟咱们正常的使用那个 prompt 的 提示词其实是一样的,对不对?它主要是用来指导模型的一个响应,帮助模型理解上下文,并且生成相关且连贯的 啊,基于模型的一个输出,对吧?比如咱们回答问题啊,完成句子啊,或者说对话呀等等。那 这个 problem time 也是浪颤中的一个概念,通过接收用户原始的输入啊,并且返回一个准备好传递给语言模型的一个信息啊,就说我们组装好的这个 problem, 把它拼接好,对不对?接收用户原始的信息啊?接收用户原始的信息对不对?然后准备好一个传递给语言模型的信息,就是你把它拼接好,然后再发给这个大模型, 是不是?那我们接下来看狼菜模板的一个特点啊,首先第一个的话就是通俗易懂,对吧?第二呢可啊增强它的可重用性,第三个简单维护,第四个是智能的处理变量,第五个呢就是弹性化生成,当然这几个特点啊,其实我觉得个人觉得 啊,哪个更实用的?其实就是第二个增强他的可重用性,对吧?比如说你在这里写好了一个提示模板,你在项目中啊,很多的其他地方你可能都要用到的话,那其实你可以把这个模板定义好,然后呢重复的去使用啊,就不需要你每次在使用的时候都要去再定义,对不对? 而且他的就是用了模板之后呢,我们的模板的维护呢,就相对来说就比较简单了,那我们就不需要去改,在每一个地方呢,我都要去改这个题词词,我只需要修改模板就可以了,是不是这样对于咱们项目开发来说的话,是一个比较好的 一个地方,因为如果说你每次啊要改这个题词词的话,你都要去找到具体的文件,然后再去修改,对不对?那这个其实是相对来说比较麻烦,能有了模板之后的话,我想在哪里用啊就在哪用,而且我可以多个模板 对不对啊?比如说有一二三四五个,对吧?在不同的场景下,我去运用不同的这个提示模板,而且我只要修改,你不管用了多少次,对不对?我只要修改这个基础的模板就可以了。那接下来我们看一下它的类型,那大方型提供了这个模板 有哪些类型?就是朗善给我们提供的。首先第一个啊,提供了一个叫 plunk time, 然后就是我们聊天嘛, plunk time, 然后还有这个样板提示啊,就 feel short 少样板提示的样板。 那第四呢?第四个就是部分的格式化,然后第五个就是管道,第六个是自定义模板。那其实我们用到比较多的还是前三个啊,前三个包括第二个,其实用的最多这个,好吧,那我们接下来看一下 这几个模板啊,分别是什么?好吧,首先我们来看一下模板的一个导入啊,首先我们从哪里导入?从 linc 点 pro, product, 对不对?第二 part, 然后导入,对吧?然后这个呢? photoshop 的 话就没有后面那个了,对不对?然后 padlock 对 不对? chat tomt, 然后导入这些,这个是 chat message, 是 system 之 ai 之 friend 啊,这个分别对应的其实就是我们那些角色。那模板导入之后的话,我们来我们需要运行一下, 然后接下来的话,我们就可以创建题词模板,对吧?那这个题词模板的话,我们先创建一个这个原始的,比如说你是一个专业程序员,对什么描述?那这个 test 呢?肯定就是我们去输入的, 那这个原始模板我们要去什么创建一个啊? longchang, 用 longchang 给我们提供的来创建一个 longchang 的 体式模板,那怎么创建呢? from tom t, 然后点 from tom t 从哪来,对不对?然后把这个 tom t 往里面传,那这个时候 tom t 我 们就创建好了,对不对?我们可以打印一下,这时候其实我们可以打印一下,打印它其实就是这个样子,来我们运行一下 input 啊,这个就是让我们输入的,对不对?然后呢?这个就是我们的原始的这个 time thing, 对 吧?那我们怎么把这个 text 传进去呢?通过 prompt 点 format, 然后 text 等于 luncheon, 那 这个时候呢?其实我们就把 luncheon 呢相当于传进去了,它的 提出模板啊,必就变成了什么?您是一位专业的程序员,然后对于信息浪产进行剪短描述,对吧?那这样的话,其实我们下次比如说你想对于什么啊?对于大模型啊,对不对?或者对于 r g 啊,对于其他的这种技术的关键词进行剪短描述的话,那我只需要去改这里就可以,我在使用的时候,其实我不需要去改这里,对不对? ok, 这是创建其实模板,然后我们接下来其实也可以什么?上面这种方式的话,是通过我们创建了一个原始的其实模板,然后呢来创建出来一个 long chain 的 其实模板,那当然我们也可以直接去创建,直接创建怎么创建呢?来 problem time 啊,就直接往里面写就可以了,对不对?你需要什么?需要 input 的 一个变量,对吧?然后叫 type, 那这个提示模板呢?我们就直接写到这里面了,那直接写到这个 prompt temp 里边去,您是因为专业的程序员对什么信息进行描述,那用的时候其实还是一样的啊,我们用还是还是这样点 format, 然后 text 等文档,那这样的话其实就是更直接,好吧,那这个就是如何来创建我们的提示模板, 我们接下来看一下如何来使用这个 t s 模板,对吧?我们写好了这个 t s 模板的话,我们要传给大模型,对吧?让最终返回这个结果,那我们接下来看一下它是怎么去使用的。首先上面还是一样导入这个模块, 然后走代理这个 type, open i 的 话,模型默认的话就是三点五杠 turbo 啊,这个大家可以不写,然后也可以换成其他的这个模型,比如说咱们国内的快速入门的时候,也跟大家介绍过怎么去换。 然后这里就是我们的这个输入题词啊, input 对 不对?输入了什么大模型?这个 long chain prompt, 那 它这个 prompt 其实用的就是这上面这个,然后得到模型的一个输出,我们怎么去得到呢?就是这个 model 点 in local 啊,通过这种方式,然后 input, 把我们的这个什么,把我们的这个提示模板啊传进去,对吧? 那这个时候呢,这个 input 就是 什么?就是它啊,就是那个提示模板,那这个时候呢,我们就可以得到一个什么大模型的一个回复啊,来运行一下, 然后呢?现在就在正在运行啊,然后大家可以看一下下面这行代码,就是 model 点 emoji, emoji 就是 去调用嘛,对不对?呃,然后我们来看一下报错啊,这报错是报 我们往上滑一点啊,这个报错是报了一个 connect error, 对 吧?就是连接错误啊,连接错误这个一般跟我们的节点有关系啊,然后大家可以这个 看一下自己的这个代理啊,有没有打开,或者说他这个节点啊?有没有问题?如果说你确认了你的这个代理打开了,而且节点没什么问题的话,对吧?他网速正常的话,那大家只要重新运行一下这个代码就可以了, 这个不是代码的问题,大家如果说运行这个代码,如果说你自己买了一些 k 啊,遇到刚才我那个问题的话,大家重新运行一下代码就可以了,或者说看一下自己的代理没有打开, 然后这个时候呢,它其实就已经生成了这个答案,对不对啊?让 chat 是 大模型的,是一种信息大模型对不对?用于处理什么文本的语言模型啊? 那这个时候呢,我们其实就已经把这个题模板啊翻译给了大模型这种方式,对吧?那我们接下来看一下,叫 chat prompt timet, 对 不对?很明显它和我们刚才讲那个 prompt timet 是 有区别的,对不对?那 chat 它多了一个什么?多了一个聊天嘛, 对不对?那模板它和那个具体有什么不同呢?就是它可以有对应的一些角色,比如说我们的原始模板是一个什么?是一个,你是一个,你是一个数学家, 你可以计算任何形式,然后呢?这个是 human 啊, tempet 对 不对?那我们用这个 chat prompt tempet, 然后点 from message, 那 这个时候呢,大家注意看我们里面传了一个什么,传了个 system system 呢?是这个 tempet, 然后 human 呢? human 就是 什么 human? 它对应的模板呢?其实就是我们输入的, 对不对啊?那其实就相当于我们如果大家学过提示词的话,这个相当于 system, 这个相当于那个 user, 对 不对?还有一个 assistant 的 那个助手, 是吧?那接下来的话,我们的对话的这个模型定义好了,定义好之后的话,然后来导入这个 chat 后台这个接口,对吧? 那接下来呢? chat prompt 对 不对?然后点 from message, 这个时候我们需要把这个 text 传进去,对不对?我今年十八,我舅舅三十八,然后爷爷七十二,然后算一下我和舅舅一共多少岁了,那这个时候是我们的 message, 对 吧?那我们要把什么?我们把 message 啊,这个信息传给什么?传给咱们的这个大模型,对不对? 也就是说我们要把这个信息啊,放到什么?放到这里,对不对?那最终呢?我们是不是就有了一个完整的 prompt, 对吧?完整的 prompt 它是要得到答案的,我们是要发给大模型的,调用大模型,那怎么调用呢? model 点 emoji, 然后把 message 一 传,那这个时候呢,我们需要打印它的 content 啊,就是你不想看到这一堆东西的话,你就打印它的 content 就 可以了, 然后我们来运行,看一下这个结果啊,来看这首先上面打印的是什么?上面打印的是这个, 来上一栏呢,是 message, 这个信息看见没有? saturn message, 你 是一个数学家,可以计算任何的这个计算形式,然后黑猫的 message, 这是我们自己输入的,对不对?今年十八,然后一共五十六啊,没有问题,对不对?你看舅舅一共多少岁啊?五十六岁 是吧?那 longchang 提供不同类型的 message, 这个 problem timetable 啊,最常用的就是 ai 啊, saturn 啊,对不对? human message 对 不对?那 ai 的 话就是人工智能消息,那系统的 saturn 的 话就是系统消息,人工的话就是咱们的 human 啊,这个和词典模板里面基本上就是对应的。 来啊,那接下来我们看一下导入啊,首先还是一样的去导入,对不对?然后模板的一个构建啊,那这个时候的话,我们可以怎么去做呢?来啊,看看,这我们写好了,一个,对不对? system entity, 然后呢? system message 对 不对?就是我们可以给它这个角色嘛, 对不对?给他定一个角色啊, sitemessage prompt, 然后 from tempet, 把这个往里面一传。你是一个翻译专家,擅长将什么语言翻译成什么语言,对不对?然后这样 啊,那这个时候的话,我们的 sitem 就 写好了,对不对?那 hello 是 一样的,对不对?然后呢? chat prompt tempet 点 from message, 这个时候你把 sitem 一 传,把 hello 一 传啊,其实跟上面是一模一样的, 跟我们上面这种写法是,就是它的达到的效果其实是一样的,但是这种写法呢啊,它更看起来呢,稍微的更复杂一点,但是它有好处啊,就是能让我们的整体看的更清楚,代码逻辑看的更清楚啊,它有有利有弊,对不对? 那接下来的话,我们把这个 problem 他 们给编辑好之后的话,那我们要往里面传信息,对不对?你要翻译什么是吧?那 input 就是我们要把英语翻译成中文,然后你要翻译到这个文本是什么呀?是不是这个 text 啊? text 等于,对吧?我爱大模型,然后点 to message, 对 不对?那这个时候我们去打印这个 prompt, 然后呢?接下来去调用啊,这个就比较容易了,是不是?那我们来运行一下啊,你看这是我们的 prompt, prompt 就是 system message, 对 不对? 然后 result, 这是结果啊,这是结果。我喜欢大模型,对不对?就是英文翻译成中文嘛?我们输入的,我们输入的是一个什么,对吧?我们输入是一个英文,然后他要把英文翻译成中文嘛,对不对?擅长将英文翻译成中文, 那这时候呢?我们就得到了结果是不是?那如果说你不想看后面一堆的话,你就直接点 ctrl, 像我们上面这样,对吧?直接点 ctrl 就 可以了,就能获得到这个结果了。 我们接下来看一下这个少量本视例的一个提示模板,这跟题词的一个少量本提示基本上是类似的,我们都是通过给少量的一个提示来让大模型生成更好的一个恢复。那基于大模型和聊天模型的话,那我们分别可以使用什么? 这个 fieldshot 和这个 fieldshotchat message prompt 啊,它基本上使用是一样的。那我们先来看一下这个怎么来创建这个视例集, 那这里面创建了一个列表啊,这是一个列表,一个单跑,然后音符的二点二, alt put 四,然后用的是一个加法,那五减二呢?是一个三,对吧?然后这是一个减法,我们在给势利的时候,其实不是给的越多越好,给三到五个就可以了啊,给三到五个大模型基本上就能学习到这个 样本的东西了,那接下来的话我们来创建这个 int 模板,那首先还是一样的,从这个点 prompt 里面导入这个 prompt time, 然后接下来的话 写啊完原始的,对不对?你是一个数学专家,算式啊,音谱的,然后值什么对不对?使用了什么,跟我们上面是一样的对不对?你输入是一二加二,那 out 谱的就是四,对吧?然后使用了加法运算,对不对?那 from 它的 创建咱们这个模板对吧?那这个时候其实我们可以啊,通过这个方麦的点,方麦下角线 prompt 来试一下怎么往里面传,是不是啊?比如说我们可以这样, 可以这样我们直接传,对吧?直接传一个,比如说二加二对不对?然后 output 四,然后这次这个描述啊,这个 description 描述啊, 打印,对吧?你看你是一个数学专家,然后算式呢?二加二值四,使用了加法,那除了这种方式呢,我们还可以通过这种啊,这种的话就是一个解包操作啊。 example, 咱们先看这块 example 一 对不对?然后呢就是这个, 那它是列表的下标是从零开始的,一取的是它对不对?那前面星星是什么意思呢?就是它把这里面的每个参数和这里面是相对应的,看没有阿普夫的 destruction 啊,这个时候我们可以运行一下 哦,我们来看一下啊,他说这个没有定义啊,那我们先要先要运行一下它啊,先要运行它,然后再来运行它,那这个时候大家注意看五减二对不对?然后三使用的是一个减法,这没有问题。那么接下来这个其实模板创建好了,那我们接下来开可以创建这个叫 feel shot。 首先导入啊?还是先来导入?然后呢? example 是 我们上面的 prompt sim, 对 不对?就是上面这个啊,就上面这个,然后这个, 这个,这个 steve 啊,啊,不是 steve s u f f 这个 fact 啊? s u f fact 对 不对?那它是什么意思啊?就是你是一个算学数学专家,然后算是值,对吧?它表示在咱们那个生成的其实模板末尾会加上,会加上这句话, 然后我们要输入什么?输入的是 input 和 output, 那 其实我们想让它干嘛呢?我们想让大模型啊,这个输出,什么 输出?你的这个描述用的什么算?算这个算式对不对?你看二加二是四,对吧?然后呢?五减二是三,它使用减法,那二乘五,比如说我们输入的是一个二乘五,然后数值三的话,那它应该输出的使用的是一个乘法,对不对?那这个时候呢?我们的 prompt 就 拼接好了啊?我们的 prompt 就 拼接好了, 然后接下来的话我们可以调用大模型,对不对? model 点 input, 然后呢?把这个传进去啊?把这个传进去, 对不对? prompt 点这个 format, 然后 input 二乘五, output, 那 这个时候它输出的话,大家想想输出应该是一个什么?应该是一个乘法运算,对不对啊?找我们要先学一下上面这个,然后再用它, 他正常如果输出的是一个乘法因子的话,那这里是没有问题的,对不对?比如说我们再输出一个啊四,然后除二等于二啊? alt put, 那 这个时候呢,他应该输出的是一个什么?哎?除法是不是就没有问题了,对不对啊? 就是通过大模型啊,让给了一些实力,然后让他来预测啊,他使用的是什么啊?这也不叫预测啊,对不对?因为我们给了这么多实力,他应该能学会了,对吧?如果输出的不是乘法啊,这个才有问题,对不对?当然如果说输出的真的就不是乘法,而是其他的, 那这块有几个方案。第一个就是大家把这个模型改掉,因为三点五的话,现在这个模型能力呢,不算强了, 对吧?现在已经出了很多的新的模型了,是不是我们可以通过 g b 四啊,四 o 啊,对不对? o 一 啊啊? o 一 迷你啊,是它现在最新的是 o 三,对不对?那我们可以通过这个更换模型啊,来去达到我们最终想要的一个效果,那这个呢,其实就是我们这个少量版的一个提示模板的一个使用啊, 我们接下来看一下这个 modelio 的 第二部分模型。那 longchain 知识的模型有三大类,第一大类就是咱们的语言模型 r m, 也叫 text model, 那 第二呢,就是咱们那个 chat model 聊天模型。第三个呢,就是咱们那个文本签入 embedded model 啊,这个也是我们啊经常去 r g 经常会用到的,对吧? 那我们先来看第一个大语言模型啊,那 longchang 的 核心组件呢,就是咱们的大语言模型,它提供了一个标准接口,以字母串作为一个输入并返回字母串的形式啊,与多个咱们的大模型呢进行交互。 那这个接口呢?比如说 openai 啊, hack and face 啊,其实多个厂家都提供了标准化的对接方式,对吧?那我们先来看这个文本补全的方式啊, 我们导入这个 open i, 那 这个时候大家注意,我们用的就不叫 chat open i 了,对吧?用的就是 open i 了,那文文不全的,然后 max token 呢?我们指定二十,最大的 token 呢就是二十,那这个时候呢,我们通过 inlocal 这个方法呢,我们就直接把这个 text 传进来啊,那这时候我们来运行一下,当然它中文的话可能会出现乱码啊, 哎,我今天真的好想你的,好想和啊,想和你一起看电影呢,这个是没有问题的,对吧?那这个呢,就是我们的一个大元模型的一个使用啊,比较简单,对吧?我们进来看一下对话模型啊, 这个对话模型的话,我们用的就是 type open i 啊,之前其实也用到了挺多回,对不对?比如说我们的 type 大 元模型是什么?然后我们下面呢调用着吗?调用这个 deepsea 啊,那 啊,为什么在这里去叫呢 deepsea 啊?这个 deepsea 呢,现在是已经可以充值了啊,到今天呢是已经可以充值了,它那个充值接口呢,终于是放开了,所以说的话,大家可以去啊充一下这个 deepsea 啊,基本上充一块钱的话就能使用很久,对吧?如果大家不是特别这个频繁的使用的话,基本上个人使用的话,一块钱真的能用一个月,至少啊,然后我们获取它的这个 那个 key 啊,这个 key 呢?我是写到哪里呢?是写到点 e n v 文件里面了啊,写到点 e n v 文件里面,然后呢就是这样等于啊,这个就是大家去那个官方去申请就可以了,那这个时候呢,我们其实就可以把这个换成什么,换成我们的 tipsy 了, 然后 deepsafe, 这是按一那个模型 api base, 对 吧?那那接下来我们就可以问他大模型是什么?它,当然它这个现在速度可能会啊稍微的慢一些,虽然说它恢复充值了,但是它其实调用的时候速度也不会特别的快,因为它要推底,而且啊它其实内容还是挺多的, 就是他返回的内容比较多,然后如果说在他没有返回之前呢,其实我们看不到这个结果了,我们可以通过那种流逝的啊,流逝的输出就是他有多少返回了模型给我们返回了多少内容的话,我们都可以啊在这打印出来那种流逝的方式,这样我们就可以看到 模型的一个就是给我们的回复啊,就是一个字一个字蹦,像那个 disco 那 个官网似的,我们问他一个问题,他不是说啊,在那卡着,咱们现在的代码运行看起来像卡了一样,对不对?其实并不是啊,而是他在一个字一个字的往外蹦,对吧?他在推理是不是 他推理的过程,思考过程,只不说我们看不到,我们在这个程序调用的时候是其实看不到的,对吧?当然我们可以通过流势输出,就是他输出一个字就打印出来,对不对?就像那个网页一样,当然现在是看不到的啊, 然后我们因为我们没有通过流逝的那种方式去调用啊,那我们现在就可以看到了大模型是什么,对吧?而且它返回的都是这个 markdown 的 这个格式啊, 然后往下翻啊,打模型什么一堆,对不对?然后它价格呢?这个大家可以自己看一下,它现在就两个模型,一个是 v 三的,对吧?啊?一个是 r 一 的, r 一 主要就是推理嘛,对不对?而且它的头盔呢,也特别便宜,现在也放开了,那大家可以去那个用一下,然后接下来我们看一下这个智普模型,就是这是国内的,对不对啊?除了 deepsea 呢,我们还可以 用什么呢?用智普啊,用这个通讯千问啊,还有用那个按月啊,都可以,我们这里用这个智普啊,智普啊,同样的大家要去那个智普的官网去申请一个 apikey, 然后它现在有个模型呢,是免费的,免费去调用,就是 g m l 四 plus, 这个 这个模型是免费的去调用的,然后这个时候我们来运行看一下啊,但是它需要安装这个模块叫 p y g w t 啊,这个模块大家去那个 c m d 里面去安装一下就可以了, p i p 音符,好吧,那这个时候我们可以看到它也给我们返回了这个内容, 好吧,那这个呢,就是我们怎么去调用这个国产的一些模型? longchain 它其实是支持一些国产的模型的啊,可以通过这种方式,就是我们可以通过直接这种方式换 api, 换这个备份,然后模型名字把它换掉,然后也可以通过模块直接导入啊,这个 longchain 也是有这些模块的, 对吧?我们国内的现在做的大一点的这个模型的话, luncheon 里面其实都是有专门模块可以去用的,比如对不对?我们其实就不需要像啊 open i 的 就是调用 chat, open i 的 那种方式,直接就是智普 ai, 对 不对? chat 同意,对吧?还有我们的那个安岳的 kimi 的。 好,我们接下来看一下这个聊天儿模型,那聊天儿模型呢?也是 luncheon 的 核心组件儿之一,对吧?它使用聊天信息呢,作为一个输入,并返回聊天信息做一个输出, 那 longchang 呢?有一些内置的这个消息的类型,比如说 saturn 对 不对啊?启动 ai 行为,那 human 呢?就是呃用户的一个输入,对吧?那 ai message 呢?就是聊天的一个信息啊, 聊天模型那个信息对吧?可以是文本,也可以是调用工具的一个请求啊,其实和我们那个提示词它是一对应的。 saturn human 对 吧? user 啊, human 就是 对应的 user, 然后 ai message 的 话,对应的就是那个 assignen, 那 我们先来看一下这个怎么去用啊? 其实和我们上面那个用法基本上是一致的,对吧? message 对 不对? human message 和 sitter message, 那 这个时候呢?比如说我们输了一个 text, 对 吧?你好啊,然后 chat open i model 三点五,是不是?然后这个 human message 的 话,我们把这个 content text 往里面一传,是不是?这就代表着我们用户的一个输入,那把这个 message 呢?只要发一大模型啊,就 ok 了,那这时候我们来运行一下, 你看返回的就是你好,有什么可以帮助你嘛,对吧?然后聊天模型也可以支持多个消息作为一个输入啊,比如说 system, 就是 你是一个定一个角色,你是一个乐于助人的一个助手啊,你叫什么对不对?然后问他,你是谁啊? 你好,我是于老师,对吧?那这个聊天的其实相对来说比较容易,而且我们前面多次的用到过这个 chat opi, 对 不对?那接下来的话,我们来看一下文本的一个切入啊,这个文本切入的话,在咱们在做那个 i g 的 时候是经常用到要用到的, 对不对?那 importing 呢?它是用于嵌入和主要用于嵌入的,对不对?做那个文本向量化的,那比如说它提供了这个有很多的啊, open i 的, 对不对?哈根 space 的 啊等等。那这些其实都给 longchain 提供了一些标准接口,我们看怎么去用啊? 那 longchain 里面它集成了什么呢?集成了这个就是 open i importing, 对 不对?我们可以直接导入,然后直接这样去用,然后它默认的模型呢?就是这个 text importing 三拉直, 当然大家可以去指定对不对?可以去指定一些 open ai 支持的编辑的模型,那我们比如说我们这里 excel 等于大模型,对吧?那有了编辑之后我们可以什么?比如说迁入文档, you want the document, 然后这里大家注意啊,它是一个列表啊,它是一个列表,它要放到列表里面,对不对?我们打印它是一个二维的 啊,他是一个二维的,然后零,比如说打印前五,他不需要,我们不需要打印那么多,对不对?他的维度可能很高,如果说我们不这样打印的话啊,打印出来东西可能很多,对吧?然后我们可以也可以去查询,对不对?那查询的话就是这个 qry, 然后把 text 往里面传,对不对?我们在查询的时候可是肯肯定是用文本去查询, 是吧?然后也打印前五,那这个时候我们可以运行看一下它的一个效果,你看这个是我们编辑把文本变成什么,变成这个数字这么一个过程,是不是?然后这块是什么?这块是我们根据这个文本查出来的,编辑啊,它能是对应上的,对吧?能是对应上的, 对不对?那这样的话,我们在根据语义搜索的时候,才能找出来对应的一些文本,对吧?然后我们也可以去调用什么,通过这个方法叫 hank face bird bindings, 对 不对?我们可以去啊,去调用这个本地的一些模型, 对吧?那本地的模型的话,这个其实就涉及一个问题,大家要去下载,对不对?下载本地的这个 embending 模型,那这个模型大家可以从哪里下载呢?第一个就是 hand face, 让 hand face 大家可能需要翻墙,对不对?然后这里面有一个国内的镜像的一个地址,大家打开之后的话就是可以在这去搜索, 对吧?比如说我们用的模型是这个 embending 的 模型,这个就直接在这搜索就可以了, 在这里搜索,如果说没有搜到的话,大家可以把那个去掉啊,把前面那个去掉,你看这里面是不是又有了,对不对?然后大家可以也可以在这里面去搜索啊,它有下面的各种各样的任务,对不对?然后你找到那个 in bending 啊,它下面有,嗯, in bending e m。 我 们直接在这搜一下,搜一下 e m b d 啊?哎?没有吗?呃,我们 ctrl f 去搜一下啊? e m。 哎,我们去看看它的自然源啊,应该就在这里 text text 翻译, 它这个还真没有,那这个其实就是我们的,大家可以看啊,这个如果说我们在这个网站没有搜到的话,没关系,我们再给大家介绍一个,好吧?这个也是咱们国内的一个叫达摩达 啊,摩达摩达社区,摩达社区的话,然后它这块有一个模型库,我们可以搜一下这个,看能不能搜到啊? in minding, 没这个时候它就有了,是不是啊?那我们可以通过这个,如果说在这个网站上没有搜到那个一模一样的啊,就没有搜到一模一样的话,然后大家可以来到这个网站去搜索一下, 对吧?那这个时候呢?我们就搜到了,是不是搜到了这个模型,是吧? enigma 的 模型啊?这个是 enigma 的 模型, 那怎么去下载呢?然后呢?摩纳的话,它提供了什么?它提供了一个模块啊,就这个模块,好吧?然后通过这个模块呢?这个模块当然需要去安装的 p i p 一 扫啊,要去安装一下,要去安装一下它啊,要去安装一下这个模块, 这里写了应该是他这个模块,然后这个时候我们只需要去什么,只需要去运行它就可以了,因为我这块没有安装这个, 没有安装这个模块,所以说他会报这个错误啊,因为我已经这个用的环境不是这个,就主笔上面我用的环境是这个叫 啊,叫这个 launch model 啊,用的他这个环境里面是没有这个模块的。这跟大家说一下,因为已经提前下好了,他第一个参数的名字就是什么?就是你要下载模型的名字,然后第二个叫 case 电压的话,就是你要下载的位置啊,这个建议大家去改一下啊,如果说默认的话,他就在当前你执行这个代码的一个位置下载了, 对不对?那这个时候大家把它下载下来之后呢?哎,我已经下载过了,我已经下载过了,然后这个速度还是比较快的,那我们就可以通过什么本地的,对不对? model name 啊?去指定 我们的 embedding 模型,我现在不用 open ai 了,对不对?我可以自己用下载本地的,这样的话就不消耗 talk 了嘛,是不是?然后 hansen face 这个 bird bindings model name, 然后呢?这个参数是什么意思呢?就是生成的嵌入呢?向量呢?被归一化,有助于向量的一个比较,大家不加这个参数其实也是可以的, 对不对?那这个时候呢,我们就有了一个本地的 embedding 模型,然后也可以去做向量化了啊,也可以去做向量化了,那这个时候呢,我们就可以去试啊, 然后把这个大模型 imending, 对 不对? query 啊,我们去做这个向量化, 这个报错啊,大家看这个,这个并不是报错,而是 jupiter 啊,它的一个提示,对不对?升级你的 jupiter 和这个模块。然后下面呢,我们就已经得到这个结果了,看没有大模型的一个结果就是前五个啊,这个结果我们已经得到了,那这个时候我们在本地的话,就可以来做这个向量化了,是不是? 然后我们可以通过不通,不通过 luncheon 这个框架来做这个本地的编辑,就是通过这个模块啊,通过这个模块来去做的,好吧? 然后这个它怎么去用呢?那来我们往上啊,那它现在这个,因为我刚才运行了一下这个,我刚才运行了一下,它应该是马斯扣的啊? 啊?这个 markdown 啊,我们这个是不需要去运行的,是不是?就是大家如果想运行的话,你就把它调整成什么?调整成这个 code, 如果说你不想让它运行的话,就调整成这个 markdown 就 可以了,好吧?这个是朱比特的一个使用啊,简单的一个使用, 然后接下来的话你就可以去运行了啊,就可以去运行这个是咱们的这个数据,对不对?然后你可以使用本地的啊,这个模型, 对不对?然后把这个数据往里面一传啊?这个是一样的,是不是?然后打印这个文件,这就是这个它的一个结果了,那我们开来运行一下,你看这就它的一个结果了,是不是 我们可以通过不通过这个 longchain, 但是我们在用这个 longchain 框架在做的时候其实还是比较方便的,包括它内置了啊,就是 open i 的 这个 in bending, 对 吧?我们可以直接用 open i 的 in bending 来去做向量化,当然大家可以用本地的啊,也可以用本地的,方便大家快速入门大模型视频文档和超详细大模型学习路线图,感兴趣的同学留个学习抱回家。

一天学一个变态的大模型知识点,今天讲的是来看从入门到精通。哈喽大家好,欢迎来到浪剑实战课程啊,那这个课程呢,是基于 deepsea 这个大模型来给大家讲解浪剑这个 框架啊,以及一个项目实战。那咱们 long chain 的 版本呢,是基于零点三的这个最新的版本,那在 long chain 这些课程里面会给大家介绍到这些方面。首先第一个是 long chain 的 一个快速入门,那在这里面会给大家把 long chain 的 整体啊全都给大家过一遍,比如说 long chain 的 一个基本使用 t s 模板 输出的一个解释器,以及我们怎么用这个向量存储,以及一个简单的 ig 实现,还有我们的 agent 代理的一个基本使用。 那我们在第二个模块的话,就是 long chain 的 一个 model io, 那 这一部分呢,总共分为三个大的模块,就是题词模板,我们的 model 模型以及输出解释器啊,那在第三个 章节呢,我们回家讲到 long chain 的 链啊,首先第一个就是一个 long chain 里面链的一个基本使用,以及链的调用方式,还有我们 long chain 中啊内置的常见的一些链的使用。 那接下来呢,我们会给大家讲到这个 long chain 的 实现的一个 r g 啊,这是一个简单的 r g, 没有经过任何的优化。那这里面会给大家讲到文档的加载,对吧?我们怎么加载本地的怎么加载这个在线,然后我们文档的切割文本,向量化的模型啊,以及向量存储,还有我们的这个 retou 检测器。 那接下来我会给大家讲到 luncheon 里面的一个 agent 代理 agent, 一个基本使用啊,我们的 openai function agent 以及这个 react agent 啊,这个是咱们呃 agent 也是智能体里面用的比较多的一种这个框架啊。 然后接下来就是 longchain 的 这个工具啊,那在这个工具里面,我们给大家讲到 longchain 的 一个呃工具的一个初步认识,以及更多的工具的使用,那接下来的话就是 longchain 里面的这个 memo 记忆管理,那在这一块儿回家讲到两方面,第一个就是最基础的记忆管理方法, 然后再会给大家讲到更高级更灵活的记忆管理,那把这些所有的模块给大家讲完之后呢,我们会通过一个 long chain 的 项目实战啊,来给大家把所有的知识点呢,给大家穿插起来,也会给大家做一个项目实战啊。那这个课程呢,就是我们啊整体的一个知识点的一个架构, 为方便大家快速入门大模型视频文档和超详细大模型学习路线图,感兴趣的同学留个学习抱回家。

那最近很多人问我 java ai 应用开发是学 supreme ai 还是篮球国际,其实我就建议你无脑选 supreme ai 就 行了啊, 那这两个框架我都讲过,其实我是不太愿意去比的,而且确实也有人在企业当中呢去用篮球国际。但是听网上那些博主瞎忽悠,说什么篮球国际就是 java 版的篮球,那我就不得不想澄清一下, 他们俩其实除了名字下,其实是两个完全不同的团队来去维护的,并且篮球国际呢,他是社区的开源项目,也是他没有一个官方的主话是人,那他确实也借鉴了篮球的一些设计理念,但并不意味着他就是篮球的 官方的 java 版本,那主要是因为蓝拳他出来得早嘛,篮球服气,他也没有别的可以借鉴。当然篮球服气在 java 荒漠期啊,他最早站出来建立了 java ai 大 模型接入的这块空白确实立过功,我们还是需要肯定的啊。但是论生态,论血统,论易用性, spring ai 毫无疑问啊,它可以完胜那 spring ai, 它依靠 spring 的 生态体系,可以无缝集成 spring boot 的, 并且背靠大树,它身后呢,是靠 spring 官方的团队来进行迭代维护,那 spring 的 代码质量是大家都有目共睹的,这也决定了 spring ai 它能走多远。那目前呢, spring 官方团队也是在驾驶着 spring ai 快 速的更新迭代当中,那包括 spring ai, 它的 m c p 啊, advisor 啊,这些使用都设计得非常的巧妙,而篮球科技啊,我个人认为这一块 就比较欠缺了。那最关键的是啊,你后续还可以整合 spring ai, 阿里巴巴,它是基于 spring ai 标准来进行扩展的,不仅能够接入通用模型, 还提供了很多基于 spring ai 的 一些扩展,并且啊提供了 agent 构建智能应用程序的完整的一个生态。你可以使用阿里巴巴的 agent framework 或者用 agent scope draw 来开发智能体应用。这意味着你学的不仅仅是一个大模型的接入框架,后面一整条企业级的 ai 应用开发,包括 agent 开发的解决方案都已经铺好了路, 顺着去学就行了。总之呢,你要学 java ai 应用开发,如果不知道怎么选的话,怕走弯路,那你就跟着徐老师的课程学就行了。我全都会讲,从大模型的选型到微调到大模型接入框架, spring ai, spring, 阿里巴巴、篮球国际,包括实战项目,智能客服 reg, 知识库系统手写 minnes。 目前呢,也正在积极准备 edgen 的 智能体开发 java 的 系列课程当中。视频设计的详细资料,我整理进了两百万只的 java 与 a 大 模型学习资料里面了,里面包含了 jvm、 release, ufo、 a 大 模型等三十多个技术站与一百多个项目长期实战比例,每不同工作连线同学的简历模板,以第一份 java 加 ai 三十天面试突击给机会现学的话直接拿去 nice!

今天是周六,博主的工作是双休的,闲着也是闲着,博主把之前学过的 agent skills 演示一遍,简单地写了一个获取系统信息的 skill 开始运行, 博主在命令窗口敲入获取设备的系统信息,然后敲回车键,待会代码执行的时候,就会命中博主写的这个 skill。 md, 然后 skill 会使用 run exact 工具执行 system info 命令。 run exact 是 博主写的一个用于执行系统命令的工具, ai 获取到系统信息后,会按照 skill 里的要求,将系统名称、系统版本、处理器型号这三个信息提取出来,然后以接送的格式返回给博主。这里还需要等一等, ai 的 处理速度有点慢。 ok 了,可以看到结果已经出来了。再看看左边这个,这个是博主在命令行窗口手动敲写 system info 命令的返回结果,可以看到 ai 返回的信息是准确无误的。本次分享就到这里,下次再见。

一天学一个变态的大模型知识点,今天讲的是 line graph 从入门到精通,这次呢,再次给大家带来一系列中班课程啊,就这一次是 long graph 多智能体架构从入门到企业实战的一套视频。 那如果在 ai 大 模型时代,对于程序员来说,呃要学的技术有一个排名的话,那不管在哪个榜单上, long chain 整个系列一定都是名列前茅的, 因为 lincoln 整个这个框架呢,他不光给我们提供了很多的工具,让我们能够把大语言模型用到更多的应用场景当中,更重要的是通过 lincoln 整个这个框架,帮我们积累了很多使用大语言模型的经验。 就大语言模型把我们从一个爱好变成一个技能的时候,有很多思想需要去转变,而 lincoln 整个系列给我们非常多的这种指导。 那么 long graph 呢?作为 long chain 的 一个生态体系,也是把 long chain 整个这个使用的门槛提到了一个非常高的一个程度啊,就通过 long chain, 其实我们更多的是思考怎么去解决一些特定的问题,而通过 long graph 可以 帮我们把这种 解决面向问题的这种啊思考方式变成这种多智能体协助的方式,那其实关于多智能体的重要性,大家一定在互联网上听这词听烂了对吧?听到各种各样介绍,而 long graph 就 帮我们规划出了一个非常清晰的多智能体的这种 景象,就他是怎么样工作的,然后呢,他能够给我们带来哪些具体的帮助? long graph 就 给我们带来了很多具体的一些指导,而不只是像互联网很多种流量视频吹嘘的各种各样所谓涉及啊 啊,那回到我们整个课程内容体系呢,这一次也是给大家带来了非常多的这个课程的一个优化设计啊。我们这套课程呢, 不像大家在网上看的别的一些课程啊,要么就是一些零零散散的一些呃个人的分享,要么呢就是有一些别的机构他们上课的一些视频给大家拿出来分享, 那这些其实或多或少的都会有一些保留,要么就是课程设计可能不太专业,要么呢就是你像这种拿上课的视频给大家分享,那一定是会有所保留,或者说是有点过时的, 因为你想到任何一个这个不可能真的完全为爱发电了,对吧?但是我们这一套视频真正的是为了技术分享,给大家去做没有保留的一个介绍啊, 所以从这个课程设计也能我希望大家也能够看到,就是我们是结合了很多学员的一些我们以往朋友的一些学习的经历过程,给大家设计了一个非常良好的一个学习的曲线,然后呢也给大家每一章节设计了一些重点,那希望通过这个过程能够真正让你们看到 我们对于大约模型这种技术的一个态度啊。整个我们这一次呢会分为六个大的章节。第一章节大家快速的了解 long graph 这一块,也跟大家强调很多朋友,其实我看到互联网上很多给大家接受 long graph 的 这些视频啊,一上来就是把这个框架给你啊,简单铺垫一下,然后马上就进入重点的实线部分了,但其实 对于别的技术可能可以,但是对于 long graph 来说,我觉得有一点就是 long graph 它本身是 long chain 整个体系当中的一个生态组建,它并不是一个独立的框架,所以抛开 long chain 来谈 long graph, 我 觉得纯粹是属于耍流氓。 那我们这一次呢,所以也就是重新设计了这一个章节,我们不光要带你去了解 long graph, 更重要的是还要快速的去了解 long chain 和 long graph 到底是一种什么样的框架。 为什么在同样的 long chain 整个体系当中,有了 long chain 帮我们去形成了很多很好的和大约模型交互的机制了之后还要有 long graph 这么一个生态组建呢?它也是和大约模型交互,中间肯定你很多朋友会觉得说这是不是有点冲突呢, 对吧?那为什么要搞两个类似的框架呢?这就是,哎,这里面其实是不光是对技术实现的一种思考,更重要的是就是我们强调的对大约模型到底应该怎么用的一种思考。 所以我们这一讲解,大家快速会体验 long chain 和 long graph 的 这种关系,但是呢,会给大家强调说整个我们这个 long graph 这一套系列的视频啊,并不是说从头给大家来分享,而是预示大家都有了 long chain 的 基础,而且也最好呢,大家是看过我之前分享那套 long chain 的 视频, 因为整个你有那个技术的话,我们整个这个学习的门槛就会比较的顺一点点啊,所以这是给大家强调。然后呢, 呃,第二部分,对于 long graph, 我 们会逐步的带领去掌握它的一个整个使用大约模型,一种经验,把拆解出几个大的部分出来,你把每一个部分掌握清楚,相当于都能够把工艺上升一个台阶,而不是把整个框架,各种细致模型的 api 全部混杂到一起。就有很多朋友学了,觉得啊, demo 感觉强大无比, 但是抛开 demo 一 看,我自己完全不知道怎么回事儿,对吧?那我们这一次把 long graph 来构建一个单独的 agent 智能体, 嗯,其实 long graph 重点我们知道它是做一种多智能体的架构,对吧?但是你要做多智能体架构,肯定要有一个基础啊,你要有单个智能体作为的能力的支撑,你才可能构建这么样一个呃,庞然大物,对吧?这就好,我们好像我们要是要砌一个房子,我们要砌一个大的房子,那一定是先要有这些扎实的砖块才行, 对吧?而 long graph 呢,它也提供了很多对于单个智能体的这种构建的思路。当然,其实对于单个智能体来说, long graph 它可以来构建 a 九的智能,其实很多的呃,像 long chain 里面很多功能,我们封装起来也能够形成一个所谓的智能体,对吧? ai 智能体,像 a 九的智能体其实是一个什么概念? 其实业界并没有一个标准说到底什么样才是智能体,只不过是通过 agent 这种智能体的概念,把大约模型一些基础的能力封装起来,那未来我们有任务就可以放心的交给这个 agent 去管理,对吧?交给这个 agent 就 行了,我不用去更多的关注这个 agent 内部它的一些细节, 既然有这种设计,我们才可以从一些好的一种设计的思路,才能够去解决更多的这种啊不同的问题。 所以这里呢,我们会拿着 agent 那 里来首先进行一下裁剪,做一个铺垫啊,然后呢,那后面讲到 agent 呢,我们会接入带大家去用 long graph 单独来了 解并且接入一个 m c p 的 服务,因为 m c p 服务确实是现在整个 ai 大 模型圈呢非常火的一个技术方向,包括现在整个全世界不每就现在已经有成千上万的 m c p 服务都在不断地冒出来啊, 但这其中呢,有这些质量上层的这一些 m c p, 但是也有很多鱼龙混杂的服务啊,那么 在这一部分,我们肯定要对 m c p 啊有个更深的掌握,你不能够作为程序员嘛,那肯定,呃,我们更加有有更加的这种条件,能够更贴近的去了解 m c p 的 底层,也能够把这个服务用的更好一点点,对吧?而不是说像,呃,有一些像平台,像阿里云百联这种平台上,它就支持就是 你用这种图形化的方式拖拽一下就能够快速调用 mcb 符那种呢,你是就相当于你是会用,但是你不清楚你的底层,所以遇到一些复杂场景就不知道如何去构建啊。那我们这里呢,对于 mcb 符也是 大家可以比较这个深度就知道啊,我们呢重点是从 long graph 这个框架入手,跟你接受 mcb 符,那么必不可少的是要带你去了解 long graph 如何去接入 mcb 符, 对吧?但是呢,我们作为程序员来说,那一定用到这个协议,就要对这个协议,那这个服务的协议本身要有更深的理解,所以我们不光去了带你去了解客户端,还会带你去了解服务端怎么去实现。 m c p 是 一种通用的协议,基于这个协议,很多人帮我们提供那些现成的工具,但是对我们重训来说, m c p 是 一个更加强大的工具,未来我一定有一些自己私有的一些符,一些数据,我也想通过 m c p 协议暴露出来,那这时候你必须要了解到服务端,对吧?所以对于 m c p 和咱们客户端服务端,都当你深入去分享 好,相当于有了 long graph 前面这些基础之后,接下来进入 long graph 的 一个核心啊,就是 graph 了啊。其实 long graph 这个框架可以从两个从拆成两个单词来看,一个是 long long 呢,它是我认为就是和大约模型交互的这一部分, 而它的核心呢,是后面这个就是 graph 图,所以 long graph 实际上是大约模型和 graph 图结构去结合到一起。而其实这个所谓的 graph 图结构,它也并不是 long graph 才有的啊。 即便在大圆模型出来之前,说 long long chain long graph 这一系列框架出来之前,图的结构也已经在很多场景落地了,包括我们在大数据时代就会建立一些这种知识图谱,对吧?那其实也是图结构的一种表现。 所以其实谈到 long graph, 我 觉得有必要就是抛开大圆模型去把图结构梳理清楚,其实你把这个 graph 这个图的结构梳理清楚之后,那整个 long graph 的 应用的这种感觉就会马上有一种不,不一样的啊这种感觉。 因为你像我们分析这个 long graph, 它是两个单词嘛,一部分是 long, 一 部分是 graph, 而其实谈到 long 和大约模型交互这一部分,很多别的框架都已经能够帮我们实现啊,对吧?包括 long chain 也能够帮我们实现很多和大约模型交互的功能。那为什么有这个 graph 呢? 其实就是通过 graph 的 形式,我可以把一个很复杂的任务抽象,逐步抽象成一个一个更加细节的这种呃个体。那这样的话,我们有了这个 graph 作为基础,才能够有能力去设计一些更加复杂的业务场景。 所以呢,我们在第四年会抛开大圆模型,带你真正把 graph 的 核心给你揉揉碎了,带你一一的分析清楚,包括这个图结构是什么样子的,每一个节点它实现成有每一个组建,实现起来有一些什么样的这种特点,然后 long graph 提供的哪一些便利都会和你分析清楚啊。 然后呢,有了这个 graph 的 基础之后,接下来才我们才开始把 long graph, 它有了图结构之后, 它要构建一种所谓多智能体的架构,其实很多时候有了这个图的结构就已经很清晰了,而且对于 line graph 来说,其实我们是很多时候在企业当中用 line graph 的 时候,也并不是把这个 框架单独拿出来用,而是会结合很多的别的框架,或者文字里写的很多代码都可以结合起来,因为图是种良好的结构,有了图这个结构之后,相当于把我的应用化成了一个一个的房子了,那这个房子里面装什么东西其实都可以装的, 我可以装 long graph 或者 long chain 的 这些系列代码,我甚至也可以装 lama index 代码,或者装其他我们本地的业务代码都可以。而通过图的方式把这些复杂业务代码形成一种良好的这种架构的组合,这就是 long graph 最好的一种体现。 那其实我们和大约模型交互的很多场景,即便不用图的结构,我们就按照过程一步一步想,哎,我应该先问大模型什么问题,拿到答案之后做什么步骤,按照过程的方式一步一步去做也能够实现。但是区别在哪?区别在于 我们这种面向过程的设计方式,往往在面向一种大型的项目的时候,一些复杂的项目,甚至是比如说跨个人啊,跨甚至是跨团队的项目的时候,就会变得有一点点力不从心, 就像我们以往做拍省做加法这应用程序一样的,对吧?我们简单用一个慢方法也可以打天下,把一把一个整个业务的逻辑全部做完都可以,对吧?但是为什么我们有各种各样的架构呢?要有像 spring boot 这样的一些框架呢, 对吧?要有微服在那些架构思想呢?其实就是我们要把简单的任务要一个拆分,对吧?那其实 long graph 在 这块提供了很多的帮助啊,它提供了这种基于 long graph 的 组织方式,另外在实现多智能体,尤其是多智能体协调的过程当中,它也提供了非常多的便利性, 包括你像这种 time travel 啊,就是我们如果只是简单和大约模型交互,和它交互完了,就就一次简单的一个流程啊,就交互那么一两次就结束了。但是如果我构建的是一个很复杂的应用,我这个应用过程当中要和大约模型进行多次的交互,并且可能要根据它的不同的反应要做出不同的业务逻辑, 对吧?那么如果你形成了这么一个庞大的业务逻辑之后,你就想啊,如果我的某一个中间,某一个运行过程出错了,比如说我某一步问大源模型,大源模型给的这个结果,它没有太遵循提示词,意味着我整个逻辑是不全部要重来, 就对于一个大型的业务场景来说是比较麻烦的,成本是比较高的。而像 long graph 提供了这么一种 time travel 的 机制,它就可以帮我们在 一个图执行完了之后,我可以去看他的执行过程有哪些啊,每个过程的结构,每个过程产生什么样的结果。如果某一步的结果不好了,我就可以回到之前出错的那一个节点,我们可以手动进行一些调整,调整完了之后再去接着往下就执行, 相当于整个任务完成了之后,我再进行一次时间的回溯,回溯到整个任务执行的某一个时间点,继续往下执行。 那有了这些便利,是不能够更好地帮我们去构建一些复杂的大元模型的应用,对吧?所以这也是 long graph 一 些啊, 就是和大元模型结合的一些核心,对吧?那我们也会带你去通过实战的方式去掌握怎么去用,然后呢?更重要的是通过不断的一些实战的一些案例的分析方案的分析,带你真正去会去思考怎么去用,呃,就怎么去用好 long graph 这个框架, ok, 好, 那有了前面铺垫之后,我们这一次呢也带给大家带来一个纯手写的一个实战项目,就真正是从零开始啊,零换代码在做。然后呢,真正按照企业本的那里构建一个啊,这样的混合的多智能,有一个典型的这种带有监督的,带有任务分配的这种多智能体架构,而且在我们这个多智能架构当中含盖了 呃,目前企业当中使用大约模型比较典型的一些场景,本身我们这个项目就是呃一个非常有用的一个企业级的一个实战项目,然后这里面呢包含了各种各样主流的实现方式 啊,以前对大约模型应该有点接触的朋友,你看一看这些就知道,对吧?我们会做各种各样的智能体,然后通过一个这样的任务裁缝的智能体的任务进行整合, 而我们在这个项目当中实现的这智能体也是非常有企业级代表的,包括我们会做一个集成 m c p 服务啊,提供一些特定业务能力的,能够处理一些业务能力的智能体啊,也会基于这种 r i g 的 解锁增强形成一些啊,这种基于这种解锁增强的,能够去解决企企业思域问题的这些智能体, 也会还会做一些任务兜底,证明代表的是那些就是不需要大圆模型,我也能够独自完成的这么一些任务兜底的这些这些结合自己业务去实现的智能体, 然后我们把这些典型的场景做成了一个完整的企业级的一个项目,在这过程当中通过这个实战能够接待大家去了解整个一些复杂的这种智能体的一个多智能型架构,从设计到实现应该是怎么去思考的? 在这过程当中有些什么问题我们应该逐步的去解决的,包括还会大家去更多的去思考一下未来。我真的在项目当中,哎,我真的遇到一些典型的问题了,我怎么样去啊?用 long graph 这种思想去解决好这个问题,而且通过这个实践更多的是要带大家去思考一个问题,就是, 呃,我们为什么要用这些框架,这些代码的方式去和大元模型交互,你说我们到底为什么要学这些框架? 如果仅仅只是为了和大约模型去交互,去获得一点结果,那其实这个事根本不需要代码,对吧?我们装各种的访问,一些网页,装各种的 app, 这都可以用,包括以扣子啊、 define 这些为代表的一些图形化工具,现在也能够解决很多的问题, 那为什么我们要去学这么一些代码的方式呢?感觉技术门槛还更高了,对吧?还没,远没有图形化的那些工具那么直白, 但其实通过这个实战你都能够体会的到,为什么我们用代码的形式,因为代码的形式能够更好的释放你的想象力, 而不会受这些工具他们能力的一个框框的限制啊。其实你包括像扣子啊、先递范这些能,这些工具确实好用,对吧?里面的插,但是其中核心功能需要通过很多插件来实现,这些插件能够帮我们减少这一些应用的门槛,但是其实也给我们画了一个更大的框框, 意味着说我们这些所有和大元交互的业务经验和能力都划定在这个框框里面。如果这个框框足够大还好,但是如果你真的想把大元模型当成一个呃技能,而不是一个爱好去玩的话,那么总有一天这个框框会限制你的想象力。 当你想要突破这个想象力的,比如说你要实现某些功能,那扣纸上包括地方上没有对应的框架怎么办?他没有比没有别人给你提供对应的插件怎么办? 或者说他那个图形化工具里面有一些流程是是实现不了的,或者说他之前没有想到的,对吧?那你是不还是要自己写代码?其实包大家如果了解过像扣子地方的平台,在这些图形化的平台上,他也支持写很多代码, 他也可以通过他的图形化框架写很多代码,为什么?就是因为这种图形化的方式,而这种一定是对你的想象力是有一个限制的, 只有用代码这种方式能更好的释放你的想象力,但是你能够想到我们在那些抠字啊, diy 那 些图形化工具当中写些零零散散的代码,和你完全用代码去思考一个问题,这种 整体的理解感觉肯定是不一样的,对吧?那之前那种方式,第一种方式会显得很很零碎,很凌乱,但是如果我们全盘用代码来思考,那么从整个问题的根部, 从整个整个像整个这个问题的这个根本问题,到后面发展的各种新的问题,你都可以有更好的能力去把控,也能够把大约模型工具用的更加的称心如意。而这也是我们要给大家分享这些视频的一个技术,其实就是现在互联网上充满了各种各样炫技式的呀,这种面向流量的视频,对吧?那其实我们这套视频就真正是 呃给大家纯粹的做这种技术的分享啊,这也是就是呃录制这个视频过程想跟大家说的,因为现在确实 ai 大 模型时代呢, 呃流量的影响确实很大,所以我们其实也面临很大的这种流量的压力,那如果大家感兴趣,也是希望能够呃大家有一个三年,或者一个大家三年的一个知识,但更重要的是我们希望在这个背后能看到一点技术的雏形。 好,那么接下来我们进入第一个章节,那我们快速的来了解 long graph。 那 这一章节呢,其实主要是要带大家去思考两个问题, 第一个就到底什么是 long graph, 它是帮我们解决什么样的问题的啊?这是一个比较常规的问题,对吧?那么第二个呢,就是要带大家去思考一下 long chain 和 long graph 这两个框架的区别。 那我们先来聊这个 long graph。 呃关于 long graph 呢,其实现在但凡对于大语言模型技术比较感兴趣的朋友,应该都或多或少地接触过一些 long graph 的 资料了,对吧?因为 long graph 本身在业界的影响比较大啊,包括应用其实也非常的广。 然后呢,现在互联网上其实关于 long graph 的 各种视频啊,资料啊,也可以说是铺天盖地了啊,但其实我觉得对于 long graph, 其实 大部分的这些资料,包括 long graph 的 官网,都是把它当成一个纯粹的框架再给大家介绍啊,就后面会带你去介绍各种的 api, 哎,可以实现什么样花里胡哨的功能,对吧?但其实我觉得在我们去接触一个新的技术之前,一定要开始去 掌握一个就是大的一个框框啊,就是这个框架它能够帮我们解决什么样的问题,或者它的核心价值在哪?只有这样的话,未来我们去接触各种花里胡哨的 api, 对 吧?各种花里胡哨的这种效果才能够不至于迷失 啊。什么叫迷失?就是很多朋友容学一些技术,容易陷入一些细节,未来我们接触 api 有 各种各样的 api 方法,有各种各样的参数要去调整,对吧?还有各种各样的案例要去实现,那我们就会陷入到各种各样细节当中,觉得有一点点 晕头转向啊,所以就很容易放弃。但是如果说你前期把这个问题思考好了,你会注意到,哎, long graph 让我们核心解决一些什么样的问题,那我知道了之后,我就知道我后面学习的一个重点是什么,对于一些相对细致默契的东西,那我就知道自己有一些取舍,这样学习才能够更加有成就感,也更加有效果,对吧? 那 long graph 实际上是一个什么样的框架呢?呃, long graph 它实际上是一个呃构建大语言模型本地用的框架,比如说它的作用就是帮我们把大语言模型的能力发挥出来,它能够和我们本地的一些应用去结合,从而解决我们一些传统应用的问题, 这样能够让大模型更好地落地,对吧?但其实从这个目的上来说, long graph 和我们之前介绍过的 long chain 其实都是一样的, long chain 也是帮我们去构建大约模型的本地应用,对吧?那么它们之间有什么区别呢? 那其实我这里谈到一句话就是,呃,你如果学别的框架,可能不需要去过多的注重这些对比,你就学一个框架就完事,对吧?但是对于 long chain 和 long graft 这两个框架,一定要着重去分析,为什么?因为 long graft 和 long chain 并不是两个独立的框架, 我们知道 long graft 其实它就是 long chain 的 一个生态的主键,也就是它其实是 long chain 当中的一个部分,你可以这么理解, 那你想一下,哎,既然他们都是在同一个框架当中的,对吧?那么为什么我们要做两个差不多的框架,他们共同的完成同样的事情呢?都是帮我们去构建大元模型本地应用呢?那么他们区别在哪?难道是这帮牛逼程序员就是为了去炫技吗? 那肯定不是嘛,对吧?所以我们后面去学习 long graph 的 时候,还是要注意它和 long chain 的 一种区别,其实就是 long chain and long graph 它们共同的去实现了一些啊,一个大的一个框架,而这个框架里面其实有两个不同的立足点,所以才需要两个不同的框架来啊, 共同的实现一个一个目标啊,但思路肯定是不一样的,对吧?所以后面会给大家说,就是呃,整个我们介绍 long graph 的 这一个视频啊,其实是默认大家呢,预示大家是有 long chain 的 基础的,如果大家没有 long chain 的 基础,可以看一下我之前 去给大家分享的这套 long chain 的 视频啊,因为其实最好也是大家能够去看一下我之前 long chain 的 那个视频,这样的话,整个思路比较连贯,包括整个给大家分享的这个风格也会比较的统一啊, 就简单来说可以更加成体系一点嘛,对吧?所以我们后面是预示大家有这个 luncheon 基础的,而且我跟大家强调就是对于 lun graph, 你 一定要去注意和 luncheon 的 一个对比, lun graph, 它是 luncheon 的 一部分,所以如果脱离 luncheon 来介绍 lun graph, 在 我看来都是纯粹的耍流氓, ok, 那我们就沿着这两个问题给大家分享。第一个,我们先来看这个 long graph 到底是干什么的,那 long graph 呢?其实我们可以看一下它在 long chain 这是 long chain 的 官网, long chain 当中就有两个,呃,生态体系, 生态系统啊,一个是 long smith, 一个是 long graph, 它们是干什么呢?其实这个图就比较就已经做的比较的明确了啊, 那在这里呢,实际上就这个图啊,我们把它画了一些一些这个注示,那可以看到这个 long, 呃, long chain 毫无疑问是整个 long chain 的 一个生态的核心,对吧?它构建了从底层的基础框架到中间的各种啊 integration 集成,对吧?中间这最核心的部分,然后呢有两个生态的系统,一个是 long graph, 一个是 long smith。 其中 long smith 呢,这个它主要是用来做调试的, 就帮我们提供一些和大元模型交互的这种迭八的信息啊,对吧?包括一些这种案例的测试啊,包括一些提述词管理啊,对吧?包括一些这种性能的监控啊,等等,它是一个商,一个 commercial 商业的主键。所以这个 launchspace 其实就是说 它对于我们的构建 long long 嵌的应用来说,是属于纯粹的一个工具型的应用,你不用它也没有关系,你用它的能够就能够做一些商业化的这种更完整的应用啊,所以这是 long smith, 而你再对比看下 long graph, 你 就会觉得有一点点不一样。 long graph 被划成了两个部分,它有下面的这一个部分,哎,是一个 o s s, 也就其实它是一个核心的系统啊,它也是这个,这个和 long chain 甚至是并列的一种基础架构。上面还有一个 long graph 的 部分,这个呢,就是一个 commercial 商业的部分啊,那这两个部分是什么意思呢?其实就是 呃, long graph 提供了一系列底层的功能去完成和 long chain 类似的工作,然后同时它也构建了一个 long graph 的 platform, 一个平台,这个平台主要是用来部署这个应用的,也就是说 long smith。 是 啊,这个 long chain 它实际上提供了一个云环境,在这个云环境,你可以快速地去部署你的 long chain 系列的应用啊,就是这个。好,那 这个这么来看呢,我们对 long graph 大 概有一点点了解了,那具体的干什么事可能还是不是太清楚,对吧?没有一个很明确的概念。那么这儿呢,首先大家看一个什么呢?咱们可以去 long graph 的 官网看一下,就是 long graph, 你 点开这个官网,你可以看一下 对于 long graph 的 官网呢,其实它官网呃也是更多的教你去怎么做,那怎么找到一个好的结构呢?对于这个官网我们可以这么来看,你就看到左边这个目录,你看一个比较好的一个总结, 可以看一下。首先第一个呢,是一个 get started 的, 就是教你怎么去用嘛,这个自然没有什么啊,这个没有太多的一种,就教你大概去见识一下 long graph 到底是干什么的啊。然后后面的比较重要,后面可以看到整体的这个介绍啊,分为三个大的章节了。一、第一个章节是 pre built agents, 教你去预先构建 agent 智能体。那谈到 agent 智能体这个东西,大家应该耳朵都听出茧了,对吧?那现在反正不管懂不懂 ai 大 模型呢,天天都在提 ai 啊,天天都在提这个 agent 的 智能体,那 agent 到底是什么?所以看到欸, long graph 有 一个很重要的部分叫我们预先呢,构建一个 agent 智能体,帮我们把这个抽象的概念在 long graph 这个体系当中有一些落地了,对吧?然后第二个部分呢,是 long graph 的 framework, 这一块自然就是不用多说,是 long graph 最为核心的部分了,对吧?然后呢,这下面是一个 long graph 的 platform 啊, platform, 那这个 platform 之前跟他说过,它是一个商业的体系,主要是做部署的,所以其实接下来我们学习的重点呢,也也是我们给他分享的重点,重要也就是这个 pre build agent 和这个 long graph framework 这两个部分 啊,那这个 long platform 呢? long graph platform 呢?这个就不去多做介绍,因为本身其实我们构建很多应用的时候,不用商业组建,我们也可以来构建, 对吧?而且你如果未来用这种商业主见你真的准准准备出钱了,那其实对应的平台上手也是非常快的,所以我们这就不做重点介绍,重点介绍的是 pre built agent 和这个 long graph platform 啊,也就后面这两个部分 ok, 而且这两个部分呢,其实我这里也给他做了一个简单的一个介绍啊,这个 pre build agent 的 部分呢,其实就是第一步要去构建 agent 智能体,我说这个呢是 long graph 应用的基础,其实你从这里面基什么叫一个 agent 这个事呢?其实业界是没有一个标准概念,大家都在说 agent 啊,只是说,哎,我的任务可以交给这 agent 去处理, agent 可以 比大模型语言的能力更加强大,对吧?它可以帮我们解决更多的问题。但是到底什么是 agent, 这个其实业界并没有一个明确的说法,包括现在各种业这种企业的场上的一个概念,其实也在不断的变化,到底什么是 agent? 有 这种 m c p 协议对吧?很多朋友 m c p 协议还没玩明白,又出了一个 a to a 协议, 这里到底是些什么东西都在定义 agent, agent 到底是什么?就这个其实很难说,这个也没有一个完全的一个标准,只不过大家都是大家根据大家对于应用的一个情况来判断,哎,我理想中的 agent 是 一个什么样子?而这个 long graph 实际上它就给了我们一个基础的比较成型的概念。 这到第一部分去构建 agent 啊,但是其实 agent 呢这一部分呢,很多的东西其实和 luncheon 呢是,呃比较相通的,就如果你像我们是预测大家是有这个 luncheon 的 一个基础嘛,对吧?所以其实你看它里面的很多的东西,哦, 很多的东西,你看,比如说像 stream 流势输出,比如说像这种啊 memory 就是 进行多人应用的这种消息的记忆管理,对吧?还有包括像这个 tools 工具应用,哎,这种其实就是和 luncheon 很 相似的部分, 对吧?所以其实在 long graph 当中对于智能体的构建,呃,在我看到它并不是它的一个重点,因为这一块其实有 long chain 已经帮我们可以去做了。 那 long graph 它的核心是什么?其实就是要给大家介绍的。后面的第二个部分就是 long graph 的 framework, 这一部分呢就是它主要是用 graph 图的方式,它能够将多个智能体把整合成一个整体,这就成了一个 long graph 最核心的部分。 打个比方,这个 agent 就 好像说我们定义一个员工,他应该怎么去解决些问题,比如说我们在一个软件公司,哎,我可以通过呃这个 agent 的 形式来构建一个,比如说一个程序员, 哎,这么一个 agent 的 智能题,那这个程序员他就要自己去完成,从啊框架设计到代码编辑,对吧?到最后整个提供部署,整个打包这种一系列的过程,对吧?他要去完成,所以他就需要通过用可以用嵌的方式一步一步构建,哎,我怎么样去 裁剪这个需求啊?我怎么样去写代码呀?然后我写完代码之后怎么去测试打包啊?整个这个环节一步一步构建好,对吧?那这其实 long chain 他 能够帮我们去解决这个事, long graph 也能够做,但是这个事他就相对来说没有那么简单 啊,他就没有那么关注,那 long graph 更加关注的是什么?就如果你的眼界拔高,你会发现我要把一个项目推进推进下去,那我要看的是整个团队的人,各个角色他应该怎么做事, 对吧?比如说我的需求人员怎么去设计需求,我的测试人员怎么去测试,对吧?我怎么去交付等等这一系列的过程,对吧? 所以 long graph 它更加关注的是如何把多个智能体把整合到一起,而这里用了一种 graph 图的方式。 graph 图呢?其实也并不是 long graph 的 一种特有的一个结构,其实在以往大家如果接触过大数据比较多的话,大数据里面经常也用这种图,包括有这是图谱之类的,就是,所以这个图就是看我们后面重点就看怎么去,哎,通过图的方式把多个智能体结合起来,形成一些多智能体的场景, 所以这是带大家一个整体的总结。未来其实后面的分享过程也是希望大家能够在分享过程当中不断地对 agent 和图这两个概念形成一些自己更清晰的理解,这样的话哪怕未来这些版本可能会更迭,对吧?包括大模型,也可能出来更多的大模型 啊,像大冒险能力也在不断的加强,而框架也会不断的进化,那在不断的进化过程当中,如果你真的把 agent 和图这两个东西掌握清楚了,有一个大致的想法了,那未来其实你会发现,所有的变化都会是万变不离其宗啊。 好,那前面呢,是给大家做了一个简单的分享,可能朋友们概念还不是特别清晰,对吧?你能在能量的时候就这么说,说完之后我也没啥感觉,对吧?那接下来呢,咱们是这样的, 我会发一个章节,快速地体验一下 long chain 和 long graph。 比如说通过简单的这一些第一眼的很简单代码,来看一下我们之前介绍的 long chain 和 long graph 之间这种合作的关系是怎么形成的。 ok, 大 概是一种什么?然后用 long graph 去做这种大冒险的用,大概是一种什么样的感觉? 当然,这里呢,只带大家快速的体验啊,不会介绍太多的细节,后面的细节部分,实际上我们还会在后面章节再给大家详细的拆解。 ok, 那 有了这个章节的介绍,实际上我希望就是大家能够在后续的这个,呃,看我这个视频的过程当中啊,就自己的目标更加的清晰。 ok, 好,那我们先来说用这个 lun graph 和 luncheon, 那 首先需要搭建环境,搭建环境呢,基础的拍摄应用的环境。在我之前 luncheon 的 视频呢呢,给大家去已经分享过了,所以不给大家去做啊,想重复的分享了。那这块呢,主要是来怎么去用 luncheon 呢? luncheon 呢,需要一个核心的,主要就是, 呃,这个 luncheon 的 这个依赖主键啊,就在核心的 luncheon 的 依赖主键,然后呢,后来我们要用这个 luncheon 做对比,所以呢,也把这个 luncheon 和 luncheon community 这两个主键也都把它装上。 ok, 这里呢,我之前是已经装过了,所以相对会比较快一点,我看一下啊,这个环境,没错,这是我之前装过了,所以呢,呃,装的会稍微相对快一点,大家如果第一次装的话会稍微慢一点,实际上你是装的过程你会发现啊,你在装这个 long graph 的 时候,它就会去安装 long chain 的 核心包 啊,它不是安,不是依赖整个 long chain, 是 依赖整个一个 long chain 的 核心包,所以 long graph 上它是以 long chain 的 核心包作为基础的, 然后再安装这个 long chain 啊,安装完了之后呢,咱们先来一个第最简单的一个案例,就是怎么和大模型交互,这个是我们做的第一步,对吧?因为你要围绕大模型构建应用啊,那我肯定要能够和大模型做交互啊,那我们看一下用 long chain 和 long graph 同样去和大模型完成最简单的交互,感觉上有什么不一样? 首先来看这个 long chain, long chain 呢,这个之前给大家详细介绍过核心呢,它的核心就是通过这个 initchat model 这个方法来构建一个 chat model, 一个 chat model, 然后通过这个 chat model 来完成和大约模型的交互,所以我们这个代码就是最简单的一个啊,实现啊,就是 访问的是 openai 的 gpt foro mini 这么一个模型啊,然后它的 provide 的 open i 表示访问的是 open i 的 模型,然后呢,像这个代码之前给大家详细做过介绍啊,在狼群当中做过介绍,因为 open ai 对 国内的 vip 是 有限制的,所以我们这里用了一个国内的代理, 然后呢,这里也是这个 key 也是在这个代理上申请的,这样呢,你就可以不用去科学上网了啊。然后这里呢,就是把呃它的 api key 设置到环境变量当中,这样就不用去在代码当中指定了 啊,然后我们这里呢是通过一个自己定义的 load key 的 方法去管理这些 api key, 统一进行一个管理,在代码当中不斜死这些东西啊,好,然后呢,我们通过这个 model 就 可以和大约模型来交互,对吧? 啊,一执行我就可以问,哎,你是谁?你能帮我解决什么样的问题?那他就可以访问咱们国内代理拿到,哎,这是一个告诉你我是一个人工智能,对吧?可以帮我解决巴拉巴拉巴拉,什么问题, ok 啊,这就是和大模型交互,就说我们就核心通还是通过一个主键去完成和大模型的交互过程,对吧?好,这是呢,大家比较熟悉的 long chain, 那 long graph 又是种什么样的感觉呢? long graph, 它和大语言模型交互最简单也是最核心的方式,就是通过它定义的一个叫做 create react agent 这么一个方法来构建一个 agent, 然后同样也是通过这个 agent 去完成和大语言模型的交互, 但是在定义这个 agent 的 时候呢,它先定义了这个 create 呃 react agent, 然后呢,这个 agent 里面有一些组建, 像这个 model 和 tools, 这两个是必写的,就你必须要传的啊,你可以看它的 api, 你 能看到它的这个 model 和 tools 啊,是必须的。然后这个 prom 提示词呢?实际上是 option 是 可选的啊,你可以不选,那这两个是必须要选的啊,必须要传的。传进来之后, 像它这个 model, 也就是大元模型,它就把我们之前构建了 long chain 构建的这种大元模型直接可以封装到这个 agent 里面,然后呢,通过这个 agent 去和大元模型完成交互,它同样也能够完成我们之前这个交互的过程。 好,那你从这个案例是不就能够感觉到一点点,就是 long graph, 它是怎么和大元完成交互的?它是把 long chain 那 些核心功能封装到一个 agent 的 内部, 对吧?这样的话,我去未来应用当中就需要关注这个 agent 的 这个智能体就可以了,它就可以去智能体去完成一些特定的任务,而我们就不用过多的关注智能体内部实现的细节。 就好像我们现在角色已经从一个程序员拔高出了一个项目经理,那项目经理我就要分配,哎,我就要我的更关注,就是我下面有这个,有这个程序员了,我要给他安排什么样的任务,对不对?至于说你程序员怎么去写代码,你用什么框架去写,那你的一些判断应该具体的判断啊,一些小的,一些一些方案怎么去做,那个就不关心了,对吧?就大概这么一种感觉, 而且它这个构建的是一个 create react agent。 什么叫 react? 实际上它这个 react 的 意思啊,就有那种。呃,你可以理解为有一点那种随机应变的意思,就是它要根据外界不同的条件去产生不同的反应, 而不是说你所有问题都问大模型啊,未来我们可能也需要更多接触这个 react, 它的意思是什么? ok, 当然这个现在不是目前的重点,目前大家是理解它的一种方式啊。好,那我们直接说了说 long long graph 这个 agent 呢,它是对一些基础功能的封装,那到底什么叫封装呢?封装了一些什么东西呢? 好,那我们接下来再来一个案例给你看一下,例如说在 a 技能当中啊,它这个 tools 是 必须指定的,即便你没有指定工具,也需要必须声明这么一个 tools 东西。那 这个 tools 到底是个什么东西呢?其实这个就是我们在 launch 的 那个提到的这种工具,就调用辅助的工具,或者也是我们常说的这种 function calling 函数调用是啥意思呢?简单来说就是在大语言模型完成一些特定任务的时候, 我们可以给大模型,给大语言模型提供一些本地的工具,这样呢,让大模型在回答一些特定的或者一些包含私域信息的任务的时候,他也能够得到比较靠谱的指导,而不用说全部依靠自己从网络上学到的能力。 ok, 那我们像这个 tools 工具机制,也是现在的大语言模型都会具备的一种能力,在应用当中也是非常重要的一种能力,就只有这样才能够通过这工具之能够把大语言模型更好的和我们本地应用结合起来,因为说我们本地的应用很多数据存在数据库里面,那大语言模型他只学的互联网上的信息,他也不可能学你数据库里面的这些信息, 对吧?那怎么给大冒险补充咱们内部数据库的信息呢?这个工具机制就是一个比较好的方式,我可以给大冒险提供一些工具,大冒险发现这些问题需要使用这些工具的时候,那在我们在调用工具,而这工具的实现方式可以从我们,比如说我们自己实现,那我们从数据库里面查数据啊,这些什么都可以,对吧? 那我们这里有一个案例,这里呢是用 launch 来完成整个呃 tools 工具调用的整个流程,这个其实也是我们之前在 launch 当中给大家做过很多的更复杂的分享,所以这里就不给他去做更多的介绍,只是大家先回顾一下整个感觉。 那其实核心来说就是对于拓式工具核心来说就是要和大模型完成两次交互啊。首先呢,你看这里啊,我们是要构建一个大圆模型,这个啊,我们是这里就换成了同意就咱们国内的前问,国内的前问模型,阿里的前问模型,这样呢我们就不用去科学上网了, ok, 同样管理这个 key, 然后呢可以通过这个 add to 注解,将这个含,将某一个函数声明成一个工具,也是我们自定义的这种啊, function 啊 function。 然后呢也告诉你这个函数是干什么用的啊?接下来把这个工具和大核模型绑定到一起, 然后接下来我再问大元模型这个问题的时候,问他今天几月几号这个问题的时候,那么首先会打印出大元模型给出的第一个结果,这个结果是一个 ai message 啊,能把它执行起来 啊,这个 a m h 打印出来是什么东西呢?首先就是我们看到的这一段啊,这一段,这一段日期,就这个东西,这是啥东西?就是大约模型第一次你问他今天几月几号这个问这个问题的时候,他第一次给你的回答,给客户端的回答 content 是 空,意味着他并没有给出直接的答案, 而是他会去判断,哎,你之前告诉我有一个工具可以获取今天的答案,而是他会去判断,哎,你之前告诉我有一个工具可以获取直接的答案,而是他会去判断,哎,你之前告诉我有一个工具有用啊, 他自己判断这个工具有用啊,所以他返回的内容当中 content 是 没有,是没有给出正确答案的。然后呢,他希望要申请一次工具的调用名字是什么?就是你这个,你给他告诉你这个工具的名字, 如果有参数,当然当然有,会指定这个参数,当然我们现在这个函数是没有指定参数。 ok, 所以 他就给了这么一个 ai message, 这个 ai message 告诉你,我就希望调用一下这个工具。然后呢这里我也是把它的,把这个工具呢,把这个信息也加到我的这个消息列表里面,之后打印出它的 tool course, 就是 下面这个啊,这一段, 这个拓图,就下面这一段啊,这一段就告诉大家要大模型要调用一个本地的 get current data 这么一个工具。好,我现在知道它有这个工具了之后,那么接下来就从相当于这次我本地的缓存,从这个名字通过这个 get current data 这个名字找到对应的函数, 找到对应的这个函数,然后就调用这个函数获得当天的结果。最后呢,把这个呃我的工具执行的结果也放到消息列表里面,一起再去给大模型去交互,这样大模型就最终能够给出一个正确答案。今天是几月几号, 对吧?这就是和大和工具交互的两个交互的过程,就第一步,你要你要把你的工具告诉大模型,大模型自己判断它,判断如果需要工具调用它就给你第一个这个 ai message 带 to or close 的 ai message, 然后你本地执行方法之后把这个函数的结果也给大模型,大模型就能够最终综合所有的结果给出个相对正确的答案吧。给个更加正确的答案, 这是工具机制的指不定执行的过程。那我们使用 long chain 这种观察来做的时候,相当于就是每一个步骤你得自己去实现,当前帮我们提供各种各样的工具,最后这个过程怎么去走和工具的两侧都需要自己一步一步去做,这就是 long chain 的 感觉, 就好像我们写代码需要一行一行的写,一行一行的去,一个一个小功能去实现一样的啊,那么接下来我们再用 long graph 去做是一种什么的感觉呢?哎,用 long graph 来做这事就会变得超级简单,怎么简单? 看一下 long graph 的 实现方式,和之前去完成大模型调用几乎没有区别,也是通过 create react agent 去封装一个 agent 代理,然后呢,把你的大语言模型,把你的这个工具全部封装到这个 agent 里面, 然后呢,你就直接去问大语言模型问题就可以了,问这个 agent 的 问题就可以了,然后你再去执行,你会发现 这个结果最终给的结果是这样的,是也是拿到今天这个日期,但中间整个过程呢?我们之前用 long chain 写的这么长的一段过程,他有没有走呢?实际上他也是走了的, 你分析它这个消息列表就能够知道。你看,首先第一个是 human message, 就是 我们我们问给问大语言模型的问题,对吧?今天几月几号?然后呢,它是不是第一次教会给一个 ai message 啊?这个 ai message 的 content 是 不是空,对吧?然后呢,带有什么 tool of course, 它要调这个工具, 对吧?一定要做个工具。然后呢,接下来是不是就调用了本地的工具获得一个 tool message, 有 工具执行的结果,工具执行结果是多少?按照我们代码写的,是要给的就这么一个日期, 然后,哎,把这些消息放到一起,放到这个 message 里面,再发给大模型,大模型最终拿到一个正确的结果,他对这个工具执行的结果做一下封装,他就做一下解析,相当于做了一些解析,他判断一下就知道,哎,是二零二五年六月十号,是不?这就是整个我们之前执行的过程, 对吧?所以说你算到底什么是智能体?其实这里是不是能够有一点点感觉,所谓智能体虽然在,至少从我们现在看到这个视角来看,它就是对大语言模型各种基础的能力 进行一个封装,从而让我在应用层只需要关注智能体,而不需要关注智能体处理问题的细节, 对吧?当然这是一个初步的印象,我并不说这一定正确。这个呢,到底什么是 h 呢?也希望大家随着我们对于 long graph 了解更加加深,自己形成一个更加清晰的定义,这样在应用当中你去应用才能够真正的分析清楚某一些业务场景。我到底是应该用 long 这种 呃嵌的方式去解决,做一个相当于做一个流程的编程呢?还是说用 h 的 方式做一个这种功能的封装?这个呢,也是我们在应用当中真正需要去熟悉的东西啊。 好,所以这是这一章节给大家看到。当然呃,从这里可以看到,我们要构建一个智能体是很简单的,在 long graph 当中,几乎所有构建智能体的方法都是 集中在这一个函数当中,但这个函数其实本身并不简单,里面有很多的这个扩展啊,包括你要做一些复杂的流程,你看它有,还有一些这种 pre model hook post 的 model hook 在 干嘛? 你记得你什么名字?你能猜到它是什么?在模调用模型前,哎,执行一个勾子函数,调用模型后执行一个勾子函数,所以你看通过这个 a 卷的这里是不是可以封装一个非常完整的流程啊?包括我们之前做 long chain 的 时候,对吧?要做一个翻译助手,应该怎么做? 先设置什么模板啊?这个这个提示式的模板,对吧?确定我的目标语言是什么,然后再根据用户的问题翻译,翻译完了之后对对结果进行解析,我只需要他的 content, 不 需要其他部分,但这个过程是不都可以在这个部分来完成啊,对吧?所以他通过这个智能体构建非常复杂的应用流程, 而里面还有很多其他的属性啊,这些属性我们后面也会慢慢的去解析。当然其实你也并不一定需要说把这里面每一个参数都搞得非常非常的清楚,或者它每一个细致末角或者 long graph 每一个细致末角的功能都玩的滚瓜烂熟, 没必要啊,应用当中你用的东西就是你该用到哪些用哪些就可以了,只不过你要对它能够有一个大致的了解,至少在我们接触 long graph 的 过程当中,哎,在学习这个过程当中,你要对各个稀有物件能够有一个整体的把控,即便未来你没有用过,或者我们课程也没有分享过,至少你看到着而我知道有这么样的东西, 对吧?然后你未来真正想用这个机制的时候,你不会用, ok, 随时问 ai 帮你写代码呀,对吧?但是说如果你自己对这个机制都完全不知道,你都不知道他能干什么,你都不知道怎么去问 ai 大 模型,大模型也没法给你答案,对吧?所以这是给大家强调的啊。 当然从这里也能看到,在 long graph 当中,它构建 agent 的 实际上是非常简单的,已经尽量的把你所有的 agent 的 要做的是百分之七八十的方式的内容都已经集成到这个函数当中,那么构建 agent 的 简单了之后,那我们是不就应该花更多的精力用在干嘛? 去构建多个智能体,对吧?构建多个智能体,然后呢,让这些智能体去协调工作, 对吧?所以这也是 long graph 的 细节。当然具体怎么去协调工作呢?我们后面会一步一步去详细地去解释,因为 今天是个第一章节嘛,第一章节也不适,不适合挖太多的坑。 ok, 只是带大家有一个简单的一个啊,相当于对 long graph 有 一个第一印象,未来我们再去深入细节,希望大家不要就是这样才不容易晕头转向,不容易迷失方向。 ok 啊,所以这是我们这一章节的一个啊,简单的介绍啊。那关于什么是 longcode, 其实它的一部分核心功能就是在 longchain 的 基础上,以 agent 智能体的方式提供简单使用的功能封装, 所以这就是一个智能体,从而让我们更方便的去使用 longchain 系列的功能。当然并不是说它就能够完全替代 longchain 了,这个不是同一个意思,只是说在核心功能方面他们是相通的。 实际上 long chain 呢?我们之前提过 long chain 和 long graph 这个名字其实就起的非常的具体哦。 long chain, 实际上核心通过 chain 的 方式就是你你把一些核心功能组建它,让你自由地通过管道辅的形式构建一个链条,通过这个链条把某一个工作流程可以定制清楚, 对吧?那未来这个 graph 呢?其实也类似这种思想,只不过它要组建的就不是一个一个的通过管道连接的一个一个这个功能组建了,而可能是通过各种图的方式啊,对吧?各种图的方式啊,去连接各种各样的这种 agent 智能体了啊,就这种形式,更加复杂的形式, ok, 当然这里一方面还提到 agent 的 功能封装远不止我们案例当中这么简单,也不是说你稍微传这个东西就完成了,当然这个就是 你要了解 agent 在 long graph 当中如何去封装,这就是我们自己看到的 long graph 当中的呃,第一个部分, pre build agent 这一部分需要做的事,可以看到它还是有很多功能的,对吧?包括还有 m c p 的 集成啊这些,后面给大家分享啊。 好,然后呢,接下来就是第二个部分,第二部分就通过图有了 agent 之后,接下来 long graph 就 会以 graph 图的方式将多个 agent 串联起来,实现更加复杂的应用,这就是后面的这个,呃,我们着重分我们这一次着重给大家分享的 long graph 当中图的这一部分, ok, 好, 当然呢,我们还是给他强调整个我们后面的内容实际上还是以官网的私立为主,但是呢,我们会把这个思路给你改一改 官网的视例,其实你看到它更多的就是上来给你各种各样的代码啊,你直接去玩,但是你如果自己去按照这个视例去玩去理解的话,你会发现还是比较费功夫的,那我们接下来就是把这个思路让你去串一下啊,然后争取让大家用更简短的时间,更典型的案例去掌握 long graph 的 整个核心的思想啊。 ok, 那 包括在在我们这个视频的我们这一套视频的后面呢,也会带大家去手写完成一个多智能体协同的啊,包括我们典型的这种 呃 r a g 应用啊,包括这种 m c p 的 服务啊,包括和大模型做这种多轮交互啊等等各种的这些场景,我们都通过一个图的方式把它全部整合到一起,做一个我们自己的这种智能体,从而让大家对于这个多智能体啊,有一个多智能整个体系有一个完整的这个闭环。 ok, 好, 那这也是我们第这一章节给大家分享的内容,那么呃,接下来我们就开始进入 long graph 这些核心的 api 当中更精彩的细节吧。