WhatIfGPT概述
WhatIfGPT尝试用多个Agents之间的互动来自动生成故事. 项目里使用了一个故事讲述Agent,和多个角色Agents。故事讲述Agents负责和角色Agents交流,并旁叙故事。项目可以自定义故事主题、角色数量。故事讲述Agent和角色Agent都有记忆模块。项目会自动设立故事的目标,角色Agents会尝试达成目标,故事讲述Agent会在每轮讲述后检查目标是否达成。
WhatIfGPT工作流程如下:
- Story Settings --> Run:设定故事主题(story),如哈利·波特、加勒比海盗等,角色代理的数量,让GPT自动生成或手工设定每个角色名字(agent_names)和整个故事设定(story_setting_event)。点击Run按钮,开始生成故事,不需要用户再输入任何内容。
- Generate Main Stroy --> Stroyteller Narrates Main Story:根据用户输入的基本信息,进一步细化故事背景、故事人物等信息。
- 根据故事主题生成指定数量的角色代理,代理继承了LangChain的GenerativeAgent扩展类,使用下面给出的Prompt1(随机创建角色略有不同)创建角色的的性别、年龄等基本特征,并赋予记忆。
- 根据之前故事主题、角色名字、故事设定, 用prompt2让GPT生成一个故事起点(specified_story),指示角色接下来的行动,并用prompt3从中生成一个故事最终目标(story_main_objective)。
- 创建故事讲述者代理的实例和角色代理的实例。放入更具体的讲述者的System Prompt,角色的System Prompt。
# primpt1
f"基于{
story}角色 {
name}拥有一些基本的记忆和事件,"
"以JSON格式提供以下属性:\n"
"name: 角色的名字\n"
"race: 角色的种族\n"
"sex: 角色的性别\n"
"age: 角色的年龄\n"
"traits: 描述角色的3到8个特征(用逗号分隔)\n"
f"status: 从{
story}的角度看角色的当前状态\n"
f"daily_summaries: 今天角色完成的5到10个{
mood}主题的日常活动(字符串数组)\n"
f"memories: 角色生活中的5到10个{
mood}主题的回忆