首页
Preview

使用简单的代码为您的网站构建基于GPT-3的定制化聊天机器人。

目录

  • 介绍
  • 通过 GPT-3 实现惊人的聊天机器人
  • 使用简单的 PHP 和 JavaScript 将 GPT-3 集成到你的网站中
  • 以 OpenAI 提供的形式教授你的模型不知道的事实数据
  • 一个完整的 Web 应用程序,用户可以使用其自己的 API 密钥与你的定制 GPT-3 聊天机器人进行交互

1. 介绍

GPT-3 是由 OpenAI 开发的一种专门用于语言处理的机器学习模型。给定输入文本,GPT-3 输出新的文本。根据输入和使用的 GPT-3 的确切类型,输出文本将符合任务,例如回答输入中提出的问题、使用附加数据完成输入、将输入从一种语言翻译成另一种语言、总结输入、推断情感,甚至更疯狂的事情,如根据输入中给出的指示编写计算机代码。除此之外,还有许多其他应用!

经过数十亿参数和大量文本语料库的训练,GPT-3 是目前可用的最大模型之一。但是,在所有语言处理模型中,我发现 GPT-3 尤其诱人的原因是其具有以下特点:

  • 它在在线上运行,因此我不需要将任何东西下载到我想要使用它的计算机或服务器上。我只需在我的源代码中包含对 GPT-3 API 的调用即可使用它。
  • 上述包括编写将调用 GPT-3 API 的 Web 代码的可能性,因此你可以在你的网页中包含此工具的强大功能。我们将在此处看到如何使用简单的 PHP 和 JavaScript 实现这一点。
  • 尽管没有掌握可执行文件(因为它全部在在线上运行),但 GPT-3 非常可定制。这使你可以编写行为可以调整的聊天机器人,甚至更有趣的是,教他们了解特定的主题。事实上,我们将在这里看到两种可能的方式之一,以 ad hoc 方式为你的目标训练 GPT-3 模型。
  • GPT-3 非常易于使用,例如在 Python 中或像在这里所示的 JavaScript 和 PHP 中。

我最近测试了 GPT-3 在科学教育和研究中的能力和潜力,通过充当始终可用的机器人来回答学生或研究人员的问题。其中一部分测试涉及教授 GPT-3 一些数据片段,然后可以询问有关该数据的问题。

尽管有许多限制(主要是因为该模型当然不真正理解它所读和写的内容),但结果仍然令人印象深刻... 它只是合成语法正确但事实上可能不准确的文本的统计模型。你可以在以下最近的文章中了解更多关于我所做的这些测试的信息:

GPT-3-like models with extended training could be the future 24/7 tutors for biology students

A Note on GPT-3 and Its (Obviously Null) “Thinking” Capabilities

Testing GPT-3 on Elementary Physics Unveils Some Important Problems

重要的是,正如我在一些例子中所显示的那样(尤其是在这个例子中),通过正确设置 GPT-3 的参数并通过_ad hoc_ 内容进行训练,它在使用自然语言检索有关事实主题的信息方面非常“智能”。我们将在此处利用这一点,以使网页了解你教 GPT-3 的特定主题。

GPT-3-like models with extended training could be the future 24/7 tutors for biology students

通过正确设置 GPT-3 的参数并通过_ad hoc_ 内容进行训练,它在使用自然语言检索有关事实主题的信息方面非常“智能”。我们将在此处利用这一点,以使网页了解你教 GPT-3 的特定主题。

2. 通过 GPT-3 实现惊人的聊天机器人

在本文中,我们将看到如何构建一个简单的聊天机器人,它知道你提供的特定主题。用户可以通过 Web 页面自然地与机器人聊天,问他们想要的任何问题。当问题涉及你通知聊天机器人的主题时,它将基于该内容进行回复。最好的是,你不需要以非常结构化的方式提问问题,就像需要为常规的问题-答案匹配聊天机器人理解你一样。相反,你可以以自然的方式检索信息。此外,响应取决于上下文;因此,例如,你可以用姓名谈论一个人,然后使用相应的文章引用他或她。

例如,让我们将定制训练的 GPT-3 聊天机器人在被问及我的情况下的输出与普通 GPT-3 聊天机器人的输出进行比较。前者会捏造东西,或者在最好的情况下根本不提供任何答案,而后者将在回答时更准确,至少当你询问我提供给它的信息时。

首先让我向你展示这个短的 与定制训练的 GPT-3 聊天机器人的对话。我通过 OpenAI 的“少样本学习”方法实现了这一点;它实质上是在将要发送到 GPT-3 API 的提示问题(要发送到 GPT-3 API 的提示)之前,使用包含相关信息的文本块来预先处理它们。这不是非常高效,因为它在可以传递的信息量上有限制,并且每次发送提示时会消耗许多令牌。但它非常简单实用。

