基于ChatGPT实现多角色自由对话+长期记忆方案(Fine-Tunning篇)

AIGC
后台-插件-广告管理-内容页头部广告(手机)

GPT4发布了,文心一言发布了,有种全民AI的感觉。这几天把多角色+长期记忆实现方案做了一些整理,给到有类似应用场景朋友但没有AI实践的朋友,希望有一些帮助。


应用场景【任务】 - 玩家和游戏中多角色实现自由对话(也包含NPC对话NPC)并实时更新角色间关系,从而推动剧情发展和游戏进程。


以下是几个关键功能的实现:

多角色对话

ChatGPT:是基于Transformer架构的自回归语言模型,可以对一段文本进行预测和生成。目前最新的API是3.5,但并不支持微调,暂时还是只能微调Ada、Babbage、Curie和Davinci这几个模型。

技术选择:目前有2个解决方案,今天先讲其中之一:

  • Fine-tunning:fine-tuning是基于预训练好的ChatGPT模型,再通过小规模数据集进行微调,使其适应特定任务的技术。在游戏场景中,可以将游戏世界观、角色之间的对话作为微调数据集,并使用fine-tuning方式训练模型,从而让AI知道“角色分别是谁”、“在一个怎么样的世界中”、“他们之间是如何交流的”。
  • 实现方式
  • 数据集处理:首先需要将游戏中角色之间的对话记录下来,并将其处理成Fine-tuning数据集。常见的格式为每行一个对话,对话分两个方向记录,如:
  • 角色 A: 快,出发!去解救受困的村民!
  • 角色 B: 你总是这么焦躁(角色A已通过传送门出发)...等...等等
  • 然后,需要进行一些清洗、标注等处理,例如去除无意义的字符、标注说话者、转换成Token ID等,最终得到可直接输入模型的Fine-tuning数据集。数据集支持JSON和CVS格式(但必须包含prompt和completion列)。命令行:
  • openai tools fine_tunes.prepare_data -f xxx.csv,将准备好的文件转成jsonl格式。
  • 模型训练:直接使用命令行对jsonl文件进行训练:
  • openai api fine_tunes.create -t "xxx.jsonl" -m davinci(试用davinci模型训练)。可以通过
  • openai api fine_tunes.follow -i "<model_id>"查看训练进度。
  • 模型使用:正常调用API是一样的,只是需要输入你训练后的模型。
基于ChatGPT实现多角色自由对话+长期记忆方案(Fine-Tunning篇)

长期记忆

微调后,模型实现了角色关系、角色性格、世界观等数据的理解,所以游戏剧情基础信息已经具备。随着游戏进程推进,产生的重要记忆,我们可以通过prompt进行记录,但是token数量有限,我们需要实时的进行记忆的筛选,记录最重要的信息。或则将记忆通过知识图谱进行处理,帮助模型更好的进行理解文本的背景和意义。


角色关系变化

这里还有一个问题就是,模型是一个黑盒,角色之间的关系到底发生了什么实质性的变化,我们并无法模型接口获得。所以如何基于角色之间的关系变化,来触发游戏内特定的任务,就需要引入另外一个模型:情绪预测。目前中文的情感预测模型已经比较多,可以使用百度的ERNIE,也可以去几大模型开源网站搜一下合适的模型,就不再展开。(gpt系列也有对应任务,但是API没找到接口,有知道的可以分享一下)

至此,从世界观和角色信息来实现多角色之间合理对话、保存记忆、角色关系演进,几个主要的环节已经完成。关于长期记忆,还有一种解决方案是Embedding,将在后续文章整理。


介绍一下自己:14年游戏/文娱相关行业从业者,会写代码的产品经理。聚焦科技创新+商业化落地解决方案。目前有大量AI可落地的业务场景。

如果您有AI技术但找不到商业化路径或则业务需要AI技术支撑,欢迎一起交流合作。也欢迎各位交流行业、市场、产品、技术、管理等方面内容。

后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。