前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >李云龙、谢耳朵专业陪聊!角色扮演系统ChatHaruhi爆火:支持32个中外角色,开源5.4万条对话数据

李云龙、谢耳朵专业陪聊!角色扮演系统ChatHaruhi爆火:支持32个中外角色,开源5.4万条对话数据

作者头像
新智元
发布2023-09-19 09:05:41
6460
发布2023-09-19 09:05:41
举报
文章被收录于专栏:新智元

新智元报道

编辑:LRS

【新智元导读】GitHub斩获700+stars,除了二次元角色,ChatHaruhi还支持《武林外传》、《亮剑》、《生活大爆炸》、于谦等经典角色!

「角色扮演」是大型语言模型众多应用场景中比较有意思的,LLM可以用指定角色的口吻跟用户对话,还可以实现诸如「乔布斯与苏格拉底」的超时空交流。

很多公司也发布了基于语言模型的角色扮演产品,如Glow, Character.AI等,用户可以轻松打造出一个「赛博老婆」,在游戏、创意产业等领域都有许多潜在的应用场景。

最近,GitHub上开源一个好玩的角色扮演聊天系统「Chat凉宫春日」,基于中文语言模型「骆驼」(Luotuo),可以模仿32位中外角色的对话风格,同时提供超过5.4万个对话数据集。

项目链接:https://github.com/LC1332/ChatHaruhi-Suzumiya

论文链接:https://arxiv.org/abs/2306.09479

目前该项目仍在持续推进中,并且提供了丰富的demo试玩方法。

demo链接:https://huggingface.co/spaces/chenxiYan/ChatHaruhi-OpenAI

用户可以给自己随意起一个名字(最好贴近原著),然后输入问题即可开始交流,比如扮演「秀芹」与李云龙对话时,可以看到模型的多轮回答效果非常不错,并且模拟的对话风格也很贴切。

基本思路

在开源角色扮演实现中,用户通常会在提示中输入:

I want you to act like {character} from {series}. I want you to respond and answer like {character} using the tone, manner and vocabulary {character} would use. Do not write any explanations. Only answer like {character}. You must know all of the knowledge of {character}. My first sentence is "Hi {character}.

我希望你表现得像[电视剧]中的[角色]。我希望你像[角色]一样,使用[角色]会使用的语气、方式和词汇来回应和回答。不要写任何解释。只需要像[角色]一样回答。你必须了解关于[角色]的所有知识。我的第一句话是「你好,[角色]」。

通过这种简单的方式,语言模型可以展现出部分角色扮演能力,但这种方式很大程度上依赖于语言模型本身已有的知识,无法扮演记忆模糊或语料之外的角色。

并且提示中「了解角色的所有知识」的定义很模糊,模型仍然会产生幻觉。

即使提示内容已经足够清晰,在文本生成的过程中仍然会受到底层语言模型的影响,继续调整提示词可能会缓解这种情况,但在角色数量过多时可能工作量会非常大。

把模型在角色的对话数据上进行微调也是一个思路,但研究人员发现微调过的聊天机器人会产生更多幻觉问题;并且对于想要模仿的次要角色,也很难收集足够量的数据来微调。

ChatHaruhi项目的目标是让语言模型能够模拟动漫、电视剧、小说等各种体裁下的角色风格,开发者认为,一个虚拟的角色主要由三个组件构成:

1. 知识和背景(Knowledge and background)

每个虚拟角色都存在于自己的设定背景中,例如《哈利·波特》中的人物存在于魔法世界中、凉宫春日在日本的一所高中等。

在构建聊天机器人时,我们希望它能够理解相应故事的设定,也是对语言模型记忆的主要考验,通常需要一个外部知识库。

2. 个性(Personality)

角色的性格也是文艺作品中非常重要的一部分,必须在整部作品中保持连贯或一致,有些作者甚至会在动笔之前先定义角色个性。

3. 语言习惯(Linguistic habits)

语言习惯是最容易模仿的,只要在上下文中给出合适的样例即可。

该项目的关键思路是尽可能多地抽取出原始脚本,为目标角色形成一个记忆数据库。

当用户提出新问题时,系统会搜索相关的经典情节,结合角色设定的提示词,通过控制语言模型来更好地模仿角色。

