首页
搜索 搜索
当前位置:聚焦 > 正文

书写自己的AI老婆角色(AI对话/text-generation-webui/Tavernai)

2023-05-24 06:05:41 哔哩哔哩

1.前言


(相关资料图)

先前一直都在写如何部署text-generation-webui/tavernai的文章,但却没有提到同等重要的创建角色卡。翻了一下国内的资料,基本寥寥无几···大部分资料都在外网 因此就打算整合下资料来写个教程吧。目前因为大部分开源模型

角色卡设定将使用英文来编写,因为这样更能节省token,另外一个原因是当前很多开源模型对中文的支持不是很好(

教程目前还不完善,我也在学习中,希望各位大佬们能指出错误的地方,感激不尽

希望大家看完后可以有所收获,写出一个属于自己的AI老婆

2.起步

首先,建议使用这个网站来创建和编辑角色卡  https://zoltanai.github.io/character-editor/

点击新建角色后,会看到创建一个角色的基本元素:Name(名字)Personality(个性)Scenario(对话的场景)Greeting Message(角色第一条消息)Example Messages(示例对话),以及左侧的角色头像  [Summary在tgwebui中无效,故不用填写]

其中我认为最重要的是Personality(个性),这将决定AI是谁,要做什么事情,怎么做。其次是Example Messages(示例对话)和Greeting Message(角色第一条消息)这将告诉AI它所扮演的角色将会用怎样的对话语气和口癖来与你进行对话。

接下来我将创建一个猫娘角色——nana来进行示范。

3.Name(名字)

这真没什么好说的,符合你的XP就行

我这里填入名字为nana

4.Personality(个性)

在此之前,先了解一下什么是Token?

“在大型语言模型中,"token"是指文本中的一个最小单位。通常,一个token可以是一个单词、一个标点符号、一个数字、一个符号等。”——new bing

你可以简单的理解为Token是AI的记忆力单位,目前大部分开源模型的最大Token长度是2048tokens(Mpt-7B-storywriter却能高达65000tokens),GPT3.5-turbo是4096tokens,GPT4是8192tokens,GPT-4-32K是32768tokens。你可能会问,为什么不把模型的最大Token长度调大呢,不是越大越好吗?

一是因为技术限制,二是随着你的文本Token长度上升,在没有达到该模型的最大上限Token之前,显存消耗将一直持续增大。在Mpt-7B-storywriter的模型卡介绍中提到,他们使用了8张A100-80GB GPUs来达到84k tokens 的文本长度。

正因为有着最大文本Token的限制,AI角色就有个无法避免的问题——记忆力差(这也是各位在催眠GPT容易半路失败的原因),容易失忆。因此,在我们书写AI角色的时候,要合理利用Token,并不是描述越详细越好。角色卡的内容也是记录到模型的最大文本Token中的,如果你角色内容就已经有1500token,那角色的实际记忆力只剩下500token左右了(说几句就忘记前文了

因此我推荐角色卡的总Token在500~800tokens即可。

在刚刚推荐的角色卡制作网站中,Example Messages下方会有当前角色卡的总Tokens数

既然有Token限制,那么怎样才能比较好的书写角色的Personality(个性)呢?

社区给出的主流方法是使用W++格式来描写,以下是W++格式的模板

其中双引号里面的内容便是你想要填入的内容。

我们一步一步来介绍

W++最基本的格式是这个,即角色的名字。

我要创建的角色名字是nana,则改成

在W++格式中,我们需要填入一个键和对应的值来完成角色的Personality(个性)的描述。

现在我们想要给nana这个角色赋予猫娘(catgirl)物种(species),因此我们需要填入一个键(species)和一直对应值(catgirl)

对应的值要用英文圆括号( )括起来,值里的每一项需要用英文双引号" "来括住,并且项与项之间用 + 来隔开。

接下来我们再给猫娘nana赋予人物性格"cute" + "shy" + "intelligent" + "considerate" + "emotional"

之后就是自由发挥了,看自己喜好(xp

其中,mind和personality其实是一样的东西,只是用于强化特性而已,看自己选择。

5.Scenario(对话的场景)

简单描述你与AI进行初次对话的场景即可,可以描述AI或你正在做什么。我这里就比较随便,简单描述了一下

6.Example Messages(示例对话)和Greeting Message(角色第一条消息)

这将决定角色的对话方式和习惯,请编写符合角色性格的内容。

PS:如果你想要在对话中描述一个动作时,请使用 * 动作 * 的形式来输入。

假设nene正在打扫房屋,“我“”回到家后开始与进行nene对话。那么Greeting Message(角色第一条消息)可以这么书写

而想要nene尽量在每一句话都加上"meow~"的后缀,那么Example Messages(示例对话)可以这么写(请注意,我尽量在每一句都加上了动作描写* 动作 *,这能丰富对话内容)

其中{{user}}代表用户,{{char}}代表角色,不要修改这两个词。这里我只写了一个样例对话,实际上你可以写多个,只需要在每一个对话前加上<START>即可。

至此,角色基本书写完毕,总tokens为430

最后,添加上角色的头像图片。

7.导出角色卡

导出PNG格式或json格式后,进入chat settings

来到最下方的上传角色选项,上传对应格式即可。