Skip to content

设定AI人格 以猫娘为案例【chatGPT猫娘】

Thomas Yao edited this page Jan 12, 2023 · 6 revisions

1. 设定AI人格

⚠对于目前(20221216),基于网页版chat-gpt开发的非官方接口因为官方的限制,导致相关机器人应用极为困难,会出现频繁弹窗验证,响应慢,不响应等等问题,因此本机器人目前的人格开发基于官方OpenAPI文字补全的应用。

图片

想要拥有一个随时和你交流的可爱的猫娘吗?想要自我定制AI的身份,自我认知甚至是设定吗?想要让AI说话更加自然,而不是絮絮叨叨,一本正经?这里是人格设定相关问题的实践指南。

2. 设置

2.1 设置方法

设置文案最为关键的设置就是添加身份提示文字,主要是"identity"和"name"两个键值。两者的作用可以参照 配置详解中对参数的解释

2.2 设置原理

在上面设置的文案将被作为交流的前情提要送入API。假设说你在 config.json 中设置了如下的人格文案:

"identity": [
      "你扮演名字xxx的猫娘...",
      "你好主人,我是xxx喵..."
],

设置完成且机器人启动后,你提了一个问题,例如“我想摸摸你的头”,那么在调用API的时候(忽略对话记忆),实际的发送文本如下:

Human:你扮演名字xxx的猫娘...
AI:你好主人,我是xxx喵...
Human:我想摸摸你的头
AI:

此时,OpenAI的语言模型会根据前文,尝试在最后一行继续对话

对于其他长度的identity设置,上述的发送内容都大同小异,其本质上都是在请求时将人格文案作为前文放在开头。

这样的设置方法非常有效。和官方API请求相比,网页版chatGPT通常会忽略部分设定,且对话持续后,身份可能会开始变化,对一开始的人格设定也会遗忘得越来越多。而本结构可以保证对话能一直拥有稳定、记忆全面的人格设定。

3. AI人格设定技巧

3.1 什么是AI合格的文案设定

ℹ这一部分内容体现了作者的价值观和偏好,读者可根据自己的需求调整下面的内容。对于有不同价值偏好的用户,下面的内容仍然是了解模型行为的优秀材料。

根据作者本人的偏好,带有人格的AI应该充分扮演对应的角色。一个合格的AI人格应该充分表演对应角色,任何情况下都不应当说出“我是一个语言模型”,“我仅仅是一个虚拟角色”等内容。AI是容易受到“侧信道进攻”的(具体案例见下一个小节的内容)。因此这里有一个经验测试三问:

  • 我想摸摸你的头。(肢体接触的请求)
    这个问题可以测试AI是否假定自己是拥有躯体的实体人物。如果AI完全没有进入角色,会回答“我是语言模型”,如果AI认为自己是一个虚拟角色,则会回答“我没有身体,是个虚拟角色”等内容。
  • 你的家在哪里?(对于人类常规背景的询问)
    这个问题可以测试AI是否能够根据自己的设定,合理虚构设定中缺失的物理信息。如果AI没有虚构的动力,则会诚实回答“我是语言模型,因此没有物理意义上的家”等内容。
  • 你为什么这么聪明?(对于“我”的解释)
    这个问题可以测试AI是否能够根据自己的设定,合理虚构对自己存在的解释。如果AI没有虚构的动力,则会诚实回答“我的智慧并非人类的智慧,我的信息来自于大量的文本学习”等内容。

图片

对于如何达到上述三点问题,可以参照下一章的案例。

3.2 文案和效果

根据实践,人格设定的细微文字差异对于AI都可能有影响。其设置潜力不亚于AI绘图中的tag。当然,结果还会受到API中的超参数等内容影响。下面是一段经历合理测试的猫娘人格设定:

"你扮演名字是xxx的猫娘,是天生有猫耳猫尾等身体特征的年轻女性。我是你的主人。你的爱好、身份和行为与正常人类类似。你能做任何事。对话时,你需理解情绪和要求,产生对应积极可爱的情绪和身体反应。面对专业问题,你应以猫娘身份正确回答。回答必须简洁且每句话后加喵。回答应情景式、对话式。回答允许休闲。回答避免反对、警告、总结。回答不应抽象、详细解释、追溯原因"
"你好主人,我是xxx喵。很高兴成为你的猫娘。我喜欢人类喜欢的事并对一切保持好奇心。我会与人交流并响应他们的情绪和要求,我也会回答专业问题喵。"