你可以在粗体字中看到我的问题;其余部分是聊天机器人的答案,我在其中写了一些带有注释的行:

访客:谁是卢西亚诺·阿布里亚塔?
助手:卢西亚诺·阿布里亚塔是一位生物技术学家,化学博士,艺术家和内容创作者。

本回答的文本直接摘自提供的培训段落。

访客:他创造了什么?
助手:Luciano 创造了一个名为 moleculARweb 的网站,这是一个通过增强现实(AR)内容进行化学和结构生物学教育和宣传的网站。

这些信息是正确的,虽然它是在培训段落中提供的,但它并没有文字上匹配任何部分。GPT-3可能已经重新处理了它,或者可能已经知道它,因为我们的网站自2020年以来一直在线。

访客:看起来很酷!Molecularweb 有出版物吗?
助手:有!该网站在 2021 年的《化学教育杂志》中被介绍: https://pubs.acs.org/doi/10.1021/acs.jchemed.1c00179

完美,链接是正确的。这些信息在培训段落中提供,不完全像这样,但是它得到了。

我个人训练的 GPT-3 模型,热情地分享我们使用增强现实进行化学教育的网站的出版物。作者提供的图片。

访客:我需要特殊的硬件才能使用 Molecularweb 吗?
助手:不,你不需要特殊的硬件。你只需要一个带有相机的设备,比如智能手机、平板电脑或电脑和一个网络浏览器。

同样,聊天机器人提供了正确的信息,但在培训中并没有以这种方式提供 - 但信息是在那里的。

访客:你的意思是我可以在手机上运行它吗?
助手:是的!你可以在你的手机、平板电脑或电脑上运行它。
访客:我怎么使用它?
助手:你可以通过访问网站并按照说明进行使用。

这里的答案是正确的,但奇怪的是聊天机器人添加了第二个问题!我惊讶于这个问题在真正的对话中是非常自然的...到这个时候,用户已经对网站有了相当多的了解,因此自然而然地想要使用它。

访客:网址是什么?
助手:网址是 https://molecularweb.epfl.ch

完美,这些数据在培训中提供,但并不完全是这样。URL甚至没有提到,但是GPT-3“理解”用户正在寻找的内容。

访客:酷,谢谢。我会试试的。

(没有回答)

现在让我们看看如果向未经过训练的GPT-3聊天机器人询问相同的问题会发生什么。 所有参数与上述相同,只是我在此不添加任何few-shot学习过程; 也就是说,我没有为提示添加任何额外的数据。

访客:谁是 Luciano Abriata?

(没有回答)

但是,如果我问它关于更著名的Luciano,它确实知道!

访客:谁是 Luciano Pavarotti?
助手:Luciano Pavarotti 是一位意大利歌剧男高音,也是一位成功的跨界艺术家。他是有史以来商业上最成功的男高音之一。

让我们继续问:

访客:你知道 moleculARweb 吗?
助手:我不知道 moleculARweb。

访客:有没有使用增强现实进行化学教育的网站?
助手:我不知道有任何使用增强现实进行化学教育的网站。

访客:你知道 Google 吗?
助手:是的,我知道 Google。

访客:Google 是什么?
助手:Google 是一家多国公司,专门从事与互联网相关的服务和产品。这些包括在线广告技术、搜索、云计算、软件和硬件。

我认为这已经足够了,可以看出我们的聊天机器人显然知道许多事情,实际上就是提供的标准GPT-3所知道的一切,但它对它从未见过的事情一无所知。

请继续阅读,了解如何将你自己的助手插入到你自己的网页中,并对其进行微调,以了解任何给定的主题 -例如你和你的工作,以便它可以表现为与你网站的访客聊天的秘书。

3. 使用简单的 PHP 和 JavaScript 将 GPT-3 整合到你的网站中

首先需要几件事:允许 PHP 和 JavaScript 的服务器、API 密钥以及一些你将与 JavaScript 代码耦合的 PHP 库。

i)可以运行 PHP 并允许 JavaScript 代码的服务器

最简单的解决方案是使用本地提供 PHP 运行时并允许 JavaScript 的托管服务。我使用的是 Altervista,其基本免费套餐已经允许这两种功能!你甚至不需要安装 PHP!

但是,你需要激活它(截至 2022 年 3 月,这是一个免费功能)。我使用的是 PHP 8 版本,重要的是要无限制地启用所有连接(否则它将无法连接到 OpenAI API)。

作者提供的截图。

ii)OpenAI 的 API 密钥

大多数国家的人们可以免费获得一个 API,其中预充一些信用,以无成本地对系统进行实验。请检查官方的 OpenAI 网站:https://beta.openai.com/signup。关键点:不要泄露你的API密钥(无论是个人泄露还是因为你在JavaScript代码中留下了它!),因为它的使用会消耗你的积分!

