索引
随着chatGPT不断着成长与进化,现在的聊天机器人已经完全颠覆你的想象,由于 GPT-3 和 GPT-4 模型的推出,chatbot 已经达到前所未有的复杂程度,那么,要如何在 wordpress 上面自定义一个 chatbot 呢?
模型进化(Model Evolution)
每个模型都是一种「算法」,而当模型被训练到一定的程度之后,又会变成全新模型,无论是从手机、服务器甚至是整个互联网,都会有不同形态的模组,大家最常听到的就是「输入」及「输出」,当 input 一组数据,而让模型开始计算出一个 output,而这个 output 待下次会再重复被放到 input 值里面,几次的循环后,output 的值就会越来越趋近于精准(有点类似数学的极限 limit 高等函数应用)。
而 chatGPT 既是模型又是聊天机器人,它是使用「text-davinci-003」模型来作为训练的基础,可以使用「text-davinci-003」来训练原有模型或者创建一个新的模型,也就是说,你可以自己创建一个全新的聊天机器人(比如创建并训练完而重新命名为 BoomGPT)。
模型训练
由于微调模型是一个极其繁琐的任务,你可以通过提示设计(prompt-engineering)来避免掉,AI engine 的代码中可以作为上下文,也就是说,当用户使用你创建的 chatbot 时候,他们会问什么样的问题,而你要给予chatbot什么样的口吻和句型来回答用户的问题,而你给的这些「提示」就必须相对的严谨,才能让 AI chatbot 接近所谓的「模型训练」。
下面那张图可以展示能够去充分理解到谈话内容(包含上下文),也展现了你对 chatbot 所定义的口吻语气。
微调并非是真正的训练(training),因此它对于互动聊天还是会有一些局限性,当然,当你给的数据库资料越来越多的时候,微调模型就会接近 AI chatbot,「data feeding」是 AI 的一个基础建设,就像是类神经网路(Artificial Neural Network)一样。
AI Engine 插件
wordpress 相信大家都用过,而近期我也找到这种基于 chatGPT 的 wordpress 插件,它需要你完成一些流程,才可以正确的让你的 wordpress 聊天机器人正确的运作。
- 收集所有必要的数据
- 格式化数据
- 数据要以「jsonl」的格式上传到 OpenAI
- 用你的数据来训练现有的 OpenAI 模型
- 获取你自己微调过后的模型

wordpress AI engine 插件界面
切换 Dataset Builder 模式,这里就是数据集中的地方:
从上图可以看到分为「Prompt」和「Completion」,在这个案例中,我们将专注于「聊天互动」,所以在 prompt 栏位几乎是疑问句,而 completion 栏位则是答案的输出,所以首先要做的事情是「收集数据」。
按照刚刚上面讲到的,你所有收集到的数据在上传到 AI Engine 这个插件之前,一定要把数据转换成 .jsonl 的格式,否则它会无法读懂你上传的文件,而根据 OpenAI 的官方参考文件,一个数据集要得到好的反馈效果来达成你的 chatbot 互动,建议是在 3000 – 5000 行的数据。
搜集好你要的数据后,你可以手动输入到 AI Engine 里面,或者你可以使用 google sheet 来导出 .jsonl 文件(.csv 文件也可以),那如果你是一个比较懒惰想要投机取巧的人,你可以使用下图所指示的「Dataset Generator」:
「Single Generate」按钮可以根据特定的文章来生成数据,「Run Bulk Generate」则可以批量生成数据(要注意的是,它使用的是 OpenAI,可能会有费用产生)。
可以根據您的情況修改提示以更好地增強流程,您也可以使用 {URL} 或 {TITLE},像這樣:
Generate 30 questions and answers from this text. Question use a neutral tone. Answers use the same tone as the text. If necessary, the answer can end with "More information at {URL}.".
那么,数据如果出现红叉叉怎么办?
好不容易辛苦地准备好数据并导入进去生成结果,然后显示 error,这不是很奇怪吗?看下图:
从图上我们可以看到问题所在,就是我们采集来的文本可能没有使「分隔符」,OpenAI 会提示你至少要有默认的分隔符,这是为了确保输入及输出的位置匹配,你也可以手动输入分隔符,但如果你是第一次碰这个插件,建议还是使用 Format with Defaults。
所有数据准备完了以后,就可以点选「Upload to OpenAI」,文件名可以由 OpenAI 帮你生成,你也可以自定义文件名称以方面以后管理。
接下来就进入到最后一个环节「训练模型」,而这个行为就是以你的数据集作为基础来进行训练,你需要选择一个模型基础跟命名一个后缀,AI Engine 会自动帮你建议你的后缀名。
基础模型类型建议是选择「curie」或「davinci」,大多数都是推荐 curie,因为性价比比较高,davinci 虽然训练能力很好,但是费用会昂贵些。
好了之后点击「Start」,模型就会开始被训练,500行的数据集最快大概需要跑一个多钟头,在过程中你可以点击「Refresh」来查看模型训练的完成度,训练完成的模型可以再次的被训练,如下图:
为了确保你的模型被训练成功,记住要不定期的去点击刷新按钮,虽然这个动作不是很重要,但是以防万一,而现在你可以选择你微调过后的聊天机器人了。
为了让聊天机器人更彻底的理解「输入」和「输出」,请把「Casually Fine Tuned」打勾(如果你的模型没有微调过,无法打勾),然后你不需要再提供上下文。
结论
利用 AI Engine 和 OpenAI 搭配来创建属于你自己的聊天机器人是不是容易的多了? 虽然说过程繁琐且需要耗费一点时间,但总体来讲结果是值得付出的,友善的 UI 界面,让一些不太懂开发的人也可以打造自己的 chatbot 也是一件很有成就感的事情。