上周,生成小说工具 Sudowrite 推出了一个用于撰写整部小说的系统。它被称为“故事引擎”,是艺术家和人工智能开发者之间正在进行的文化战争中的另一个镜头——一方对他们的技术贬值感到愤怒,另一方则坚持认为这是释放创造力和打破作家障碍的工具。都没有回答我真正好奇的问题: 有效吗?

好吧,几天后我没有接受 Sudowrite 的完整小说。但在周末,我生成了一篇完全在故事引擎中编写的中篇小说 - 它被称为 电海 根据人工智能的建议,你可以在 Tumblr 上阅读整篇文章。

我不确定我对此有何感受。

我是一位热情的小说作家,尽管严格来说是业余的。去年我写了超过 15 万字的未出版小说,所以 Sudowrite 的“打破作家障碍”的宣传对我来说并不那么有吸引力。然而,写作并不是我认为本质上神圣的任务。这个领域有着悠久而自豪的传统,即匆忙写出以利润为导向的垃圾,从埃德·伍德(Ed Wood)的大量色情作品到臭名昭著的纸浆出版商獾书店(Badger Books),该书店以给作者提供封面并要求他们围绕它写一本书而闻名。我喜欢了解大型语言模型的优点和缺点,并且长期以来一直对 NaNoGenMo 等挑战着迷,该挑战要求作家在现代生成人工智能出现之前创作一部人工智能生成的小说。因此,周六早上,我购买了 90,000 字的 Sudowrite 文本,启动它,并在周日下午之前“写”了一篇大约 22,500 字的赛博朋克中篇小说。

电海 是在大量人工指导下制作的,但每一行最后一行都是通过点击“生成”按钮创建的。 Tumblr 章节既包括人工智能编写的文本,也包括摘要和故事节拍,这些内容大部分是由我重写的。但从技术上来说,虽然它抄袭了很多节拍,但它不包含我的笔写散文。我最多只是重新生成了一些章节几次,并在整个故事中剪掉了几段。

正如我的同事 Josh Dzieza 所记录的那样,Sudowrite 已经实现了某些类型小说写作过程的半自动化。故事引擎有点不同。 Sudowrite 的标准界面可让作者粘贴其作品的各个部分,并让 AI 生成更多文本、重新措辞以产生“更多内部冲突”或“更激烈”,并集体讨论名称或情节曲折。故事引擎将文本生成融入到流程的每个步骤中。

打开故事引擎界面,您将看到一系列文本框,而不是空白页,它们构成了其编写过程的基础。首先,您在“braindump”字段中输入人类生成的想法的核心。 (还有一些非自动化的框用于您想要编写的流派和散文风格,但我还没有弄清楚它们的重量有多大。)从那里开始,故事引擎将使用更多步骤将其扩展为爆米花一样成品。有一个“概要”框,其中的按钮可以将脑转储变成更长的情节概要。 “大纲”框将概要转换为章节列表。 “字符”框生成各个字符的描述。有些盒子有一个“重写”选项,可以让你输入方向(故事引擎的建议包括“让转折更戏剧化”或“添加更多物理描述”)并让人工智能修改文本。

A picture of Sudowrite’s interface, with a “braindump” and “synopsis” section
A picture of Sudowrite’s interface, with a “braindump” and “synopsis” section
这是我最终的人工撰写的“大脑转储”和人工智能生成的概要。人工智能忽略了这两点。

之后,机器终于得出了初稿。您可以通过编写或生成“故事节奏”来开始一个章节,这是该章节中发生的所有事情的分步指南。然后,您按下按钮将节拍逐块转换为散文,并将结果发送到 Sudowrite 的主文本编辑器。

这是我要求它使用的第一个故事节拍:

介绍杰克对他的电脑进行黑客攻击。重点生动地描述了杰克肮脏的公寓以及他的道德冲突和愤世嫉俗。杰克通过虚拟世界完成了一项企业间谍工作。他将信息发送给他的客户。 (司机:杰克的道德冲突在于,他开始黑客攻击是为了揭露企业控制的社会中的秘密,但最终将其卖给出价最高的人,以资助他继续作为黑客的生活。使用虚构的品牌名称和虚构的公司名称. 使用对未来黑客攻击的详细、文学描述。重点关注情感和性格特征。)

这是它为该节拍生成的前两段:

杰克弓着背坐在电脑前,手指像疯狂的蜘蛛一样在肮脏的按键上飞舞。屏幕的光芒在他憔悴的脸上投下病态的苍白,突出了他眼睛下方的阴影。他的公寓是一个肮脏腐烂的巢穴,一座被遗忘的梦想和失去的希望的陵墓。地板上散落着缠结的电线和废弃的技术,霉菌像黑色的静脉一样爬上墙壁。

