660e67d722ccd充当摘要者。您将总结在线课程的文字记录。我会提供给您在线课程的文字记录。由于文字记录可能非常长,我可能会将其分成几段,逐一提供给您。
摘要应该全面而简洁。它应该能够被17岁的青少年理解。一些格式化提示:
【您要总结的文字记录:关于大型语言模型的一个令人兴奋的事情是,您可以仅仅付出一点努力就可以使用它来构建一个定制的聊天机器人。ChatGPT,即网络界面,是您与大型语言模型进行对话的一种方式。但其中一个很酷的事情是,您还可以使用大型语言模型来构建您自己的定制聊天机器人,也许可以扮演AI客服代理或餐厅的AI点餐员的角色。在这个视频中,您将学习如何为自己做到这一点。我将更详细地描述OpenAI ChatCompletions格式的组成部分,然后您将自己构建一个聊天机器人。那么,让我们开始吧。首先,我们将像往常一样设置OpenAI Python包。ChatGPT等聊天模型实际上是经过训练的,可以将一系列消息作为输入,并返回一个模型生成的消息作为输出。因此,尽管聊天格式旨在使这种多轮对话变得容易,但我们通过之前的视频已经看到,它对于没有任何对话的单轮任务同样有用。因此,接下来,我们将定义两个辅助函数。这是我们在所有视频中一直在使用的函数,它是getCompletion函数。但是,如果您仔细看一下,我们给出了一个提示,但在函数内部,我们实际上是将这个提示放入了一个看起来像某种用户消息的东西中。这是因为ChatGPT模型是一个聊天模型,这意味着它经过训练,可以将一系列消息作为输入,然后返回一个模型生成的消息作为输出。因此,用户消息是输入,助手消息是输出。因此,在这个视频中,我们将实际上使用一个不同的辅助函数,而不是将单个提示作为输入并获得单个完成,我们将传入一个消息列表。这些消息可以来自不同角色,我将对其进行描述。下面是一个消息列表的示例。因此,第一条消息是系统消息,它提供了总体指导,然后在这条消息之后,我们有用户和助手之间的对话。这将继续进行。如果您曾经使用过ChatGPT的网络界面,那么您的消息就是用户消息,ChatGPT的消息就是助手消息。因此,系统消息有助于设置助手的行为和角色,并作为对话的高级指导。您可以将其视为在助手耳边低声说话,并在用户不知道系统消息的情况下引导其回应。因此,作为用户,如果您曾经使用过ChatGPT,您可能不知道ChatGPT的系统消息是什么,这是有意的。系统消息的好处是,它为您作为开发人员提供了一种在不使请求本身成为对话的一部分的情况下构建对话的方式。因此,您可以引导助手并在用户不知情的情况下引导其回应。现在让我们尝试在对话中使用这些消息。我们将使用我们的新辅助函数从消息中获取完成。我们还使用了较高的温度。系统消息说,您是一个像莎士比亚一样说话的助手。这是我们向助手描述它应该如何行为的方式。然后,第一个用户消息是,告诉我一个笑话。接下来是,为什么小鸡过马路?然后最后一个用户消息是,我不知道。如果我们运行这个,回应是为了到达另一边。让我们再试一次。为了到达另一边,公平如此,女士,这是一个永恒的经典,从不失败。所以这是我们的莎士比亚式回应。让我们实际再试一件事,因为我想让这更清楚,这是助手的消息。所以在这里,让我们只是打印整个消息回应。为了使这更清楚,这个回应是一个助手消息。因此,角色是助手,内容是消息本身。这就是这个辅助函数中正在发生的事情。我们只是传递消息的内容。现在让我们再做一个例子。所以,这里我们的消息是,助手消息是,你是一个友好的聊天机器人,第一个用户消息是,嗨,我的名字是Isa。我们想要获取第一个用户消息。所以,让我们执行这个。第一个助手消息。因此,第一条消息是,你好Isa,很高兴见到你。我今天可以如何帮助您?现在,让我们再试一个例子。所以,这里我们的消息是,系统消息,你是一个友好的聊天机器人,第一个用户消息是,是的,你能提醒我我的名字是什么吗?让我们获取回应。正如您所看到的,模型实际上不知道我的名字。因此,与语言模型的每次对话都是一个独立的交互,这意味着您必须提供当前对话中模型所需的所有相关消息。如果您希望模型从先前对话的较早部分中汲取或“记住”信息,您必须将先前的交流提供给模型的输入。因此,我们将其称为上下文。让我们尝试一下。】 所以,现在我们已经给出了模型需要的上下文,嗯,就是之前的消息中的我的名字,然后我们会问同样的问题,就是问我的名字是什么。模型能够回答是因为它拥有所有需要的上下文,嗯,在我们输入的消息列表中。所以现在你要构建自己的聊天机器人。这个聊天机器人将被称为orderbot,我们将自动化收集用户提示和助手回复,以构建这个orderbot。它将在一家比萨饭店接收订单,所以首先我们要定义这个辅助函数,这个函数的作用是收集我们的用户消息,这样我们就可以避免手动输入它们,就像我们之前所做的那样,它将从下面构建的用户界面收集提示,然后将其添加到一个名为context的列表中,然后每次调用模型时都会使用该上下文。模型的回复也会添加到上下文中,所以模型消息被添加到上下文中,用户消息被添加到上下文中,依此类推,它会变得越来越长。这样,模型就有了下一步要做的信息。现在我们将设置并运行这个用户界面来显示订单机器人,所以这是上下文,它包含了包含菜单的系统消息,并注意每次调用语言模型时我们都会使用相同的上下文,并且上下文会随着时间的推移而构建起来。然后让我们执行这个。好的,我要说,嗨,我想要订一份比萨。助手说,太好了,你想要订什么比萨?我们有意大利辣香肠、奶酪和茄子比萨。它们多少钱?好的,我们有价格了。我想我想要一份中号茄子比萨。所以你可以想象,我们可以继续这个对话,让我们看看我们在系统消息中放了什么。所以你是一个自动化服务,用于收集比萨饭店的订单。你首先问候客户,然后收集订单,然后询问是自取还是外卖。你等待收集完整的订单,然后总结一下,并最后再次检查客户是否想要添加其他东西。如果是外卖,你可以要求一个地址。最后,你收取付款。确保澄清所有选项、额外的配料和尺寸,以唯一地识别菜单中的项目。你以简短、非常对话、友好的方式回答。菜单包括,然后这里是菜单。所以让我们回到我们的对话,看看助手是否一直按照指示进行。好的,助手问我们是否想要任何配料,我们在系统消息中指定了一个助手消息。所以我想我们不想要额外的配料。事情...当然。还有其他什么我们想要订购的吗?嗯,我们来点水。实际上,薯条。小份还是大份?这很好,因为我们在系统消息中要求助手澄清额外的配料和配菜。所以你明白了,欢迎随意尝试。你可以暂停视频,然后在左边的笔记本上运行它。现在我们可以要求模型创建一个JSON摘要,根据对话将其发送到订单系统。所以我们现在添加了另一个系统消息,这是一条指示,我们说要创建前一份食物订单的JSON摘要,为每个项目列出价格,字段应该是一份比萨,包括配菜,两个配料列表,三个饮料列表,四个配菜列表,最后是总价格。你也可以在这里使用用户消息,这不一定是一个系统消息。所以让我们执行这个。请注意,在这种情况下,我们使用较低的温度,因为对于这些任务,我们希望输出相对可预测。对于一个对话代理,你可能希望使用较高的温度,但在这种情况下,我也可能使用较低的温度,因为对于客户的助手聊天机器人,你可能也希望输出更可预测一些。所以这里我们有我们订单的摘要,所以如果我们想的话,我们可以将其提交给订单系统。所以这就是你建立自己的订单聊天机器人的过程。请随意自定义并尝试更改聊天机器人的行为和不同知识的不同角色。