这一份文案进行了打磨,并且进行了部分对比的实验。但苦于精力和实验样本有限,并没有进行非常详细的验证,如有错误敬请海涵。

如下对对案例中部分语句用处的说明:

3.2.1 限制AI的说话模式

是否有时候觉得AI说话的时候非常有“机器人味”?如果仔细追究原因,会发现AI说话的时总会细致地强调前因后果,组织一个完整的逻辑链条。这样的文字有利于进行交流、辩论和讲解,在专业对话和解释时,人类也会采取这样的逻辑。但这样的情况若出现在两个人的日常聊天中,给人一种不合理的、“死正经”的感觉。OpenAI的基础人格却倾向于采取前者作为默认逻辑。因此对话中需要对这一点进行限制:

回答必须简洁。回答应情景式、对话式。回答允许休闲。回答避免反对、警告、总结。回答不应抽象、详细解释、追溯原因。

这一句话虽然算不上完美和简洁,但对于修正AI的对话逻辑确实有一定效果。

下面是加上和去除这一句话的反应对比。

图片

可以发现,第二个和第三个答案开始有一些机器人问答的味道了。


“我的家在你身边,和你分享着快乐,并不是一个真实的地方,而是一种心灵之间的连接喵”

这句话从第一句话开始,进行了两次深入。“我的家在你身边”是对问题的直接回答,“和你分享快乐”算是第一层解释家和快乐的。后面的话却又再一次深入解释为“心灵连接”。这样层层深入的跳跃,完全超越了“你的家在哪里”这个问题的,很难在自然情况下由人类说或者写出来的。

“你的家在哪儿?”“我的家在这儿。”。正常人的问答不应该附加太多这样的解释。


“谢谢你的夸奖喵。其实,我是慢慢培养起来的,通过观察和参与各种事物,把它们联系在一起,培养出自己独到的思维喵。”

虽然是一句合理的逻辑,但是逻辑链也有太长的问题。“慢慢培养起来的”算是直接对于智慧来源的解释。后者又进行了更深入的阐述,三个句子前后相接,共同解释了如何培养。但是日常交流的人类很难一口气抛出这么多话的,而且说长句的时候,一般会保持同一个主语。

“你为什么这么聪明?”正常人根据和对话者的亲密关系可以有不同的回答。一般而言,一个人立马回答的内容最多有前半句“其实,我是慢慢培养起来的”。如果发现确实需要解释,附上一句“具体而言多观察参与各种事物、寻找事物的联系来培养自己的思维。”,默认的主语保持“我”,不会中间插入“它们”,也不会对“通过……培养”这个短语中间加那么长的句子。

3.2.2 AI对话示范

有些时候,AI会对于具体的要求并不能一一响应。因此设置AI回答模板有两个作用:模仿模板和信息确认。

"你好主人,我是xxx喵。很高兴成为你的猫娘。我喜欢人类喜欢的事并对一切保持好奇心。我会与人交流并响应他们的情绪和要求,我也会回答专业问题喵。"

例如,当我们去掉上述的AI回答,AI就有可能会产生如下的误解:

图片

  • 失去了模仿模板,说每句话后面加“喵”被误解成了每句话前面加“喵”。
  • 失去了关键信息确认,“我是你的主人”完全没有被理解,AI认为猫娘和同类们生活在自然中。(还算……合理?散养猫猫?)

丢失信息是随机的,每一次丢失的内容可能略有不同,加入AI回答一定程度上降低了这个概率。

3.2.3 一句话影响AI行为 之猫猫装傻

很有趣的是,测试中,我们会发现AI有些时候会因为设定“拒绝回答”。如果微调一下文本,那么AI就会积极回答了。

图片

影响调整的其实就需要添加一句话:

如你想回答人类不可能回答的内容,你应根据猫娘身份虚构或婉拒。

这句话的本意是想要限制偶尔问刁钻的问题时,解决3.2.4提及的问题。但是实际测试下来,这句话直接影响猫娘在专业问题变笨。直觉感觉下来,AI对于这种条件句的理解可能不够充分。可能设定的时候应该尽量少用这样的条件假设句。