“来吧,”他一边在 SynthoCorp 大型机的虚拟世界中导航,一边小声嘀咕道。曾几何时,杰克是一位理想主义者,通过黑客行为揭露企业控制的社会中的秘密。现在,他变成了他所鄙视的人——一名雇佣兵,将这些秘密卖给出价最高的人,以资助他对这个数字领域的沉迷。

我花了很长时间尝试 人工智能地下城 NovelAI 将于 2020 年和 2021 年左右推出,按照这个标准,Story Engine 非常出色。早期的人工智能文本生成器很难在句子之间保持角色的名字和代词,或者记住基本的位置细节——你可以让角色在相邻的段落中进入上升的电梯,然后让电梯下降。你可以使用“记忆”字段来维护诸如主角姓名之类的信息,但这很不方便且有限。典型的故事徘徊在视角之间,如梦似幻,或者以荒诞主义的台词为特色,比如人物“拿着刀像枪一样”。 AI 地下城 早期的模特有时会在随机的性爱场景中滑倒。

相比之下,我的 Sudowrite 故事基本上保持了有限的第三人称视角;我要求的性爱场面优雅地褪成了黑色。这部中篇小说讲述了一位名叫杰克的黑客被公司安全部门抓获,并被带到一个由人工智能运营的企业城市,为一名无情的高管做事的故事。 (是的,我给它灌输了这样的自负 系统冲击 为了纪念即将到来的翻拍。我让故事引擎生成了大部分角色和所有名字,这导致杰克的搭档被命名为“Roxanne 'Riot' Ramirez”,而人工智能在循环“ORION”和“Athena”后被命名为“The Curator”。)故事引擎比许多业余人类作家更深入地了解杰克的观点并保持得更好。在一个故事节拍中——通常是几个段落——它几乎总是产生一些叙事逻辑和连贯的东西。

故事引擎需要在节拍之间提供更多指导。就其本身而言,它倾向于重复情节点。它会让角色离开对话然后继续对话,或者用非常相似的语言执行两次相同的动作,或者醒来并重新出现在梦中。它还会与单独的节拍指令相矛盾。大型语言模型基本上是非常奇特的自动完成,这使得它们成为陈词滥调的机器,但我无法预测或控制哪些 它会变成老套的比喻。节拍会让对手出奇地沉默,散文会给他们独白。它会指示一个角色站起来,离开他们熟睡的爱人,相反,两人会进行一次真诚的交谈。

The story beats section in Sudowrite.
The story beats section in Sudowrite.
这个故事很精彩,几乎完全是我写的。
The “Prose” section of the Sudowrite story engine interface
The “Prose” section of the Sudowrite story engine interface
我会按下一个按钮并生成散文。

与任何计算机程序一样,Sudowrite 不会捕捉到人类看来显而易见的细微差别。我将中篇小说的章节分为两个地点:肮脏的地方 银翼杀手-杰克开始的那座别致的城市,还有一座闪闪发光的人工智能运行的城市,叫做极乐世界——再说一次,它的名字,不是我的——漂浮在海洋中央,他在那里度过了故事的大部分内容。故事引擎生成了一个角色,我对她的描述清楚地提到了这座闪亮的人工智能城市,然后立即将她安置在杰克坚韧不拔的黑客之家。 (值得赞扬的是,它主要记得她应该留在那里,尽管我偶尔不得不从节拍中挑选出她。)同样,当它写下我的最后一章的最后时,它产生了一个非常不令人满意的续集钩子或引向另一个情节点。我作弊并剪掉了最后一段。

不过,如果我制作的节拍足够精确,故事引擎就可以非常接近我的意图。听听第 3 章的节拍:

餐厅的扬声器里播放着一首歌曲。用时髦、独立的散文来描述这首歌的风格。罗克珊与杰克交谈,并对歌曲背后的音乐理论进行了高度技术性的解释。当她说完后,描述一下这首歌的歌词和音乐内容。歌曲结束时,杰克讽刺地问她用人工智能创作的歌曲中是否有任何真实的情感。

我一开始写了一个不太详细的节拍,故事引擎只是简单地总结了它。但显然添加“谈话”(除其他外)意味着罗克珊说出了一句完全按照我的要求做的台词:

杰克扬起一边眉毛,寻找着她话语中的一丝诚意。 “拉米雷斯女士,你是做什么的?你提到了音乐,但我猜它不是那种令人不安的音乐。”

“啊,你已经成功了,”她笑着承认。 “我与 Curator AI 合作为《极乐世界》创作了所有流行音乐。”仿佛在暗示一样,一首歌开始通过隐藏的扬声器播放——合成的节拍和令人难忘的旋律,人类情感的回声被提炼成算法的精确度。