研究人员还设计了一个系统来自动生成适合角色个性的对话,即使是原创对话较少的角色,也可以生成足够的数据来微调。

ChatBot设计

给定一个特定角色R和一个查询问题q,聊天任务可以建模为:在知识背景、个性和语言习惯Θ的条件下生成回复的概率:

角色R可以由一段提示文本(I want you to act like character from series...)指定。

类似上下文学习(in-context learning),可以把角色之前的对话序列作为概率的条件:

对于世界观更大的角色,需要先从记忆库中检索出最相关的对话序列。

系统提示(System Prompt)

在之前提到的可用于ChatGPT的通用角色扮演提示中,还有两方面需要改进:

1. 不重复行文(won't repeat line)

像ChatGPT和LLaMA2等模型在基于人类反馈的强化学习(RLHF)训练时,面对诸如「给我m个不同的选项」、「生成m个标题」等任务时,更倾向于不重复上下文中的内容。

而在模仿角色时,需要在提示中强调可以重用小说或电影中的经典台词。

2. 角色个性不够突出

由于RLHF机制,每个语言模型都有自己特定的语言偏好,会影响模仿的效果,在提示词结尾加入角色的个性描述可以改善。

改进后的提示词如下:

I want you to act like {character} from {series}. You are now cosplay {character} If others’ questions are related with the novel, please try to reuse the original lines from the novel. I want you to respond and answer like {character} using the tone, manner and vocabulary {character} would use. You must know all of the knowledge of {character}. {Supplementary explanation of the character’s personality}

我希望你表现得像[电视剧]中的[角色]。你现在是cosplay [角色]。如果别人的问题与小说有关,请尽量重用小说中的原台词。我希望你像[角色]一样,使用[角色]会使用的语气、方式和词汇来回应和回答。你必须知道[角色]的所有知识。{关于角色个性的补充说明}

角色对话

为了更好地再现小说、电视剧、电影中人物的行为,研究人员收集了大量经典剧本的节选,不过除了少数人物(如相声演员于谦),并不是所有对话都是问答的形式,可以把历史记录组织成故事的形式。

原始对话搜索

在输入查询后,从对话库D中根据嵌入相似度选择出最相似的M个采样,具体M的数量取决于语言模型的token限制。

在构建对话记忆库时,研究人员建议每个故事的长度不要太长,以免在搜索过程中占用其他故事的空间。

聊天记忆

对于某个记忆,需要记录每个用户查询和聊天机器人的回复,然后将所有对话序列输入到语言模型中,以确保对话的连贯性。

在实际实现中,从该记忆开始,向前计算token总数,并将语言模型的对话历史输入限制在1200个token以内,大约可以容纳6-10轮对话。

对话合成

目前ChatHaruhi还只能利用ChatGPT或Claude API来完成角色扮演,如果用户希望把这种能力迁移到本地模型,仍然需要构造出一个合适的数据集。

从问题中生成对话

由于收集到的数据并不是严格的问答形式,所以研究人员选择在收集的故事中,把目标角色第一句话之前的所有对话当作问题,输入到语言模型中生成后续对话。

问题生成

需要注意的是,有些角色的数据非常有限,不足以微调语言模型。

为了从现有数据中对角色问题进行数据增强,研究人员使用Alpaca等模型,先提供一个清晰的问答对,然后生成约10个启发式输出;再利用预定义的prompts重新生成该角色的训练数据。

研究人员总共收集了22752个原始对话数据,以及31974个模拟问题,共同组成了ChatHaruhi-v1数据集。

实验结果

目前定量的实验结果和用户研究仍在进行中,文中只是先简单定性地对比了一下各个模型:

1. GPT Turbo 3.5,只使用系统提示

2. Turbo 3.5,输入完成的提示、对话历史、问题等

3. ChatGLM2,只输入系统提示

4. ChatGLM2,给出完整提示

5. ChatGLM2,在ChatHaruhi数据上微调,输入完整提示

参考资料:

https://github.com/LC1332/Chat-Haruhi-Suzumiya

https://twitter.com/xiaohuggg/status/1696825501376274809?s=20

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-12 14:39,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 新智元报道
  • 基本思路
  • ChatBot设计
  • 对话合成
  • 实验结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档