蝉鸣报告-硬核报告每天更新;
覆盖产业报告、全球化、经济、趋势等全领域...

【吴恩达xOpenAI】ChatGPT提示工程课程-逐字稿(8)第8章构建聊天机器人

第八章、构建聊天机器人

一个大型语言模型的令人兴奋的事情是,您可以在只需要少量的努力的情况下使用它来构建自定义聊天机器人。 ChatGPT,网页界面,是一种通过大型语言模型进行语音交互的方式。

但其中一件很酷的事情是,你也可以使用大型語言模型來建立你自己的自定義聊天機器人,也許扮演一個 AI 客戶服務代表或餐廳 AI 訂單接收員的角色。 在這個視頻中,你將學習如何為自己進行這樣的建立。 我將更詳細地描述 OpenAI ChatCompletions 格式的組成部分,然後你就可以建立一個聊天機器人了。 所以讓我們開始吧。 首先,像往常一樣設置 OpenAI Python 套件。 因此,像 ChatGPT 這樣的聊天模型實際上是被訓練成以一系列消息作為輸入,並返回模型生成的消息作為輸出。 雖然聊天格式旨在使這樣的多輪對話變得容易,但我們通過之前的視頻已經看到,它對於沒有任何對話的單輪任務也同樣有用。 下一步,我們將定義兩個輔助功能。 這是我們在所有視頻中都使用的那個,它是 getCompletion 函數。

但是如果你仔细看,我们提供了一个提示,但实际上在函数内部,我们将这个提示放入了类似于某种用户消息的内容中。 这是因为ChatGPT模型是一个聊天模型,这意味着它经过训练,可以将一系列消息作为输入,然后返回一个由模型生成的消息作为输出。 因此,用户消息是输入,助手消息是输出。 所以,在这个视频中,我们将使用一个不同的辅助函数,而不是将单个提示作为输入,并获得单个完成,而是传递一个消息列表。 这些消息可以来自各种不同的角色,我会描述一下。 以下是一些消息列表的例子。 第一条消息是系统消息,它提供了一个整体的指导,然后在这条消息之后,我们有了用户和助手之间的对话,这将继续下去。

如果你曾经使用过ChatGPT的网页界面,那么你的消息就是用户的消息,ChatGPT的消息就是助手的消息。 因此,系统消息有助于塑造助手的行为和形象,它作为一种高级指令来帮助对话。 你可以把它看作是悄悄地在助手的耳边讲话,引导它的回答,而用户并不知道系统消息的存在。 所以,作为用户,如果你曾经使用过ChatGPT,你可能不知道系统消息的内容,这正是我们的意图。 系统消息的好处是它为开发者提供了一种方式,在不使请求本身成为对话的一部分的情况下来塑造对话框架。 所以你可以悄悄地引导助手,像在它的耳边小声诉说一样,引导它的回答,而不让用户知道。 现在,让我们尝试在对话中使用这些消息。

所以我们将使用新的辅助函数从消息中获取完成情况。 我们还将使用更高的温度。 因此,系统消息说,你是一位说话像莎士比亚的助手。 这是我们描述助手应如何表现的方式。 然后,第一个用户消息是,告诉我一个笑话。 接下来是,为什么鸡会过马路?然后最后一个用户消息是,我不知道。 所以,如果我们运行这个,回应就是为了到达另一边。 让我们再试一次。 为了到达另一边,公平地说,女士们先生们,这是一个从未失败的古老经典。 所以这就是我们的莎士比亚式回应。 让我们再试一件事,因为我想让它更清楚,这是助手消息。 所以,让我们打印整个消息响应。 所以,为了让这更清楚,嗯,这个响应是一个助手消息。 所以,角色是助手,内容是消息本身。 这就是这个辅助函数中正在发生的事情。

我们只是传递消息的内容。 现在让我们做另一个例子。 所以,这里我们的消息是,助手的消息是,你是一个友好的聊天机器人,第一个用户的消息是,嗨,我的名字是Isa。 我们想获得第一个用户的消息。 所以,让我们执行第一个助手的消息。 第一个消息是,你好Isa,很高兴认识你。 今天我可以帮你什么?现在,让我们再试一次。 所以,这里我们的消息是,系统消息,你是一个友好的聊天机器人,第一个用户的消息是,是的,你能提醒我我的名字是什么吗?让我们得到回应。 正如您所看到的,模型实际上不知道我的名字。 因此,与语言模型的每次交谈都是独立的交互,这意味着您必须提供所有相关的消息,以便模型在当前对话中绘制。