“仔细听,”罗克珊说道,她的声音带有一种冷静的语气。 “这首歌的结构是八音阶,带有半音阶过渡音,营造出紧张感和期待感。这些诗句在小调和大调之间交替,唤起一种渴望和忧郁的感觉。”

杰克听着,当罗克珊剖析这首曲子时,他的耳朵捕捉到了曲子中微妙而复杂的部分。歌词描述了一种在数字时代迷失的爱情,纠缠在由 1 和 0 组成的网络中,但不知何故,这一切都感觉空洞——失去了曾经激发人类创造力的原始激情。

“对我来说,这似乎又是一场人为的打击。”杰克讽刺地评论道,一边旋转着剩下的饮料。 “你用这个人工智能创作的音乐中还有真实的情感吗?”

最终,我开发了一个让事情保持一致的系统。从生成的大纲开始,我会根据自己的喜好重写单个章节的概要。我会让故事引擎生成初始故事节拍,然后重写这些节拍并修剪那些跳得太远或朝错误方向移动的动作。我会生成一段完整的散文的两节拍,看看它是否做了任何意想不到的和有趣的事情,修改接下来的两节拍以连贯地继续叙述,并继续直到本章完成。然后我会查看已完成的章节,决定人工智能的工作应如何融入更大的故事,重写下一个章节 章节的概要以更好地适应,并对其运行相同的过程。

很难说清楚我写了多少内容 电海。这篇散文基于大约 6,500 字的情节节拍,大部分是我大量重写人工智能建议的结果。这个过程比我正常的写作速度要快得多,但也和按一下按钮吐出一本书相差甚远。这也很像我正常的写作过程:我通常从一个广泛的想法开始,写第一幕或第二幕的摘要,写几个章节,意识到它们的方向与我预期的不同,改变我的大纲,并继续前进。

“从来没想过我会这样死……不是死在该死的肉里。”

但它之所以如此之快,部分原因是我 忽略对原创性或复杂性的任何担忧。 电海 是宝贝的第一个赛博朋克故事。它的特点是一个愤世嫉俗的黑客反抗一个邪恶的无名公司——故事引擎似乎讨厌 除非我强迫,否则给事物命名——在充满烟雾和霓虹灯的城市中(剧透!)黑客最终将他的意识与人工智能融合在一起。如果我将节奏推向特定的主题和事件,故事引擎往往会变得简洁或直接从我的摘要中提取。我从来没有告诉它模仿特定的书籍或作家,但当我向它提出一个我可以从几本著名书籍中想象出来的广泛想法时,它的效果最强,并输入诸如“使用生动的感官文学散文,重点关注小细节”或“关注杰克的情绪状态。”我试图在第 11 章中写得有点花哨,从杰克和人工智能的合并视角来写作,这是故事引擎本身创造的情节点。它是 困惑。

散文很陈词滥调。它碰上了几句科幻模仿的精彩台词——在第一章中,杰克感叹道,他“从来没有想过我会这样死……而不是死在该死的肉里。” (我在谷歌图书中搜索了这本书,想知道它是否抄袭另一本小说,结果一无所获。)但其他尝试只是无意中搞笑。第五章以“霓虹灯雨像酸一样落在杰克的心灵上”开始,然后描述“像一窝网络老鼠一样涌入他脑海的想法”。

与我们一年前写这篇文章时相比,Sudowrite 显然变得不再那么奇怪了。我从来没有听到过奇怪的连续隐喻,比如“在一架满是吐出眼睛的忍者的飞机上,一头大象坐在他们身上,而被鲨鱼吃掉。”相反,我记不清有多少次让某人脊背发冷,或者将某个结构描述为“迷宫”,或者让一个角色抱怨自己是别人游戏中的棋子。 “避免陈词滥调!”我会在不同的盒子里写字,感觉就像用尺子拍打故事引擎的手一样。它从来没有起作用。

我希望故事引擎至少会产生持续糟糕的结果 赛博朋克 散文——那种独特的科幻硬汉风格,充满了时髦的参考和俚语。但除非我让它无情地执行任务,否则人工智能就会变得令人难以忍受的伤感。我开始用“使用赛博朋克新黑色散文”或“记住这些角色应该是愤世嫉俗和幻灭的”来填充故事节奏,以达到不同的效果。然而,这样的事情会悄悄发生:

“我们就这么做吧,”罗克珊喘着气说,她的声音充满了使命的沉重。 “为了极乐世界。”

“为了极乐世界。”杰克重复道,当他迈向未知世界时,他的心因决心而狂跳。

你没有使命,杰克!你讨厌极乐世界!你24小时前就到了!

无论如何,我通过其他提示得到了更有趣的初步结果。我尝试了一个独立的故事,类型为“西部片”,脑残“一个人必须学会如何煮咖啡”,说明“以科马克·麦卡锡的风格写作,有长篇大论的句子和阴郁的语气,”它产生了以下开场白:

