聊天机器人 + 知识库

最近关注大型语言模型(LLM),如GPT-3和ChatGPT等,这些模型在技术行业引起了很大的关注。它们对于内容生成非常强大,但也存在一些缺点,例如偏差和幻象。在聊天机器人开发方面,LLM特别有用。

基于意图的聊天机器人

传统的聊天机器人通常是基于意图的,这意味着它们被设计为响应特定的用户意图。每个意图由一组样本问题和相应的响应组成。例如,“天气”意图可能包括类似“今天天气如何?”或“今天会下雨吗?”这样的样本问题,并且可能输出“今天将是晴天”的响应。当用户提出问题时,聊天机器人将其与最相似的样本问题匹配意图,并返回相应的响应。

传统基于意图的聊天机器人的工作原理。

然而,基于意图的聊天机器人也有自己的问题。其中一个问题是,它们需要大量特定的意图才能给出特定的答案。例如,用户说“我无法登录”、“我忘记了密码”或“登录错误”等话语可能需要三个不同的答案和三个不同的意图,尽管它们都非常相似。

GPT-3如何帮助

这就是GPT-3可以发挥的特别用处。每个意图可以更广泛,利用您的知识库文档。知识库 Knowledge Base 是存储为结构化和非结构化数据的信息,可用于分析或推断。您的知识库可能由一系列文档组成,解释如何使用您的产品。

因此,每个意图与文档相关联,而不是一组问题和特定答案,例如,一个“登录问题”的意图,一个“如何订阅”的意图等等。当用户询问有关登录的问题时,我们可以将“登录问题”文档传递给 GPT-3 作为上下文信息,并为用户的问题生成特定的响应。

这种方法减少了需要处理的意图数量,并允许更好地适应每个问题的答案。此外,如果与意图关联的文档描述了不同的流程(例如“在网站上登录”的流程和“在移动应用程序上登录”的流程),GPT-3可以在给出最终答案之前自动询问用户以获得更多的上下文信息。

为什么不能将整个知识库传递给GPT-3?

目前,像 GPT-3 这样的大型语言模型的最大提示长度约为 4k 个令牌(对于 text-davinci-003 模型)。这个长度虽然很大,但不足以将整个知识库作为单个提示传递给模型。语言模型的提示长度限制是由计算资源等因素决定的,因为使用提示生成文本会涉及多次计算,随着提示长度的增加,计算量也会急剧增加。

未来的语言模型可能会消除这种限制,同时保持文本生成的能力。然而,就目前而言,我们需要设计解决方案来处理这个问题。

如何使用GPT-3构建一个聊天机器人

构建聊天机器人的过程可以分为以下两个步骤:

首先,我们需要根据用户的问题选择合适的意图,也就是从知识库中检索正确的文档。一旦我们获得了正确的文档,就可以利用 GPT-3 为用户生成适当的答案。在这个过程中,我们需要精心设计一个良好的提示。

第一步可以使用语义搜索(semantic search)来实现。我们可以使用预训练模型,例如 sentence-transformers 库中的模型,为每个文档分配一个分数。分数最高的文档将用于生成聊天机器人的答案。这种方法能够帮助我们从知识库中选择最相关的文档,以便更好地回答用户的问题。

使用 GPT-3 生成答案

一旦我们有了正确的文档,我们需要创建一个好的提示,以便将其用于GPT-3生成答案。在以下实验中,我们将始终使用temperature为0.7的text-davinci-003模型。

为了制作提示,我们将尝试使用以下内容

  • 角色提示: 一种启发式技术,为AI分配特定的角色。
  • 相关的知识库信息, 即在语义搜索步骤中检索到的文档。
  • 用户和聊天机器人之间最后一次交换的消息. 这对于用户发送的未指定整个上下文的消息非常有用。我们将在后面的例子中看到它。
  • 最后, 用户的问题.

让我们使用角色提示技术开始我们的提示。

作为一名高级聊天机器人Skippy,您的主要目标是尽力帮助用户。

然后,假设语义搜索步骤从我们的知识库中提取了以下文档。所有文档都描述了类似于Instagram的虚构产品VideoGram的工作方式,但仅用于视频。

我们可以在提示中这样添加它的内容。

作为一款名为Skippy的高级聊天机器人,您的主要目标是尽力帮助用户。

开始上下文
从网站登录到VideoGram
1. 打开您的网络浏览器并前往VideoGram网站。
2. 单击页面右上角的“登录”按钮。
3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入凭据后,单击“登录”按钮。
5. 您现在应该已经登录到您的VideoGram帐户中。