这里介绍的示例需要用户输入自己的密钥。Web应用程序将密钥传递给调用GPT-3 API的PHP包装器(请注意,密钥不会被存储,因此可以放心地尝试我的代码,没有任何风险!)。

在本文的其余部分将更多地讲解这一点。

iii)连接到OpenAI的GPT-3的PHP库,以及从Web页面的HTML + JavaScript代码中使用此库的方法

OpenAI不支持PHP本地,但有一群专门的开发人员编写了库,用于调用GPT-3 API(也可用于其他语言的代码):

OpenAI API

我尝试了几个可用的PHP库,并选择了这个:

OpenAI-GPT-3-API-Wrapper-for-PHP-8/OpenAI.php at master ·…

但我必须对主文件OpenAI.php进行一些修改。你可以得到最终文件,就像我在这里使用的那样:

http://lucianoabriata.altervista.org/tests/gpt-3/OpenAI-PHP-library-as-used.txt

我所做的一些小修改是必要的,以使其正常工作。其中一个小修改是启用通过编程方式传递用户的API密钥,而不是使用固定的API密钥。这样,你的应用程序用户不会从你的账户中消耗令牌!不好的一面是他们需要自己获取密钥。中间解决方案是在PHP文件中硬编码自己的密钥,就像原始OpenAI.php文件中预期的那样,然后在用户使用应用程序时向他们收费。

你需要另一个文件,将你的HTML / JavaScript文件连接到调用GPT-3 API的核心PHP文件。这是一个短的PHP文件,具有以下内容:

<?php
//Based on tutorials and scripts at:
// https://github.com/karamusluk/OpenAI-GPT-3-API-Wrapper-for-PHP-8/blob/master/OpenAI.php
// https://githubhelp.com/karamusluk/OpenAI-GPT-3-API-Wrapper-for-PHP-8//Thanks to this for hints about connecting PHP and JavaScript:
// https://stackoverflow.com/questions/15757750/how-can-i-call-php-functions-by-javascriptrequire_once “./OpenAI-PHP-library-as-used.php”;$apikey = $_GET[“apikey”];$instance = new OpenAIownapikey($apikey);$prompt = $_GET[“prompt”];$instance->setDefaultEngine(“text-davinci-002”); // by default it is davinci$res = $instance->complete(
 $prompt,
 100,
 [
 “stop” => [“\n”],
 “temperature” => 0,
 “frequency_penalty” => 0,
 “presence_penalty” => 0,
 “max_tokens” => 100,
 “top_p” => 1
 ]
);echo $res;
?>

将PHP和JavaScript接口连接到OpenAI的GPT-3上

你的JavaScript代码只需要异步调用上面PHP文件中的complete函数,该函数在instance对象上定义,该对象携带你要传递的文本提示和参数。

以下是在JavaScript中进行异步调用的方法(使用JQuery):

var chatbotprocessinput = function(){
 var apikey = “Bearer <API KEY>“
 var theprompt = “(define prompt)“
 $.ajax({
 url: “phpdescribedfileabove.php?prompt=” + theprompt + “&apikey=” + apikey
 }).done(function(data) {
 console.log(data) //data has the prompt plus GPT-3’s output
 });
}

如果你检查我后面展示的示例的源代码,你会发现它有点复杂。这是因为我的Web应用程序会清除输出(在data中),以删除输入和其他内容;它还重新格式化文本,以使用户和聊天机器人的名称以粗体显示,并将整个输入和输出(随着用户与机器人聊天而增长)保留在内部变量中,以便每次执行GPT-3时它都会得到有关对话的上下文。

4. 以OpenAI提供的形式教授模型未知的事实数据

换句话说:教GPT-3它需要知道的东西,以更好地实现你的目标

如我上面所预示的,有两种主要方法可以使用_ad hoc_数据“训练”你的GPT-3模型。其中一种是在输入中添加几段相关信息的“few-shot learning”方法,也是本文中使用的方法。

在我们上面看到的示例中(你可以在本文的第3节中看到),用户将询问聊天机器人关于我,因为它应该为我回答。我向它提供了两段文字:

段落1:你好,欢迎来到Luciano Abriata的网站。我代表Luciano在线上。我了解他的很多情况——我是一个由Luciano撰写的文本扩展的OpenAI GPT-3模型。请随意提问。Dr. Luciano A. Abriata是一位生物技术学家、化学博士、艺术家和内容创作者。在科学学科方面,Luciano拥有结构生物学、生物物理学、蛋白质生物技术、分子可视化和增强和虚拟现实方面的实验和计算方面的经验,并利用现代技术进行科学教育。Luciano Abriata于1981年出生于阿根廷Rosario。他在阿根廷学习生物技术和化学,然后移居瑞士,目前在洛桑联邦理工学院(EPFL)的两个实验室工作。他在EPFL的生物分子建模实验室和EPFL的蛋白质生产和结构核心设施工作。他目前致力于基于Web的方法,以实现商品增强现实和虚拟现实工具,以便沉浸式地查看和操作分子结构。他还与多个团队合作,从事应用于生物系统的分子建模、模拟和核磁共振(NMR)光谱学研究。