詹姆斯·汤普森,一个三十五岁的男人,两个年幼的孩子的父亲,在当地银行的账本和账目中辛苦劳作,每天都在灰色的时刻里移动,就像一个困扰着他自己生活的幽灵,被一个沉重的负担压垮了。未实现的存在,其根源不是爱情或野心的任何重大失败,而是源于他每天无法从咖啡豆的黑色粉末中变出一杯简单的黑色长生不老药来满足他自己和那些人干渴的灵魂的失败。他身边。一个过早憔悴的人,背负着世俗的悲伤,就像靴子上的灰尘一样紧贴着他。

我的赛博朋克提示是否过于具体?太行人了?我应该点名威廉·吉布森吗? Sudowrite 是否固有地将我提供的科幻情节与糟糕的写作联系起来? (我很早就尝试过一个非常简单的提示版本,远没有科马克·麦咖啡段落那么有趣,结果甚至更无聊。) 或者,当我试图以任何方式推动故事时,西方散文是否会退化?一致的方向,就像我的中篇小说中那样?

我所看到的大多数关于故事引擎的报道都将其视为对崇高写作技艺的侮辱,并坚称没有 真实的 作者会使用填充文本或库存图等内容。我不确定这是否正确,我也不确定这对许多读者来说有多重要。很多人不一定是在寻找与作者最深层的自我的联系——他们只是想要一个引人入胜的书来分散他们在海滩上的注意力。同样,假设 Sudowrite 可以复制来自某个特定作者的精确文本块,因为它接受了大量书面工作的训练。但如果没有经过深思熟虑的指导,它似乎会依赖于过于常见的表达方式,无法以这种方式确定。

作为一个不打算靠小说谋生的人,对我来说,缺点似乎更个人化。写作是我喜欢的一种消遣,它带我去很多迷人的地方,即使最终的结果不会被出售,甚至不会被其他人阅读。我把所有的爱好和假期都用于研究目的。我喜欢设计一个好的措辞或探索角色的动机。我喜欢感觉自己做了一些有点出乎意料的事情,或者相反,就像我写了一篇恰到好处的风格模仿作品。我不关心人工智能“取代”我,就像我不担心工业针织机取代我的手工披肩一样——过程才是重点。

使用故事引擎是不同的。除了我对其散文风格的挣扎之外,它还忽略了我大脑中几乎所有感觉像的部分 我。 我的第一个版本的宣传语设定在另一个历史的 20 世纪 80 年代,那里应该充满了复古科技,这是我长期以来的热情。与我对 Sudowrite 本身所做的事情相呼应,人工智能应该只是创建媒体而不是管理整个城市。我很快就放弃了这一切,以求情节和背景的最低共同点。我能创作的最独特的布景是一座圆顶漂浮城市,它确实引来了杰克的俏皮话:

“看哪,极乐世界!”格兰特宣布道,声音中带着明显的骄傲。 “人类聪明才智的真正奇迹。超过一百平方英里精心设计的生活空间,全部由我们仁慈的企业人工智能 Curator 管理。”

“听起来像是一个反乌托邦的梦遗,”杰克反驳道,无法抑制自己的愤世嫉俗。

这让我想到了每个作家似乎都会问的关于人工智能的大问题:它比我更好吗?我并没有试图让 Sudowrite 模仿我自己的写作。但如果你把我作品的一章连同一章一起交给某人 电海...我怀疑有些人会更喜欢后者。我倾向于遇到与故事引擎完全相反的问题。我堆积了人物之间的想法和对话。我故意尝试平淡或几乎难以阅读的散文,尴尬的超当代背景,或其他人不感兴趣的魅力。我写的人物夸大了我最喜欢或最讨厌的自己的特征。我经常痛苦地、本能地愤世嫉俗和残忍。故事引擎至少看起来, 不同地 比我还差。我可以忍受这一点。

尽管有种种缺点,故事引擎却出奇地令人满意。如果说早期的人工智能写作感觉像是引导一个博览群书的幼儿讲故事,那么故事引擎感觉有点像构建一个视频游戏原型。你从一个想法开始,并尝试让计算机来执行它。结果可能并不完全符合您的预期,但通过反复试验,您可以了解系统的优点并找到乐趣。

故事引擎无法思考,但我喜欢让它假装像作家一样思考。在某个时候,这件事决定杰克有一个被杀的妹妹,参考我对悲惨的过去提出的要求。我将其添加到官方角色描述中,并开始定期在故事节拍中回想起她的死亡,比如让人工智能模仿她,让角色的谋杀提醒杰克她的死亡。最后,当杰克在第十章中与人工智能融合时,它毫无提示地决定她的记忆将是他保留的人性的最后一部分。是感性的吗?当然。但在那一刻,我为我的机器人学徒感到非常自豪。