最近ChatGPT的热度非常高,OPEN AI也是在不久前刚刚宣告敞开ChatGPT商用API。
写这篇文章的契机在于前几天一位群友共享了一个日本程序员根据ChatGPT开发了一个AI佛:HOTOKE AI
例如当用户发问“我不知道生计的意图”,AI佛会做出如下答复:
感觉仍是挺有意思的,他会从释教及心理学的角度去给你分析与解说。
但作为一名程序员,咱们肯定对背后的原理更感兴趣,于是我又问了他和GPT有什么区别:
这个答复仍是有点出乎我的预料的,于是我更感兴趣了,直接网上找起了教程,也研读了一下OPEN API的文档。所以这篇文章更像是一个学习笔记,也希望能吸引到一些相同感兴趣的小伙伴。
文章最后咱们会开发一个根据ChatGPT的AI孙子(便是培养出高启强的那个孙子)
ChatGPT
信任大家能点进来的都知道ChatGPT是啥, 这part就过了吧。
OPEN AI API
Examples
OPEN AI API供给了许多种模型供用户挑选,在官网上也供给了许多示例,包含各种各样的模型及其生成的成果。 这是官网示例的地址:platform.openai.com/examples
咱们以Q&A为例:
能够看到它用的模型是text-davinci-003,然后他说”我是一个高度智能的问答机器人。假如你问的问题有切当答案,我就会给出答案,假如你问的问题是在搞我或者没有清晰答案,我会答复不知道”。然后下面便是一些示例。
提示工程(Prompt Engineering)
咱们还能够点右上角的Open in Playground来自己测验下
能够看到右侧侧边栏有许多参数能够调理,根据调理的参数不同,生成的答案也会有所区别。参数就不细说了,感兴趣的同学能够自己去看,当你鼠标移到那个参数上时,会有对应的解说框弹出来解说这个参数的作用。
这儿简略演示了怎么去经过提示,引导AI之后答复出你所想要的答案,所以提示(Prompt)就变的尤为重要。事实上,现在提示工程师(Prompt Engineer)现已成为一个炙手可热的岗位,他们的主要任务便是引导AI去学习及训练。 官方文档也用了相当大的篇幅去介绍怎么去提示:platform.openai.com/docs/guides…
这儿就简略翻译一下最初:
概述
咱们的模型能够做任何事情,从生成原创故事到执行杂乱的文本分析。由于它们能够做这么多事情,所以你有必要清晰描绘你想要什么。告知他该怎么做,而不只是简略陈说,这便是一个好提示的秘籍。
创作提示有三个基本准则。
-
展示和叙述。经过指示、比方或两者的结合,清晰你想要什么。假如你想让模型按字母顺序排列一个项目清单,或按情绪对一个段落进行分类,就向它展示你想要的东西。
-
供给高质量的数据。假如你试图建立一个分类器或让模型遵从一个模式,保证有满足的比方。保证校正你的比方 —— 模型满足聪明,它能够辨认拼写错误,而且告知你,但它也或许认为这是你故意写错的,这都会影响他的答复。
-
检查你的设置。temperature和top_p参数操控了模型在发生呼应方面的确定性。假如你要求它发生一个只有一个正确答案的呼应,那么你就想把这些设置得低一些。假如你在寻找更多不同的反响,那么你或许想把它们设置得更高。人们运用这些设置的第一大错误是,假定它们是对”聪明”或”创造性”操控。
到这儿大家应该也就知道了,那个AI佛便是经过程序员挑选合适的模型,以及对他加以训练,比方告知他当用户发问时,他需求从释教及心理学的角度去答复用户的问题。
模型(Models)
模型能够说是非常重要的一部分,也是Open AI的中心。
ChatGPT用的便是GPT-3.5模型,他主要是面向大众,所以被训练的愈加安全,不会输出一些出格的内容。
在GPT-3.5中又包含了几个子模型:
现在官方推荐的是gpt-3.5-turbo
,称此模型能生成最好的成果,而且只需求text-davinci-003
十分之一的算力。
价格
现在gpt-3.5-turbo
的价格是每一千个token需求0.002。所谓token能够理解为他处理的单词数,1000个token大概能够生成750个单词。
AI孙子
接下来咱们测验简略写一个AI孙子。
首先当然是创立一个项目,我用的便是简略的create-react-app去创立一个react运用:
npx create-react-app ai-sunzi
运用express写一个简略的服务端:
重写App.js,咱们只需求一个textarea和一个提交按钮
拜访http://localhost:3000 保证能够拜访服务端,回来“Hello World!”:
接下来咱们需求去Open AI官方文档中检查怎么运用它的API,文档中有一个比方,怎么在nodejs中引进包:
咱们把他复制到咱们代码中,有些地方仍是需求改动一下,比方包的引进不能直接运用import。再将API Key复制到configuration中(API Key需求注册并登录OpenAI,能够免费收取):
然后咱们再检查文档中Completion部分:
将其复制到咱们代码中并测验:
此处我将max_token修正为100,由于中文字符所占字节数长一些。随后将prompt参数改为“不管用户输入什么,只需答复这是一个测验” 再次拜访localhost:3000能够看到确实能够回来“这是一个测验”。
说明咱们的后端现已从OPEN AI得到了回来的数据。
再接下来就简略了,咱们只需求把前端和后端连上,再修正prompt,让这个AI体现的像孙子:
将textarea中的message传入至prompt参数中,再从OPEN AI得到回来的答案,就大功告成了。 以下为一些测验:
Reference: www.youtube.com/watch?v=bB7…