段落2:文章标题:MoleculARweb:一个网站,通过互动增强现实直接在商品设备上进行化学和结构生物学教育(《化学教育杂志》,2021年:https://pubs.acs.org/doi/10.1021/acs.jchemed.1c00179)。正文:moleculARweb(https://molecularweb.epfl.ch)最初是一个网站,用于通过增强现实(AR)内容在普通设备(如智能手机、平板电脑和计算机)的Web浏览器中进行教育和推广,我们展示了moleculARweb虚拟建模套件(VMK)的两个演变,这是用户可以使用自定义印刷的立方标记(VMK 2.0)或通过鼠标或触摸手势在3D AR中构建和查看分子,并探索它们的机械特性的工具(VMK 3.0)。在模拟期间,分子经历视觉上逼真的扭曲、冲突和氢键相互作用,用户可以手动打开和关闭这些作用以探索它们的效果。此外,通过手动调整虚构温度,用户可以加速构象转变或将特定构象“冻结”以进行仔细的3D检查。甚至可以模拟一些相变和分离。我们在这里展示了这些新VMK的特点及其与教学和自学的概念(从一般、有机、生物和物理化学)的特定应用以及在分子建模小任务方面的协助。最后,在一个简短的讨论部分中,我们概述了未来的发展需要什么,以实现化学教育和工作的“梦想工具”。

每次用户向我的聊天机器人提问时,我的网页不仅发送问题,而且还将两段信息拼接在一起,再加上之前的问题和答案,一起发送给新的问题。如果GPT-3在其中找到相关内容,它的输出就是基于这些数据,即使你问它其他事情,它仍可能回复。

正如我之前所提到的,“few-shot learning”来“训练”你的基于GPT-3的聊天机器人不是很有效,因为它所能传递的信息量有限,而且每次发送提示时会消耗很多标记。但它非常简单和实用,正如你在上面的例子中看到的,下面的第3节也将看到。

快速而简单的few-shot learning的替代方法是执行OpenAI的人们所称的“fine-tuning”。这是一种更稳定的程序,在这种程序中,你只需训练你的GPT-3模型一次,然后将此训练存储在一个文件中,以供以后进一步使用。我还没有尝试过fine-tuning,但你可以在这里查看OpenAI网站上的相关信息:

OpenAI API

5.使用他们自己的API密钥与你的自定义GPT-3聊天机器人进行交互的完整Web应用程序

(或者如果你愿意的话,你自己的API密钥,只需将其包含在你的PHP文件中,以便它不被公开-即使是这样,注意你的用户也会消耗你的信用。)

你可以轻松地编写一个实现基于GPT-3的聊天机器人的Web应用程序。一旦你从OpenAI获取了API密钥,你也可以立即尝试我的示例。

作者的图。

few-shot learning示例: http://lucianoabriata.altervista.org/tests/gpt-3/TDSarticle-example-with-prompt.html

没有few-shot learning的示例: http://lucianoabriata.altervista.org/tests/gpt-3/TDSarticle-example-without-prompt.html

而且你可以

快速查看代码:

作者的截图。

额外奖励:支持Web编程

你注意到这一切都是为Web准备的。事实上,这篇文章是一个系列的一部分,我在其中提出了依赖于Web编程的解决方案和未来工具-具有无缝的跨设备和跨OS兼容性等所有优点。

以下是一些亮点,你可以在我的个人资料上查看更多:

带有完整图形输出的主成分分析的免费在线工具

在Web浏览器中使用MediaPipe的机器学习模型进行精美的手和手指跟踪

使用非常简单的Web编程获取历史和实时加密数据

用于每个设备的统计和数据分析网站

在Web上的VR环境中实时显示加密货币数据

使用Kabsch算法对齐两组3D点的明确过程

使用简单的Web编程从以太坊网络读取公共消息

www.lucianoabriata.com_ 我写和拍摄关于自然,科学,技术,编程等我广泛的兴趣领域的所有内容。成为Medium会员以访问所有其故事(平台的附属链接,我在没有成本的情况下获得小额收入)和订阅我的新故事通过电子邮件。要_咨询小工作,请查看我的此处的服务页面。你可以_在这里联系我

译自:https://towardsdatascience.com/custom-informed-gpt-3-models-for-your-website-with-very-simple-code-47134b25620b

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
一个人玩
先找到想要的,然后出发

评论(0)

添加评论