各位同学大家好,欢迎大家来到关于大模型 a p i 调用的实战课堂,我们本节的话呢,会基于我们跟大模型的多轮交互,把它封装成一个函数,然后呢给我们更便利的去应答 我们大概的设想。什么呢?就是我们以用户输入的形式去呃输入相关的我们的问题,比如说我是谁,我要问什么?然后呢请大模型呢做相应的回复。那这个时候的话呢,我们首先要解决两个问题,一个呢就是我们怎么输入, 那输入的话呢?是这边是在 python 中,它是有相应的这样的一个输入的这个函数的,那我们可以这样,比如说 esc b, 我 们可以做一个测试啊,这个把它删掉,我们进入到最后一行啊。 esc b 啊,最后一行。好,这样的话呢我们可以做一个测试, 比如说 type 等于 input, 就是 这样一个函数,然后呢他会去啊接收用户的输入,比如说你做一个用户, 然后呢你有一些输入,然后他就会去啊接收这块的话呢,要把这个用户这块的话呢,他的,呃这种中括号都是要 都是要英文啊,很容易写成中文的,因为我们在键盘切换的时候是这样的,对吧?这是中文的,我们去把它变成英文的,比如说,比如说啊,在这啊,好,在这那就是英文的,然后呢冒号呢也是英文的,然后这个双引号也是英文的。好, 然后呢我们看一下,执行一下这样一个命令,哎,然后他就会有这样一个输入啊,所以呢,呃,我们可以输入,比如说,呃, 流通就是我的名字啊,好,他就他就接收了啊,就是这个名字啊,好, 然后呢,呃,所以我们可以去呃,针对这样的一个输入的这样一个内容的话呢,去啊,收到啊,就是 我的输入的一些信息。那到底收没收到呢?我们可以看一下啊,比如说,比如说我输了流通,是他把输入东西复制给 text 了,那我们去打印一下 text, 好, 我们回车,你看他确实把我输入的东西给接收了啊,这就是一个我们做测试的一个起点,就是他能收到我的这种输入,然后接下来的话呢,我的输入的话呢,需要作为一个 啊内容去复制给或者说导入,导导入到大模型中,所以这块的话呢就会涉及到有一个函数,这个函数的话呢就是专门去接收我的输入的。 好,然后接,接下来大家可以看一下这个函数的话,其实很简单,其实它整体 带入的东西是一个列表,就 message 列表,这个 message 列表的话呢,它里头应该包括就是我的这个用户的输入, 也应该包括这种系统,就是大模型系统的这种反馈的内容,或者说它作为一个助理啊, ai 助理它针对我的问题的反馈内容啊,就是 a s s。 然后呢还会包括什么呢?包括这个就是它的角色定位 啊,因为我们的这个肉的类型的话有三种,一种就是它的呃系统角色定位啊,就是大模型的系统角色定位。第二种呢就是我的用户的做一个用户的问题的输入。第三种的话呢,就是它作为一个 ai 助理的一个反馈,针对我输入的反馈。 所以呢,呃整体这边的话, message 它会包括这三种类型的,呃字典,然后呢我们可以只把它作为这样一个函数的封装,然后接下来把这个 message 的 话呢,呃传摊到 传到这边,大概这样子好,然后这样的话呢,呃基于我这个整体的 message, 这边的话呢,它会有相应的这样的一个回复 好,就大概这样子。看到回复好,然后这个我们这个函数的话呢,因为看过类似的这种函数定义的话呢,大家应该不陌生, 所以呢,呃我们现在目前准备了一个基础函数啊,就是 get l l m 啊,下划线 response, 然后并且也啊尝试测试了一下这个我们的音符的这个函数啊,现在有两个函数了,那我们应该怎么去结合这两个函数做跟大模型的这种交互的这种体验呢?首先我们设一个开场白, 这开场白的话呢,呃你看到这边是扣的对吧?那我们把它摁 esc, 摁 m, 这样的话变成了 markdown, 我 们把它做一个 这样的啊,标特殊的颜色啊,好,或者说醒啊醒目的形式把它体现出来。我们拍两白的话呢,首先在呃跟他聊天的这个界面上的话呢,我们首先要打印一行,这行是什么呢?就是啊, print, 你 好, 我是你的聊天助手啊或聊天伙伴啊,可以帮你解答任何的问题的啊,这样的话给大模型,就是说大模型给你这样一个啊,这种这种接入的时候他会问候一下好,然后接下来的话呢,我们呃需要去给他设人设, 就是说我们在问问题之前的话呢,我们需要给他定位他是能回答什么类型的问题?那这个怎么做呢啊?这边的话我我又准备好这样的一个啊列表。好,这个列表的话呢,呃我们看一下他这种啊,如果考虑的话可能是啊这种 啊是这样的,就是这是有问题的对吧?啊?他应该是把他。呃就是大家可以看到这个是有下划线的啊,那为什么是这样的呢?大家可以猜一猜为什么? 因为我这边是 mark down 的 而不是扣着的,对吧?所以说这一块就是有问题了,然后也就说开场白是 mark down 的 啊,或者说它是这样的话就是不太对的,那怎么办呢?我们应该这样做,就是 nesc 啊,这个摁这个 y 啊,然后你看它秒变,看到没有你说。呃我们这个井号的话呢,在这个 code 的 模式的话呢,它是注视在 markdown 模式下呢,它是一个标题 啊,所以这样的话呢它就会秒变成这个注式了,现在是 call 的 模式,然后这边的话呢啊当还是 markdown 的 格式的话,它是一个链接,然后在 call 的 模式的话呢就变成了啊,就是一串这个我们的字典。啊好大家可以看到是这样的, 你说我们给他做相遇的人设的设置,就是你是一个多年有经验的这个 ai 的 专家,然后呢啊擅长回答任何相关的问题, 比如说我们,呃在程序中的话呢,做了一次打印,就是开场白做做一次交互嘛,就是告诉他说他可帮你回答问题,并且给他设了人设好,然后接下来的话呢我们就应该去做这个输入了,那我们输入的话呢?呃我们的音库的 是支持一次性输入的,那所以说呢,我们需要做一个这样的一个 well 的 循环啊, well 的 循环,然后呢去 就是确保说在我们没有退出之前的话呢,啊,它一直会收到我们的输入啊,好,那比如说我们可以获得用户的输入信息,比如 user input, 用输入信息等于 input, 然后这个的话呢,可以把它拷过来,就是这个 input。 好, 把它拷过来。 好,比如说,呃,这是个 while 循环,然后呢我我们的输入全部都赋给这个变量,那如果,呃这个变量是 exist 的 话,如果这个变量 user input 等于 啊单引号 you zip 的 的话,然后呢我们就应该退出啊,就是所谓的他终止了这样一个聊天,或者说用户终止这样一个聊天,那我们就可以打印,打印什么呢?感谢你的使用,感谢使用, 再见。好,然后单引号这边单引号注意它是英文的而不是中文的啊, 然后接下来啊,就退出,退出这个循环,那怎么退出呢? break, 好, 那如果用户 输入的不是 excel, 那 我们继续要做相应的动作,就是把用户输入的东西插入到这个 message, 因为我们这边有定义的个 message 的 这样的一个输入,对吧?尽量列表输入,然后我们需要把它插进来,把用户的输入的东西插进来,那怎么插进来呢?就是第二啊, pen 点 and。 好, 然后这边的话呢?呃,我们比较熟悉了。呃,插入 my 手机的话呢,它会对应一个字典,字典用大过大过湖来扩起来,然后分别是角色和 content, 角色就是用户啊,角色是用户, content 的 话就是 user input, 那 这边的话呢是 input input 啊,好,然后这边再多一个右扩弧,好,然后接下来的话呢?呃,我们,呃要把插入的东西怎么办呢?把它去传达给这个函数, 也就说让他接收啊,然后并且他有反馈嘛,因为我跟大模型是一来一回的,我给他这个问题,他给我答案,那答案从哪出呢?从这个函数的输出来出,对吧?好,然后接下来我们可以去啊,也定一个变量,一个接收变量 l m i s 等于,然后这个就是对应这个函数名,这个函数名。好,这个函数名拿过来,拿过来之后的话呢,呃,它的参数就是跟那是一样的,对吧?这边有 m s g, 这边有 m s g, 那 就是 m s g m f g。 好, 然后接下来,呃这个大模型的输出的话,回馈给 l l m l l m 下划线 i e s 了,所以呢,我需要把它这个内容的话,就是回馈的内容内容也也插入到我们的这个消息的列表里头啊,好,那怎么做呢? 就是 m f g 点也是 app 的 啊,这个时候我插入东西的话,就不是不是那个 u 的 这个肉了,应该是 accept 的 肉, 所以呢,我这边把它拷过来,好,然后这边像这样,你看啊,这篇输入的就是输入的内容是这个 l m m 杠下划线啊,延时,然后呢? assistant, 好, 然后接下来的话呢,我们可以做一个这种,呃,这种验证就是打印一下啊, print 啊,就是 我们的这个,呃, l l m 呃, m 下划线 l 颜色的东西啊,好, 就是我们把大模型回复的内容打印一下,那打印一下的话呢?啊,要传入这样的一个变量的话,我们前面要有个 f 啊,然后表示说恰似这边有变量的啊,这种拼接的啊,这个变量就是这个名字 l m 加号线 e s。 啊,好,就是这边还会有一些啊,这种注视的内容就是 ai 回复,内容是冒号,然后这边要对拼接到变量好, 然后接下来的话呢,呃,我们还可以去呃打印啊,这个分格服务,比如说一百个,一百个等号之类的。好,那这边的话呢,我们可以去啊,用双引号等号怎么打一百个等号呢? 就是乘,我们之前呃已经接触过,就是乘一百啊,用户好,然后这边呢就是一个 while 循环,大家可以看到说,呃,你说如果用户输入的东西 不是 exist 的 话,那就一直会接受输入,直到 exist 才不会 break。 然后呢用户输入东西的话呢,我们就以用户输入的内容啊,就在这儿它附给这个 u 得 e book 了,把它插入到这个 manage 的 这样的一个列表中, 然后并且的话呢,呃把这个 mac 列表的话呢作为参数传给了这个函数,然后这个函数会反馈大模型的回复,把大模型的回复的话呢,大模型的回复就是这个大模型的回复也插在这这个列表中, 然后并且的话打印大模型的回复,并且啊打印一个这样的分割符啊。好,这个程序的话呢,应该大概是大家都会能够看得懂啊,呃,即使一遍看不懂的话呢,看两遍也是能够看得懂的啊,然后回车执行, 然后接下来你会发现这会报错,那这块的话呢啊,他这边提到了说,呃,这个 等号的问题,看到没有,这就是典型的就是他是一个等号还是两个等号?答案是两个等号啊,你说我们通常认为说一个等号就可以了,但其实它程序中是用两个等号来去表示的啊,等于 exist 好, 然后我们再继续 啊,就可以了。好,然后呢?这边是你可以问他问题啊。啊,你好, 我是流通,然后回车。好,然后这边的话呢?你看到说他这边说这个函数没有被定定义,他调这个函数啊,失败了,那说明什么问题?说明这个函数没有执行好,然后接下来 我们把这个函数执行,然后再去执行这个程序,然后接下来我们再试一下。你好, 我是流通好,回车, 我们回车。好,然后接下来啊,你看跟上面的体验是不一样的,因为上面的话我问到就是 我是流通的话呢,他就直接就出来了,对吧?然后这边的话呢,他又给我另一个弹出口啊,就说他回复内容是这个, 对吧?然后并且给了一个分割符,就是一百个这样的一个等号在这啊,然后等我们下一次输入,比如说这个 while 循环的话呢,它进入第二轮了啊。 呃,请介绍一下您自己啊,这个是我们的问题。好,大家可以看一下, 比如说他这边的话呢,已经简单介绍过了,说他是一个 ai 助手啊,然后这边的话呢?呃,我问他说,呃,请介绍一下自己,然后他就会这个更详细的介绍他能做什么事。 好,你看这些内容都能做,你能写诗吗?请写一首类似于李白将近九 的诗。哎,难为他一下,看他能不能像曹植一样七步成诗,对吧?好,然后接下来看一下他的回复, 然后这边的话呢,他在执行啊,执行完之后的话呢就出来了,你看就是黄河之水天上来,奔流到海不复回,对吧?好,然后呢?呃,这边的话呢,他 这个是原文啊,看,这是仿李白体体的原文。呃,基本来说没有怎么改哈, 这首诗是用万亿参数的醉意写成的一个没有真酒却有呃真性情,没有血肉却有千年好行等等。呃,我们看一下 这个,他的诗好像没有改动啊,那我们可以再难为他一下,你跟他说。呃呃,您提供的诗词与原版无二, 请写一篇有差别的诗词。 好,然后接下来的话呢,就是我告诉他说你提供的诗词的话是李白的援助啊,好像没有什么区别跟援助。所以呢,希望他能提供一个有差别的,你看他就会做了一个 啊,有差别的,君不见福气,昼夜不眠、算地如潮、吞吐着万亿字源等等。啊,这就是有差别的。好,然后呢, 你啊如果不想跟他呃这个继续继续聊天的话,你可以摁 e s f t, 然后他就再见了,他就出来了啊,再这样子。好,这就是一个多轮绘画通过音符来去实现的这样的一个呃, 实验啊,大家可以看到。好,感谢大家收听收看,多谢大家,希望大家能够呃,通过跟大模型的交互的话,知道大模型的一些工作原理和可能的一些实践的场景。好,多谢大家。