从移动应用登录到VideoGram
1. 在您的移动设备上打开VideoGram应用。
2. 在主页面上,点击位于右下角的“登录”按钮。3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入凭据后,点击“登录”按钮。
5. 您现在应该已经登录到您的VideoGram帐户中。
结束上下文

最后,我们需要将对话和用户问题添加到提示的末尾,就像以下示例中那样。

作为一款名为Skippy的高级聊天机器人,您的主要目标是尽力帮助用户。

开始上下文
从网站登录到VideoGram
1. 打开您的网络浏览器并前往VideoGram网站。
2. 单击页面右上角的“登录”按钮。
3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入凭据后,单击“登录”按钮。
5. 您现在应该已经登录到您的VideoGram帐户中。

从移动应用登录到VideoGram
1. 在您的移动设备上打开VideoGram应用。
2. 在主页面上,点击位于右下角的“登录”按钮。3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入凭据后,点击“登录”按钮。
5. 您现在应该已经登录到您的VideoGram帐户中。
结束上下文

SKIPPY:您好,我是Skippy!我能为您做些什么?
用户:我找不到登录按钮。
SKIPPY:

将此提示传递给GPT-3,我得到了以下生成的答案。

没问题! 在网站上,登录按钮位于页面右上角。 在移动应用程序上,登录按钮位于页面右下角。如果您需要进一步的帮助,请告诉我!

请注意,生成的答案中的信息来自知识库文档。

用GPT-3消歧用户问题

我们来试试更模糊的用户输入,比如“无法登录”。这是完整的提示。

作为一个名叫Skippy的高级聊天机器人,您的主要目标是尽力帮助用户。

START CONTEXT
从网站登录到VideoGram
1. 打开您的Web浏览器,然后转到VideoGram网站。
2. 点击页面右上角的“登录”按钮。
3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入您的凭据后,单击“登录”按钮。
5. 您现在应该已经登录到VideoGram帐户。

从移动应用程序登录到VideoGram
1. 打开您的移动设备上的VideoGram应用程序。
2. 在主页面上,点击右下角的“登录”按钮。 3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入您的凭据后,点击“登录”按钮。
5. 您现在应该已经登录到VideoGram帐户。
END CONTEXT

SKIPPY: 你好,我是Skippy!我能帮你什么忙?
USER: 无法登录
SKIPPY:

GPT-3试图更好地理解用户的问题,给出了以下回答。

很抱歉听到这个消息。您能告诉我您是在尝试通过VideoGram网站还是移动应用程序登录吗?

接下来,这是完整的对话内容。为了方便查看,这里省略了提示的其他部分。

USER: 无法登录
SKIPPY: 很抱歉听到这个消息。您能告诉我您是在尝试通过VideoGram网站还是移动应用程序登录吗?
USER: 移动应用程序
SKIPPY: 好的,没问题。要通过移动应用程序登录,请打开您的移动设备上的VideoGram应用程序。在主页面上,点击右下角的“登录”按钮。在登录页面上,输入您的VideoGram用户名和密码。输入您的凭据后,点击“登录”按钮。您现在应该已经登录到VideoGram帐户。如果您需要进一步的帮助,请告诉我。

只要有正确的上下文信息,GPT-3就可以进行消歧义。

使用GPT-3生成答案时可能出现的问题

前面的示例都展示了正常运行的情况。然而,聊天机器人可能会以几种方式失败。

举个例子,如果我们询问 "移动应用程序是否免费?" 并将登录文档作为上下文传递给 GPT-3,通常会得到一个答案,比如 "是的,VideoGram移动应用程序是免费下载和使用的",即使这个信息并没有包含在上下文中。这样的虚假信息对于客户服务聊天机器人来说非常糟糕!

当用户的问题可以在上下文中找到答案时,GPT-3 很少生成虚假信息。然而,由于用户的问题通常是简短且模糊的文本,我们不能总是依赖语义搜索步骤来准确检索到正确的文档。因此,我们在处理这种情况时容易受到虚假信息生成的影响。在构建聊天机器人时,我们需要特别注意这个问题,以避免向用户提供错误或误导性的答案。

结论

GPT-3非常适用于创建对话式聊天机器人,并能够根据插入的上下文信息回答一系列具体问题。然而,仅依靠上下文信息使模型产生答案很困难,因为模型往往会产生幻象(即生成新信息,可能是错误的)。生成虚假信息是一个不同严重程度的问题,这取决于使用情况。

标签: prompt教程, prompt基础, prompt进阶, prompt应用, prompt核心, prompt提示, 提示工程, 提示工程师, prompt提示工程, prompt基础教程, prompt进阶教程, prompt高级教程, prompt核心教程, prompt代码教程, prompt菜鸟教程, prompt命令教程, prompt使用教程