在最开始的版本里,我多试用几次后发现这个应用有一些问题:
- 写出来的故事平平无奇,内容简单,缺乏起伏
- 人物太单一了
- 故事线粗浅,更像是一个童话故事而非小说
- 剧情缺乏连贯性,章节之间没有过渡、因果等剧情推进关系
让小说的内容更丰富
主要的原因还是大模型会倾向于偷懒的做法,当我们没有指定只是指定少量要求时,模型会返回比较顺畅的信息量很少的结果,导致小说整体的内容深度变得很低。解决办法也非常直接,我们只需要给模型更多的输入即可,除了上下文的拼接,我们再给他一些额外的要求,例如对于世界观的设定,我们进行补充:
def gen_background_stream(bg_prompt):
fully_prompt=f'''构建一个世界观,
主要设定:{bg_prompt}
要求:
- 需要包含3个关键背景 1)这个世界呈现当前状态的原因,2)势力之间产生冲突的原因 ,3)关于这个世界更深层的多个未解谜团
- 设计3~5个主要的大势力,说明他们的特点、利益倾向、和其他势力的1个著名历史冲突事件
'''
for chunk in stream_chat(fully_prompt):
yield chunk
然后我们就可以得到:
'''
主要大势力
# 1. 烛龙联盟
特点:由多个掌握高级阵纹技艺的家族组合而成,象征着保守与卓越。在内部,他们以智慧和传统为最高原则,并以“阵纹精研”为核心。
利益倾向:修仙世家的遗留。垄断高级阵纹的编制秘法,控制对阵纹雕刻所需的特殊矿石资源,族内有先天阵纹的血脉。
历史冲突事件:曾与天机阁爆发“封印之争”,因天机阁试图解密一种新型阵纹而威胁到烛龙联盟的秘法垄断。
# 2. 赤炎教
特点:信奉火之神明,拥有大量可激发强大火焰术法的独特阵纹。教徒狂信且顽强,在大陆有多处祭坛
利益倾向:扩展影响力,传播火之神明的荣光,获得更多信徒和资源。
历史冲突事件:与北辰派进行“炎海激战”,两者交易了一处能增幅火系灵气的古老遗迹。赤炎教交出了近百处据点
# 3. 天机阁
特点:以解密和探索未知为己任,技术先进且灵活多变,常以奇袭策略克敌制胜。
利益倾向:搜集和研究古老阵纹、科技,研究阵纹的迭代和变化,希望通过阵纹的进化重现末世前的辉煌
历史冲突事件:与烛龙联盟合作与决裂,“封印之争”使双方的同盟寿终正寝,影响巨大。
# 4. 北辰派
特点:坚守北境,以保护凡人不受妖灵侵袭为己任,强调正义与纪律,修行者以刻在肌肤上的守护阵纹而闻名。
利益倾向:维护社会秩序,保护凡人和平生活,防止妖灵之乱。没有人知道他们为什么存在
历史冲突事件:与赤炎教在“炎海激战”中,移除了赤炎教交出的近百处据点
# 5. 灰影盟
特点:行踪不定,活动隐秘,通常在黑市交易,专注于特殊阵纹和灵物的交易与开发。
利益倾向:通过任何手段获取财富和权力,拓展黑暗市场。
历史冲突事件:在一次“黑市泄密”事件中,灰影盟卷入了一场来自多个大势力的联合围剿,险些覆灭,却最终凭借机智谋略反败为胜。
'''
可以看出,增加了对于势力的要求之后,整个世界观更加丰满了,这时候我们再生成情节看看
'''在这个名为“刻纹归元”的世界中,周怀,一个现代社会的杰出数据分析师,意外地穿越到了这片被大溃灭笼罩的末世。他没有任何修炼的力量,无法凝聚金丹或元婴。在这个陌生且充满危险的世界里,他似乎注定沦为他人争斗的牺牲品。然而,命运给予了他一个异乎寻常的天赋——他能够获取算力,通过数据分析来分解、破译复杂的阵纹,并预测他人的能力。
故事从一次意外事件的爆发开始。周怀利用他的独特才能破译了一处神秘的阵纹,这阵纹竟记录着关于灵气消失的部分线索。在他揭开这道谜团的瞬间,他的存在引起了各大势力的注意,尤其是以收集和研究古老阵纹著称的天机阁。天机阁被震惊于周怀对阵纹的奇异破解能力,打算不惜一切代价招揽或……除掉他。
然而,命运从不简单。周怀被卷入了赤炎教与北辰派的一场巨大冲突中。赤炎教试图借用一种新发现的阵纹重获大势,而北辰派则受命阻止这种不安定因素的蔓延。周怀凭借其对数据的分析,协助北辰派巧妙地在混战中反制了赤炎教,迫使其退避三舍。
与此同时,他开始查探“命纹石”的秘密。通过与烛龙联盟的微妙交锋,以及与灰影盟进行一次出乎意料的交易,他逐渐揭开了一个关于上古神明大战的惊天阴谋:命纹石的碎裂,与那些神明之间的利益搏斗密不可分。那些璀璨的灵纹记录着神明遗落的秘密。
为了揭开这场大溃灭的真正原因,并找出恢复这个世界平衡的方案,周怀坚定地走上了解谜的旅程。在他的身后,各大势力蠢蠢欲动,贪婪地窥视着他所持有的秘密。前路荆棘密布,但他内心的信念却从未动摇——正是数据解析的力量,将揭示隐藏于末世最深处的答案,点燃起这个世界重回繁荣的希望曙光。'''
效果很不错,补充了 主角进入世界后的过程,同时也把北辰派和赤炎教的对抗设定进行了说明,还额外添加了主角跟世界几个主要秘密的交互,说明大模型及时在我们拼接了大量上下文的情况下,也可以有效理解我们的要求,并对我们关注的信息进行补充和优化
同理,在前面我们是让模型在生成情节的是时候顺便生成人物,现在我们可以对角色的生成也做出一些要求,让模型自己给我们提供人设
'''
**挚友**
1. **角色名:陆野**
- **性别**:男
- **所属势力**:永耀联盟
- **与主角认识的方式**:两人在永耀联盟的一次学术交流中因共同的兴趣结识,成为了无话不谈的挚友。
- **性格特点**:机智、乐观,善于用幽默化解危机。
- **反转**:真实身份竟然是祈星会派来的双面间谍,他的使命是收集有关原初石的秘密。
2. **角色名:苏雅**
- **性别**:女
- **所属势力**:秘法隐者
- **与主角认识的方式**:在一场关于法阵的线下聚会中相遇,因欣赏彼此对法阵的独特见解而发展成朋友。
- **性格特点**:聪慧、冷静,擅长以理性引导决策。
**红颜知己**
1. **角色名:柳婉婷**
- **性别**:女
- **所属势力**:祈星会
- **与主角认识的方式**:在一次援助行动中,两人被迫联手对抗荒原游牧部落的袭击,彼此建立了深厚的信任。
- **性格特点**:温柔,有柔中带刚的韧性。
- **反转**:她实际上是“天陨”后遗现象的研究者,掌握着关于天陨真相的一部分线索。
2. **角色名:陈月影**
- **性别**:女
- **所属势力**:统御教会
- **与主角认识的方式**:在一场关于算法和法阵的跨界合作中结识,彼此灵感激荡、惺惺相惜。
- **性格特点**:直率,富有激情,讲求效率。
**师父**
- **角色名:张太和**
- **性别**:男
- **所属势力**:秘法隐者
- **与主角认识的方式**:幼时,被主人公的潜力所吸引,将其收入门下教导法阵之术。
- **性格特点**:深沉智慧,眼中尽是对未来的期许。
- **反转**:曾是统御教会的高阶祭司,却因不愿参与权力争夺而隐退至秘法隐者中。
**对主角影响很大的过客**
- **角色名:辛泽**
- **性别**:男
- **所属势力**:荒原游牧部落
- **与主角认识的方式**:在一次短暂的旅行中相遇,他以人生的淡然和对自然的尊崇影响了主角对法阵力量的理解。
- **性格特点**:自由奔放,哲学性思考。
**和自己势均力敌的敌人**
1. **角色名:方影**
- **性别**:男
- **所属势力**:统御教会
- **与主角认识的方式**:常在资源争夺战中对立,是主角通往法阵巅峰路上的劲敌。
- **性格特点**:果断,目标明确。
- **反转**:虽然身处敌对立场,但实际上心生对教会的怀疑,暗中进行瓦解的计划。
2. **角色名:白玲珑**
- **性别**:女
- **所属势力**:祈星会
- **与主角认识的方式**:在一场法阵竞赛中相遇,彼此对法阵技术理解深刻且针锋相对。
- **性格特点**:聪慧无比,富有竞争精神。
**最终反派**
- **角色名:莫言**
- **性别**:男
- **所属势力**:自创的秘密派系,与传统势力皆不相同
- **与主角认识的方式**:无意间看到主角数据分析的天赋,曾试图将其拉入怀中。虽然被拒绝,但一直对主角保持关注。
- **性格特点**:阴险狡诈,擅长布局与策反。
- **反转**:他实际上是天陨的幕后黑手之一,意图通过混乱重塑整个世界格局,以实现自己的野心。
'''
这样我们的小说除了有主角,也有了完整的主角的社会关系,并且也补充了一些围绕人物的设定信息。这时候我们再让模型给我们写一个故事梗概,看看故事的深度是否有提升
'''
在寂静的夜空下,末日居然如影随形般的降临,随之摧毁的,是修仙者曾引以为傲的辉煌。那刻骨铭心的大溃灭已成为过往,但世界却从未停止对它的探寻。在这充满矛盾与动荡的“刻纹归元”世界中,每一个生命?不过都是这错乱谜局中的一枚棋子。
这天,离家不远的地平线上,周怀意外得来,踏足这片裂土。他仅具现代人智慧,却无修仙之能,犹如面对汹涌灵潮的孤舟。然而,命运赐予他一项异于常人的能力:通过数据分析来解构这个世界的阵纹奥秘。
故事伊始,周怀在一次永耀联盟的学术交流中遇见了陆野,两人迅速因共同的兴趣成为挚友。陆野总是带着阳光般的笑容,用幽默化解危机,然而他却隐藏了真实身份——祈星会的双面间谍。在周怀心无旁骛地揭开灵气稀薄之谜时,陆野的每一个举动,都可能成为改变游戏格局的关键。
周怀同样被不期而遇的红颜知己柳婉婷深深触动。曾在一次对抗荒原游牧部落的行动中,二人用智慧和勇气彼此扶持,结下了深厚的信任。然而她的柔情背后,藏着关于“天陨”那不为人知的真相线索,使得她成为一枚动因非凡的秘密棋子。
与此同时,烛龙联盟和赤炎教两大势力彼此对峙,不断在大陆上掀起无法平息的斗争。如火如荼的“炎海激战”中,有着北辰派不惜一切代价的正义,剥解出全球势力争斗背后的奥秘。而在这场大漩涡中,天机阁的步步为营,将成为推动剧情的无声力量。
故事的高潮处,一名名为方影的统御教会修士横空出世,他成为周怀通往法阵巅峰的劲敌。然而,令人始料未及的是,方影暗怀对教会的不满,并计划在暗中瓦解其力量。阵营真实性、信仰目标开始在周怀心中构建起全新的道义尺度。
周怀渐行渐近那个被迷雾笼罩的真相。他与陈月影相互激荡灵感,透过交织的法阵与算法的秘密,不断逼近沉睡许久的命纹石真相——极尽辉煌的文明,毁出自两极相碰之间的无解碰撞。莫言,一名纵横于暗夜中的策划者,乃是天陨的幕后黑手之一,他阴险布局,欲重新绘制世界版图,支配人心。
然而,正是这个时刻,辛泽那充满哲学性的观点,让凡心执念的周怀顿悟。时代虽崩,而理想不灭,通过数据的力量,在天地法则异变之际,周怀找到了重启阵纹体系的序列密码。最终之战在命运的一次交织中爆发,周怀以寸步不让的坚定心志影响了势力对峙的平衡,令这世界在无尽变革中迎来新生。
在“刻纹归元”这片大地上,各方势力心系未解谜团的共存与斗争,不断召唤着改变命运的主角。周怀,如同将破晓之光,正是那执剑于迷雾之中,试图为世界揭开命运的维度。
'''
因为有了社会关系,整个故事变得更加丰满,主角除了和反派斗斗斗之外,也有了更多的故事细节,但距离一个优秀的小说还不够
让情节更加跌宕起伏
前面我们说到,现在生成出来的小说故事线太粗浅了,缺乏一些引人入胜,跌宕起伏的剧情变化,这部分其实最为考究小说作者的巧思和天赋,是一个小说令人印象深刻的记忆点之一,例如西游记的三打白骨精,斗破苍穹的学院救世主, 遮天的赌石大战等
诚然,我们很难让模型自己想出这么高超的情节,但是,我们可以让模型进行一些粗糙的模仿
def gen_key_plot_beta(bg_design,char_prompt,key_characters):
fully_prompt=f'''请根据这些信息,按照起承转合的逻辑设计小说的四段故事梗概
世界观:{bg_design}
主人公介绍:{char_prompt}
主要角色:{key_characters}
必须包含的情节和桥段:
- 起:{str(random.sample(plot_box['intro'], 4))}
- 承:{str(random.sample(plot_box['develop'], 4))}
- 转:{str(random.sample(plot_box['climax'], 4))}
- 合:{str(random.sample(plot_box['end'], 4))}
要求:
- 对于情节和桥段进行润色,保证剧情合理顺畅,可以增加必要的设定和情节以确保故事的合理性
- 剧情跌宕起伏,
- 每一段的篇幅在 2000 字左右
'''
return chat(fully_prompt)
我先让 ai 总结了一些小说情节设计的常用风格和桥段,然后整合成一个情节工具包,在编写 prompt 的时候随机抽取一批情节,然后注入到剧情之中,通过大模型的逻辑能力让他自己结合人物和背景进行整合,讲出一个较为完整的故事,让我们来看看效果:
'''
### 起:命运之织
在符文之地不再辉煌的今天,余怀周在废墟中独行。他原以为离开喧嚣的城市能追求宁静的生活,却不料卷入一场改变整个世界命运的征程。他在探寻古老符文的过程中发现一卷辛密的预言:传说中的“永恒符碑”藏匿解除灾变的秘密,能够逆转一切。彼时,一个有些疯癫却又透出真知的流浪者北冥客向他喃喃道出天机:“未来将由洞察符文之谜者重塑。”
旅途伊始,余怀周结识旧识沈琼英,她如今为神秘的暗影行者效力。她告知他暗影行者得知了一条古符文本线索,若能找到将掌控再造未来的机会。与此同时,光华帝国的学者秋水和他再次相见,两人合作探讨古法阵,秋水的眼中透出不仅是学术的光芒。
随着使命召唤,余怀周与挚友柳清川结伴,加入游离行商团,开始探寻传说的符碑。途中,柳清川告诉他,一场前所未有的势力博弈即将上演,各方势力摩拳擦掌。此时余怀周心中涌起不安,为何一位昔日天才学者西摩尔会毫无预兆地失踪?
### 承:曙光的失去
在探索符碑的征途上,余怀周遇到了来自焚炎兄弟会的敌人涂山阴。两人在一次资源争夺中交锋,余怀周惨遭败北,然而从此战中他明悟力量直面世界的意义。在此期间,余怀周通过玄道大师的授业,深入理解了法阵的奥秘,并渐渐勘破符文平衡之术。
沈琼英透露,暗影行者内部隐现一桩阴谋:可能藏匿着将符文之地推向末日的黑手。在进一步的探查中,柳清川送来了重要情报:暮光议会正准备发动对“天空符阵”的全面攻击。余怀周细思极虑,决定潜入议会腹地,探究其末日计谋的真相。
此时,秋水渐渐显露出一些反常,她的举动使得余怀周心生狐疑。在一场未知的决定中,余怀周竟从秋水手中获取关键的古符文本,令局势大开。但随着一封来自不知名渠道的信息,他惊觉西摩尔正是幕后推手,这名昔日好友的追求却是震撼苍生的“完美法阵”。
### 转:背叛的烙印
一切终于到达迫在眉睫的转折,反层尽显。秋水追随使命被迫背叛,表露出身为光华帝国间谍的真实身份。一场激烈的内心冲击令二人关系如履薄冰。同时,沈琼英面临着暗影行者的内部分裂,她必须在忠诚与理智间作出艰难抉择。
族势演变至沸点,涂山阴的真正身份使得焚炎兄弟会违和的内部正在瓦解,而暮光议会则分崩离析。与此同时,余怀周与漆夜在一场关键决战中再度相遇,彼此的价值观在战斗中得到升华,漆夜披露了自己隐藏已久的兄长失踪真相,余怀周心生悲恸。
在一场对抗西摩尔的最后赌局中,挚友之间的友谊遭遇考验;然余怀周依旧追随内心信念,计划与队友联手解开“永恒符碑”蕴藏的终极奥秘。
### 合:破灭与新生
最终的战役结束,曾被操控的世界恢复了短暂的平静。敌人西摩尔的倒下付出了沈琼英不可逆的代价,她为了封印“完美法阵”的绝对狂热而献身,余怀周未能挽救朋友凋零。
在战斗后,幸存者间中行走着一丝淡淡的希望。柳清川继续以商团的身份维持已失控的世界秩序,而秋水作为对抗极端理念的先行者,毅然决定停留,继续承担着家国使命。
然而余怀周选择离开,亲历裂变的片段让他疲惫不已。他肩负起重整符文之地的责任,寻求更合理的力量架构。当他踏上新的旅程,前方依旧翻滚着未泯唱完的变革之歌。未解的谜题仍在召唤,他不再是孤独的分析师,而成为一个敢于改变命运的先驱者。
故事里遗留的悬念化为明天的和弦,奏响符文之地的韵律,未来波动在一片苍穹下。
'''
非常完美,因为遵循了基础的起承转合的小说框架,整个故事在结构上是比较完整的,而且每一卷中都埋下了一些情节的波动,让整体故事更加丰满。接下来我们就可以让大模型整理章节列表,并根据这些章节来写出小说正文了
附上我用Gradio为这个写小说的ai搭建的demo
采用通义千问的版本(基于阿里魔搭)
采用gpt-4o的版本(基于Huggingface, 推荐)
Todo List
还有一些不完美的地方:
- 剧情不连贯的问题仍然存在。试过把生成的剧情丢回给 ai,它自己也知道这个剧情存在节奏和连贯性问题,但润色后也没有很明显的改善
- 长文本生成的失忆问题。生成小说正文时,因为上下文是压缩过的,所以还是有时会出现失忆的情况
- 需要用户干预的地方太多。上文说到的很多优化,其实都是基于个人的主观输入,这说明大模型本身并不能写出一个好的小说,还是无法脱离人类的监督优化