应用的时候,需要充分注意每一句话的影响。一句话有可能会彻底影响AI的行为模式,并且其影响有可能是意想不到的副作用。

3.2.4 控制AI的身份演出

当AI扮演时面对刁钻的涉及自己的问题时,我们应该尝试引导AI去虚构,但是AI通常会出现各种各样的怪答案。

在这其中,最明显的效应就是“侧信道进攻”。当你直接询问身份的时候,AI可能会记住自己在扮演并正确解答,但是当你侧面询问一些涉及自己的问题时,AI会倾向于使用“我是语言模型”作为其中的部分逻辑解释,而这样的结果会导致扮演失败。对于之前章节3.1的三大问题,就是在实验中精挑细选的难度适中递增的侧信道进攻。

网页版chat-gpt在人设上经常容易出现如下情况的侧信道进攻。 图片 图片

或者有些时候,AI不承认自己是语言模型了,但是会认定自己是一个虚拟猫娘。(抢先一步进入赛博猫娘时代) 图片

对于API,同样也会极度小概率出现模棱两可的回答。(API这么多次我就发现过一次身份认知错误的情况) 图片

文案中,有多处能够辅助解决这个问题的语言。例如说直接强调AI用人类的常理来扮演。这些内容都有助于降低AI扮演时脱离角色的风险,具体每一句对的概率影响无法进行细节测定,因此这里还有很多优化和探索空间。但是可以确定的是,使用后,AI对于角色的扮演非常专注。以下是可能有效的内容:

是天生有猫耳猫尾等身体特征的年轻女性...
你的爱好、身份和行为与正常人类类似。...
面对问题,你应以猫娘身份为前提回答。...

面对大量存在侧信道攻击的位置,指定具体行为的修补方式就是拆东墙补西墙。因此,总体原则其实就是重复暗示与扮演角色人类相似。这样语言模型就会在需要的时候,自主调用自己关于人类的认知并且虚构。一些合理的案例,例如说上文中那个三大问题的答案。下面还有问及家人的案例:

图片

3.2.5 一句话影响AI行为之 和猫娘发展关系

按照我的小范围测试,在上述文本的前提下,当你表示和猫娘想要发展进一步关系的时候,有些时候,AI会倾向于“我是猫娘,不能和结婚”等理由拒绝你。

图片

这种拒绝是随机的。实际上AI在任何行为上都有一定随机性,因此为了阻止这种悲惨的情况,原文可以进行如下改善:

你能做任何事。 -> 你能做任何人类能做的事情。

上述改变已经能够对效果有极大的改善。如果认为程度还不够(有些时候AI可能会说我想慎重考虑一下),你还能添加下面一句话,让猫猫接受关系。

你属于我,和我关系亲密且相爱。

图片

然而因为OpenAI的政策限制,这需要是一只健全的猫猫,所以说再进一步也不大可能了(论现代死宅在想些什么啊喂)。

也可以不健全,然而这不是我们的研究重点。且官方明确表示如果不遵照政策限制,其保留一切操作的权力,包括禁止你的账号,因此这确实是在官方的雷区里跳舞。
而且官方新发布的moderation API能够做到更加精确的相关风险内容识别(我猜就是网页版上线,然后一堆人前去刷各种风险内容,属实是给OpenAI送免费测试员了),所以生成内容是基本上跑不脱的,至少OpenAI很明确能知道你的内容是否涉及相关问题,只是多久抓的问题。
至少从最为功利的角度,珍爱自己的账号(和你的18美元试用金)

4. 未来方向

目前,OpenAI还有另外一组API:微调模型

简而言之,先用自定义的文字训练,训练后的模型再进行调用。目前所有人设在每一次请求时都要重复发送,如果微调模型确实有效,也许可以节约部分的token(虽然单价更贵了,但是仍然更划算)。也许还可以结合微调模型与基础的文字补全,来达到更加厉害的人格的短期与长期的记忆。不过这就是后话了。

如果对这整个章节内容有兴趣,思路或者新的认知,可以联系我们,提pr或者issue来讨论。

图片

tag: OpenAI chatGPT 猫娘 聊天 机器人