论文标题
Narrative Studio: Visual narrative exploration using LLMs and Monte
Carlo Tree Search
论文地址
https://arxiv.org/pdf/2504.02426
代码地址
https://github.com/parsaghaffari/narrative-studio
视频介绍
https://www.youtube.com/watch?v=9T2sCyBhe8A
动机
大模型的出现极大提升了AI写故事的能力,用户只需提供初始设定,LLM就可以合乎上下文地续写剧情。
然而,目前LLM应用的人机交互模式大多都是单一、线性 的对话流程:用户从开头一路与模型对话,故事情节沿着一条时间线发展,无法中途分叉出不同走向。这种线性进程限制了创作中的自由发挥,用户难以基于同一开头去并行对比多种剧情走向,更无法便捷地探究各种“假如…会怎样”的情景。
在互动式故事创作、游戏策划以及创意写作等领域,创作者往往希望探索多个“what-if”剧情分支,在平行世界中比较不同的叙事走向,但传统的聊天式LLM接口不提供结构化方式来管理这些非线性的叙事空间。创作者若想尝试不同分支,通常只能从头重写或复制已有文本,过程既低效又容易混淆。于是作者希望开发一种AI工具,让用户在同一个框架下同时发展多个故事分支,方便地进行“假如”探索,同时发挥LLM善于构思的优势
面临挑战
AI写作(叙事生成)这一应用由来已久,当前技术条件下面临的主要挑战包括:
-
线性结构限制 :传统ai写作大多采用线性结构,故事从开头按顺序推进,缺少分支点供用户探索不同路线。
-
缺乏灵活的多路径探索 :一些游戏叙事和交互式故事会预定义多种分支剧情,让用户做选择走向不同结局。但此类系统一般依赖手工编写的固定脚本或规则,扩展性和灵活性有限,工作量大并且容易遗漏可能的有趣情节,难以支持大规模剧本。
-
缺乏一致性维护机制 :当故事出现分叉后,各条支线剧情往往容易产生不一致的问题。例如,在一个分支中角色A已经去世,但另一个分支却让A再次出现;或者不同分支对世界观的定义互相矛盾。线性故事尚且需要保持前后逻辑连贯,多分支结构下更需要一个机制来维护全局一致性。
本文方法
作者提出了Narrative Studio ,这是一个融合了LLM推理与蒙特卡洛树搜索(MCTS)的全新叙事创作环境。它通过一系列创新的技术机制,使用户能够在保持故事一致性的前提下同时开发多个分支剧情。下面将详细介绍该系统的关键组成部分与设计逻辑:
树形用户界面与分支控制
Narrative Studio 采用了直观的树状用户界面来呈现和管理故事情节的发展分支。故事以事件(一个段落或一句话)为基本节点,每个事件可以根据需要向下分支出多个后续发展。用户可以在任意剧情节点处新增分支,形成一棵剧情演进树,从而结构化地浏览和控制不同走向的故事。这样的界面允许分支点由用户指定,或者在某些情况下由LLM建议。用户可以自由切换关注不同分支,真正实现“一稿多版”的叙事创作体验。
前因/后果事件生成
为实现故事在树结构上的延展,Narrative Studio使用LLM来生成故事事件,并且独特地支持双向扩展:既可以向前生成后续情节,也可以向后补全前因情节:
后续事件生成(Forward Expansion) :当用户在某一事件节点上选择后续扩展时,系统会收集该节点的祖先事件链 (从故事开头到当前事件的路径)以及用户设定的相关参数(如情节风格、事件重要性等)。然后将这些信息打包成提示词,要求LLM续写一个合理且具体的下一步事件。生成过程中模型被引导要保持逻辑一致性、适当引入意料之外的转折。生成的新事件会被添加到事件树中,作为当前节点的一个子事件。在此过程中还会记录已生成的剧情,避免故事陷入循环。
前因事件生成(Backward Expansion) :当用户选中某一事件节点向前追溯其起因时,系统会利用当前事件及其后代节点信息(如果有)构造提示,要求LLM生成一个合理且具体的前置事件,解释“为什么会发生当前情节”。生成的前因事件将插入到当前节点之前,作为当前事件的父节点。前因、后续事件生成让用户在得以构建一个因果图谱形式的故事网。
为增强生成过程的可控性,系统还提供了一组参数来影响LLM生成事件的风格和内容:
- 指导要求 :一个可选的引导提示,描述生成时应采用的风格或基调,如“以幽默的语调叙述”。
- 事件可能性 :一个评分(1~5),表示生成事件发生的可能性大小,数值越低表示情节更离奇少见。
- 事件严重性 :一个评分(1~5),表示事件对剧情或角色影响的严重程度。
- 模型随机度 :即temperature参数,数值越高生成结果越具有随机创造性。
MCTS自动探索与路径评分
手动扩展每个分支虽然灵活,但面对众多可能的分支路径,人工探索难免力有不逮。为此,Narrative Studio引入了蒙特卡洛树搜索(MCTS) 来自动扩展和评估剧情分支。MCTS是一种经典的AI搜索策略,它通过反复的模拟尝试来寻找高价值的决策路径。作者将其巧妙地用于故事生成:让系统自动“尝试”延展不同的剧情走向,并根据预先设定的评分标准来判断哪些分支值得深入发展。
在Narrative Studio中,MCTS模块会围绕故事树进行循环迭代,执行选择—扩展—模拟—回溯 四个步骤。其总体流程如下:
-
选择 :从故事树的根节点(故事开头)出发,按照一定策略向下选择分支并到达一个情节节点。选择过程中采用上置信界(UCB1) 公式来平衡探索新分支和利用已知优秀分支;
-
扩展 :如果此时故事树尚未达到预设的最大分支数N,则由自动为其生成一个后续事件子节点,代表在该情节之后可能发生的一种剧情。通过这种方式逐步拓展故事树,把可能的剧情走向不断加入进来。
-
模拟 :不同于传统MCTS对新扩展节点立即评分,Narrative Studio会先让LLM临时生成后续若干步剧情,再对这一小段进行评分。这些临时生成的情节并不真正加入故事树,而是为了模拟“如果沿着这个新分支继续发展,会得到怎样的故事走向”,避免因局部信息不足而错判分支价值。
-
回溯 :得到评分后,算法将该评分沿着刚才选择的路径反向传播回去,更新这条路径上各节点的评价值。在下一轮的选择步骤中,那些包含高分事件的路径会更有机会被再次选中扩展。通过多次迭代这个过程,MCTS逐步在故事树上发掘出高分支线。
用户可以针对MCTS的运行设置若干参数来定制自动探索行为:
-
评分标准提示 :用于指导LLM对剧情分支进行评分的文字提示。例如可以提示“请从1到10评分此事件的有趣程度”,这样模型就会以“趣味性”高低来评价情节走向。用户可根据需求更换提示语,以评估分支的其他属性(紧张度、悲剧性等)。
-
最大子节点数 :限定每个事件节点最多可以扩展出的子事件数量。该参数控制故事树的分支宽度,防止某一节点无限扩展过多走向。
-
迭代次数 :设置MCTS算法循环执行上述四步的次数上限。迭代次数越多,搜索越深入充分,但计算开销也越大。
-
评分深度 :指在评分时,应当将多少个“之前的事件”纳入LLM评分提示中。较大的评分深度意味着模型在给新事件打分时会考虑更长的上下文(包括之前几步剧情),有助于发现因果不合理之处,提高评分的可靠性。
-
展开深度 :即上述模拟步骤中向后临时生成的剧情层数。展开深度越大,表示在评估一个新事件时,模型会多看几步后续可能发展然后再打分。这提供更长远的展望,但也增加每次评分的开销。
-
提前停止 :用户可设定提前终止搜索的条件。例如,当找到至少M条长度达到N的完整路径时,就提前结束MCTS迭代
基于知识图谱的实体约束与一致性保持
为了维持跨分支剧情的全局一致性,Narrative Studio利用知识图谱实现实体约束和背景设定管理。知识图谱中存储了关键实体(角色、地点、物品等)及其关系(例如“朋友”“敌人”“位于”“属于”等)。这个图谱相当于故事的世界状态数据库 ,在叙事生成过程中提供约束依据,确保各分支情节发展不违背已知的世界设定。通过将生成文本与实体图谱挂钩,系统可以大大增强多分支故事的逻辑连贯性。
构建实体图谱 :用户可以通过两种方式创建故事的初始知识图谱:
- 手动编辑 :在界面中直接添加实体节点(人物、地点等)并绘制它们之间的关系边。例如用户可以新建节点“国王”和“王后”,然后在两者间添加“结婚”的关系。手工方式直观灵活,适合用户已经有明确的世界观设定。
- LLM生成 :用户提供高层次的场景描述和实体/关系类型,系统会调用LLM自动生成一个符合描述的图谱元素。例如,用户输入“一个村庄里三户人家的关系图”,并给出实体类型(人物、村庄)和关系类型(婚姻、居住)列表,那么LLM会输出一个包含三户人家的村庄关系图的JSON结构。这种自动方式节省了手工整理的时间,并保证图谱内部的一致性。
图谱与事件生成的集成 :一旦构建好知识图谱,用户可以选择启用它来约束后续的事件生成。具体而言,每当LLM进行前向或后向扩展时,系统都会将相关的图谱节点和关系摘要插入提示中。模型据此了解当前故事世界中的重要事实,从而遵守这些已知关系。例如,图谱中标明了角色A和B是朋友关系,模型可能生成A支持B的情节,或故意设计一次背叛来制造戏剧冲突,但无论如何不会毫无交代地忽视两人之前的好友关系。以结构化的世界模型作为依托,系统鼓励模型产生更丰富的细节和更深入的剧情:角色之间有明确关系,故事发展就会更加上下文敏感,围绕这些关系展开,从而提高叙事的复杂度和趣味性。
实验效果
作者通过一系列实验来验证Narrative Studio中MCTS策略的有效性,以及上述各机制对提升故事质量的作用。
实验使用了20个故事开头片段(取自公开的儿童故事文本语料),比较了7种策略 生成完整故事的效果(3种不使用MCTS的简单扩展和4种不同配置的MCTS策略)。
所有策略都将故事扩展到固定的10个事件长度,以便公平对比。baseline方法采用递归深度扩展:如设定每步最多扩展n个分支,然后在生成的子情节中随机挑选一个继续,如此反复直至达到长度。相当于让故事按照固定宽度盲目地向前分支,再随意选一条路径走到底,缺乏智能判断。
作者使用LLM-as-judge对生成的故事进行质量评价,包含7个维度:整体质量、主要缺陷、角色行为合理性、常识合理性、内部一致性、段落关联性、因果和时间顺序合理性等,每项评分1~10分
结果表明:采用MCTS的策略在各项评估指标上全面优于线性扩展策略,即引入树搜索后产出的故事质量更高
也可看出,适当增加评分深度(让模型打分时看更长的上下文)有助于进一步提高评分:它能更好地发现不一致并改进因果和时间逻辑;在最大分支数一定的情况下,加大迭代次数也提升了某些指标,使故事更加连贯、一致,减少明显漏洞。