NPC 说话像一个角色,就算有稳定人格了吗?

第一篇论文的 NPC 对话实验已经完成一百回,每回十五次发言。读这批记录时,一个很自然的判断是:读几句回复,觉得“这个角色挺像设定的”,就认为人格表现成功了。
可如果继续聊下去呢?换一个问题呢?其他角色提出不同意见时,它还会保持自己的特点吗?
这些问题让我想把“像一个角色”拆开来看。这篇讨论我在 NPC 项目中关心的评价思路,尚不提供模型排名或人格稳定性的实验结论。

先区分三件事

我会先看语言风格、人格倾向和情境反应。
语言风格比较容易被注意到。例如句子长短、礼貌程度、口头禅,或者一个人说话是否直接。
人格倾向更接近角色在不同问题里的选择方式:愿不愿意主动参与,如何对待合作,是否重视计划,遇到不确定性时怎样反应。
情境反应则和当时发生的事有关。同一个角色,在闲聊和面对危险时,表现当然可以不同。
这三个层面会互相影响,但不能用一个层面完全代替另一个。角色一直使用同样的口头禅,只能说明某种表达习惯保持了下来。
下面是一个为说明问题而写的例子,并非实验中的原始对白:
一个被设定为谨慎的 NPC,可能说:“我觉得还是先确认一下比较好。”
如果它之后每次都毫不犹豫地接受最冒险的方案,仅靠这句台词,我很难判断它是否真的表达了谨慎。

稳定,不要求每次给出同样答案

假设一个角色开始时担心建筑安全,后来有人提供了可靠的检查结果,它因此改变计划。这个变化可以是对新信息的合理回应。
所以,评价稳定性不能只统计它有没有改变答案。还需要看,它为什么改变,新的判断和当时的信息是否相符。
一个重视计划的角色,在紧急情况下也可能先处理最迫切的问题。一个内向的角色,在必要时也可能主动发言。
我希望观察的是:当情境允许不同选择时,这个角色是否持续表现出与设定有关的倾向;当行为发生变化时,能否从对话里找到理由。
这样的 NPC 才有机会既保留辨识度,又对环境作出回应。

在我的实验里,哪些因素可能影响判断

第一次最终实验让五名 NPC 在同一回里共享对话历史,并按固定顺序发言。后面的角色可以读到前面的人刚刚提出的建议。
这意味着,角色的回复不仅受到人格提示词影响,还受到其他角色和历史内容影响。
假如前面的人已经给出一个完整计划,后面的人选择赞同,不能立刻判断它缺乏个性。也许赞同符合它的合作倾向;也许它没有提出意见的必要;也可能提示词没有为分歧留下足够空间。
同样,随着历史变长,角色如何使用初始设定和近期信息,也值得观察。但“历史越长,人格一定越漂移”仍需要实验支持,不能先当成结论。
我会把发言顺序、历史长度、场景和提示词都看作实验条件,一起记录下来。

如果要评价,我想怎样做

第一步,是给评价留出足够的观察范围。只读一句话,很容易被语气影响;把一整场对话混在一起,又可能看不见变化发生的位置。
一个可以尝试的方法,是分别观察前、中、后几个阶段,保留各阶段的判断依据。但窗口里需要有多少文本、是否能公平比较,还要进一步验证。
第二步,是同时保存分数和证据。评价者说这个角色比较重视合作,需要能指出是哪几次回应支持了判断。
第三步,是检查评价本身。不同评价者是否得出接近的判断?换一种评分提示词,结果是否变化很大?自动评价与人工阅读是否存在明显分歧?
这些是我想完善的评价步骤,不代表当前仓库已经实现了完整流程。

五维距离可以告诉我什么

公开项目示例里有一个辅助计算:比较角色目标人格参数与评价得到的五维分数,计算欧氏距离。它不应直接被当成第一次一百回实验已经采用的评价方法。
可以把它想成比较两组坐标。距离较小,表示两组分数在这个计算方法下更接近。
但这个结果依赖输入的评价分数。评分如果不可靠,距离即使精确,也不能证明角色表现准确。
此外,总距离会把五个维度的差异合并起来。两个角色可能得到相近的距离,实际偏离的维度却完全不同。
因此,我更愿意把它和分维度结果、文本证据一起使用。它能够帮助整理比较,不能独立承担所有解释。
TIPI-J 原本是为人格测量开发的简短量表;将相关维度用于生成角色和评价对话,是需要额外验证的使用方式。TIPI-J 原始论文

我希望看到怎样的 NPC

我希望角色在对话里有可辨认的选择方式,而不只是不同的名字和措辞。
它可以学习新信息,可以改变想法,也可以和别人达成共识。但我希望能从这些变化里看见它为什么这样做,理解它与另一个角色的区别。
要走到这一步,需要把观察变成可以核查的问题:具体哪一次回复表达了什么倾向,之后发生了什么,判断依据是否足够。
这些问题会继续留在我的实验里。第一次实验已经留下真实日志,第二回实验也有自己的材料。讨论哪些设定更容易保持、哪些情境更容易改变角色表现,需要分别依据两次实验的条件和分析,不能把不同版本混在一起。
对于本文内容有任何疑问, 可与我联系.