如果你想让模型引用或记住对话的早期部分,你必须在输入到模型的内容中提供早期交流信息。 因此,我们将这称为“上下文”。 所以,让我们来试一试。 现在我们已经给出了模型需要的上下文,也就是之前信息中的我的名字,我们将问同样的问题,即我的名字是什么。 模型能够回答这个问题,因为它在我们输入的这个信息列表中有了全部上下文。 所以现在你要构建自己的聊天机器人。 这个聊天机器人将被称为orderbot,我们将自动收集用户提示和助手响应,以构建这个orderbot。

接下来,它将在披萨餐厅接受订单,因此我们首先要定义这个辅助函数。 它的作用是收集用户信息,以便我们可以避免手动输入它们,就像我们之前所做的那样。 它会从用户界面收集提示,然后将其附加到一个称为上下文的列表中,每次都会对该上下文调用模型。 模型响应也会添加到上下文中,以便将模型消息添加到上下文中,将用户消息添加到上下文中等等,一直持续增长。 这样,模型就有了确定下一步操作所需的信息。

现在我们将设置和运行这种 UI 来显示订单机器人,这是上下文,它包含菜单的系统消息,请注意,每次调用语言模型时,我们将使用相同的上下文,上下文会随着时间的推移而不断增加。 然后让我们执行它。 好的,我要说,你好,我想订披萨。 助手说,好的,你想订哪种披萨?我们有意大利香肠、奶酪和茄子披萨。 它们的价格是多少?好的,好的,我们有价格了。 我想我会点一份中号茄子披萨。 所以你可以想象,我们可以继续这个对话,让我们看一下我们在系统消息中加入了什么。 您是一个自动化服务收集比萨饭店订单的订单机器人。 您首先问候客户,然后收集订单,然后询问是否自取或配送。

请等待收集整个订单,然后进行总结并最后再次确认客户是否需要添加任何其他物品。 如果是交付订单,可以要求提供地址。 最后,您将收集付款。 确保澄清所有选项,额外项目和大小,以唯一地识别来自菜单的项目。 您应该使用简短、非常对话化和友好的样式进行回答。 菜单包括,这里有菜单。 然后让我们回到我们的对话,看看助手是否一直按照指示操作。 好的,很好,助手问我们是否想要任何配料,我们在系统消息中稍微说明了一下。 所以,我想我们不需要额外的配料。 事情……当然。 我们还想点别的吗?嗯,我们要一些水。 实际上,薯条。 小份还是大份?这很好,因为我们在系统消息中询问了助手以澄清额外项目和配菜。 所以你明白了,欢迎自己尝试一下。

您可以暂停视频,并在您的左侧笔记本中执行此操作。 现在,我们可以要求该模型根据对话创建一个JSON摘要,然后将其发送到订购系统。 所以,现在我们正在添加另一个系统消息,即指令,并且我们正在说明先前的食品订单的JSON摘要,列举每种食品的价格,字段应包括一份比萨,一个配菜,两个配料列表,三个饮料列表,四个配菜列表,最后是总价格。 您还可以在此处使用用户消息,这不必是系统消息。 所以让我们执行此操作。 请注意,在这种情况下,我们使用较低的温度,因为对于这些类型的任务,我们希望输出相对可预测。 对于会话代理,您可能希望使用较高的温度,但在这种情况下,也可以使用较低的温度,因为对于客户助手聊天机器人,您可能希望输出更可预测。

所以,这是我们订单的摘要,如果我们想,我们可以将其提交到订单系统。 所以,您已经建立了自己的订单聊天机器人。 请随意自定义它,并玩弄系统消息以改变聊天机器人的行为,并使其扮演不同知识的不同角色。

未经允许不得转载:蝉鸣报告(原爱报告知识星球) » 【吴恩达xOpenAI】ChatGPT提示工程课程-逐字稿(8)第8章构建聊天机器人

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

如何快速寻找资料?

关于我们赞助会员