上个月我参加了一场 AI 创作微信小说的比赛。截止日当天 23:59 卡点提交,五分钟后发现最后删减合并段落时 claude 发昏把关键情节给合并没了。就这样还能拿奖,看来 prompt 帮我赚分不少。写篇文章分享下喽。

先放出我今天用 GPT-4 + Code Interpreter 重新生成的作品。
向上滑动阅览
我是 E&M

by GPT-4 & Elfe

我是一只无名猫。流浪时没有名字,遇到艾拉,她在书店给我安了一个窝,我也还是没有名字。艾拉说:名字意味着占有和束缚。

在这个井井有条的小书店里,空气中充斥着新书的墨香。我在书架的高处,能看见艾拉坐在柜台后,完全沉浸在伍尔芙的文字中。

便签墙是这家书店的标志。彩色的便签如同飘舞的蝴蝶。人们在便签上分享心得,或寻找生活中的某个人。这是他们的内心舞台,每个人都在寻找属于自己的那一刻。

便签墙上,我偶尔会看到艾拉的字迹。某天,她写下:“人生如梦,孤独使之更真。”

隔日,便签墙上又多了一张,笔迹沉稳:在这片书的海洋中,每一次翻页都如梦中的冒险。而你,就是那个使梦更为真实的存在。”我认出——那是马克的字迹。


马克今天又来了。我从柜台角落观察他。他手里的书似乎只是掩饰,目光时常投向艾拉。看来,他真的很喜欢艾拉。

我走到艾拉脚边,尝试用小动作让她能注意到马克,但艾拉完全沉浸在整理书籍的工作中。每次艾拉整理书架,她都会把描述幸福家庭的书放在无人问津的最顶端,她自己从未真正翻看过。我了解背后的原因:她在一个充满争吵的单亲家庭中长大,这使得她更喜欢独自一人,不希望依赖他人。那些描写和谐家庭的书籍,恐怕触及了她的某处伤痛。

书店的气氛稍显沉重,我跳出窗户,在阳光下的草坪上欢快地打滚。


我回到书店,恰好见到马克深情地看艾拉,她却决绝地摇头。我心中不禁为他们俩感到难过:“明明看得出,马克真的很喜欢艾拉。艾拉能不能别坚持一个人呀。”

为打破沉默,我窜到他们中间,做几个动作轻松气氛。艾拉轻轻地拍了拍我的头,说:“外面多好,出去玩吧,你是自由的。”我明白她的话,她珍惜现在的独立生活,也许并不想改变。

接下来的日子里,每次店门响,艾拉期盼地抬头,但很快失望地低下,似乎害怕再次面对心中期待。

便签墙上的新留言逐渐减少,马克的字迹也变得稀缺。我常常看到艾拉沉默地站在那些旧便签前,仿佛在寻找曾经的记忆。我蜷缩角落,心里为她和马克感到遗憾,
真希望艾拉没有说不。


一周后的清晨,我坐在窗边,盯着繁忙的大街,决定去找马克。街道上车辆飞驰而过。我急于寻找马克,不小心被一辆自行车撞了。

我忍着疼痛坚持走到马克每天的公交站,静待他的到来。大约一个小时后,他如期而至。

我发出哀鸣,他立刻注意到我并急忙抱起:“嘿,艾拉的宝贝,你怎么受伤了?”他带我去了宠物医院。“艾拉的宝贝”,我心里默念,“连艾拉都没这么称呼过我呢……”

接下来三天,马克像守护天使,给我喜欢的食物,陪我,安慰我。我深感他的温柔,心中想:“马克真的很好,他对我这么好,对艾拉应该也一样。我希望他们能在一起。”

出院那天,我看到马克与护士交谈,护士随后拨打电话。不久,艾拉匆匆进入医院。看到我,她的眼中闪过失而复得的欣喜,让我深感自己归属于她。她向马克道谢后犹豫了下,欲言又止。

在心中,我深深地祈愿:‘艾拉,给你们之间的感情一个机会吧。’

终于回家了。一踏进书店,我感受到家的温暖。躺在小床上,我被留言墙上的新便签吸引。那是艾拉熟悉的字迹:“只要她不去想任何人,她就完全自由。”紧接着是另一种颜色的文字,看起来是后来补充的:“但是,我无法不去想。”

从柜台后面传来了低声的细语。虽然听不清他们说什么,但那种紧张而又兴奋的气氛,我感受得十分清晰。直觉告诉我,他们之间的关系正经历着微妙的变化。

“我想给它取个名字了。”我听到艾拉的声音。

第二天,马克带着一块闪闪发光的铭牌走进店里。我看到铭牌上有E&M的字样。“成了!”我内心欢呼雀跃。

马克递给我一个小鱼干,滋味好极了。我飞快吃完,跳出窗户,向公园方向奔去,留下艾拉和马克在书店里继续他们的时光。
一点点心得
1. 小说创作是人机协作的过程。不可能指望 AI 直接魔法般生成精彩的作品,也不应该高看人类自己、只让 AI 打杂。
    1. 要有多轮对话、和 AI 进行探讨的意识。对话的过程中,关于小说的点子会渐渐明晰。
    2. AI 有广博的知识面、丰富的脑洞,对细节能不知疲倦地保持关注。这些特性保证了 AI 能为小说创作提供丰富的优质素材
    3. AI 的鉴赏能力是真不行,选择判断还是得靠人。我曾用 API 写让 AI 评价打分的功能,无论怎么调整 prompts,结果就是惨不忍睹,因此我最终还是没能实现自动化协作 agent。如果你知道可靠的方法提高 AI 的审美,请留言告诉我。
2. Know How 的重要性怎么强调都不为过。
    1. 作为一名小说创作的门外汉,开工前我草草翻了《安兰德的小说写作课》,从中学到两条:1)小说的主题很重要。判断一部小说的美学价值,只需要了解作者的主题是什么、主题展开得如何。2)要能够具体地表达抽象概念,不是用漂浮不定的空泛的词,而是具体的例子、描述、行动。再加上故事吸引人需要起承转合这个常识,靠着这一点点皮毛知识,我将任务拆解成确定主题、构思情节、丰富细化、串联成文再修改这么几个步骤,写出来的小说比直接一条命令让 AI 写的要丰满充实许多。
    2. 让 AI 修改它自己写的内容时,起初效果非常不好,即便用上 CoT 或 ICL 也还是傻乎乎。换成 Arthur 的框架、添加了详细的 skill set 后就靠谱很多,用不同的 skill set 也能得到不同侧重点的结果。
3. 表格是一种正确使用能获得奇效的手段。它打破了 AI 的叙事习惯,让生成的文字不那么“AI 腔”,而且非常有利于精准控制。
4. Code Interpreter 可以用来增强记忆、以及通过代码让 AI 完成一些需要稳定输出的事情。(我要早一点想到用 code interpreter,就不至于为了缩减到 2000 字以内一次性输出的比赛要求而转用 claude,也就不会忙中出错提交错误文章了。心疼呀……)
整个小说创作的过程还是挺繁琐的,累计开了有近十个 threads 相互复制粘贴内容、一遍遍重试。原本想比赛后有了自己的切身经验再加上从其他参赛小伙伴们那里的偷师,攒够了经验就能写成 agent 来自动出小说。但现在看来,agent 框架需要能非常灵活地让人工干预才行。我继续琢磨琢磨。
好了,经验心得写完。忙碌的小伙伴们拉到文末点赞点在看,关注公众号,然后就可以退出了。下面是详细过程,和兴趣过于浓厚的小伙伴们探讨。
一、确定主题
比赛伊始,在几百人的群里每天都能看到很多 AI 味道颇浓的科幻,因此我确定了作品的首要目标:不能像 AI 写的。也容易——不写科幻,用非常规视角。我灵光一现想起了《我是猫》,有了,就用猫为第一人称写篇爱情小说吧。
具体写什么主题就要和 AI 讨论了。和 AI 交互的过程像是在煲汤。AI 百宝箱般不断抛出新的调味料,我这个厨师只需要挑挑拣拣把中意的调料加到汤里面
孤独与寂寞!这味道不错。追问——
《蒂凡尼的早餐》!味道越发高级。那是很多年前看过的小说了,具体写什么来着,问问 AI。
有了 AI 这一番介绍后,主题基本就明确了。那用什么人物和故事来突出主题呢?也只要问 AI。

二、构思情节
AI 给的这么多选项中,我最喜欢书店店员艾拉。先让这个人物更丰满一些。(构思情节之前先刻画人物,这也是我从小说写作指导书中学来的 know how。)

再设计故事线。

最终完成的大纲是这样的:

整个交流过程中有很多细节,若不是 AI 我绝不会想到。例如艾拉因为单亲家庭的成长背景而选择独立、书店有便签墙、猫的失踪等等。现在大纲细节上和最终的成品有挺大差异,不过正常呀,我们人类写小说也是这样吧。

三、丰富细化
接下来,要让 AI 一段一段进行细节描写了。
为了确保文章前后一致,我先让 AI 帮助先写故事概要和角色背景介绍,并在其基础上按自己的审美略做修改。
下面我用了一个重要技巧:
让 AI 以表格的形式输出细节描述。
这样做的有三个好处:

一是
打破 AI 原本的叙事习惯
。如果直接让 AI 输出整段文字,它作为一个根据概率算下一个字的模型,特别容易出陈词滥调,改成表格后就好了很多。

二是按编号
做局部调整很容易
,指哪改哪,别的内容都能够稳定保持不变。

三是确保内容都是具体的细节。之前整段输出时文字太长,让缩减则减到丢光细节只有笼统介绍。
四、串联成文
把上一步生成的五个表格依次复制粘贴,AI 就照着写文章了。偶尔会需要我帮个忙给点建议。

五、失败的局部修改
小说大赛有个要求:最后的作品必须是 AI 直接吐出来的,不能有任何改动,不能超过 2000 字。我的小说 2300+ 字,只好让 GPT-4 做修改,一开始它列的有模有样的,可惜很快就暴露出记性不好的缺点。
我还没来得及高兴呢,就发现它失忆得很彻底😂

眼看截止时间快到了,只能求助 Claude,把文章和 GPT 生成的修改意见一股脑儿都贴给它,让它生成作品,匆匆截图提交。没想到,Claude 把关键情节给改没了,没有了马克偷偷看艾拉,也没有无名猫受伤的原因。
六、成功的局部修改
昨晚得知自己得奖后,我决定花点时间把作品恢复原样。这一次,当然要使用 code interpreter 了。首先是把原文喂给 code interpreter 让它写入到 dataframe 里。
全部喂完后,保存成 excel 文件备用。
接下来就可以让 GPT 读取文件并给反馈了。

首先 AI 从情节合理与连贯性角度给的意见挺中肯的。

改好后保存。当然不保存、继续执行下去也没问题,但 GPT 最近很不稳定,为了避免白忙活,还是随时随地保存备份为好。
接下来修改细节。反复尝试了几次后,发现 Arthur 的结构化 prompt 效果确实更好,修改的成品有一大半可以直接采纳。
每改一段 AI 就会把修改后的内容写入内存,并读取新的一段。

我就这样重复了二十多遍“请继续”。也会有 GPT 改得不好的地方,简单纠正一下就行。
一轮完成,我打算让 AI 再修订一轮。但二十几遍的重复实在是受够了,先合并段落。

这一轮修改,skill set 有所变化,更强调字词和标点。

全部改完后,得到的,就是我在文章开头放出来的最终作品。

---

哇,终于写完了。谢谢你的耐心。
接下来我有两个方向的探索。

一是琢磨 Arthur 等伙伴们的 prompts。上周相见恨晚,居然段子都能写得有模有样,很开眼。结构化 + know how 的威力很大,接下来我会多找一些具体的领域来实践。
二是继续设计能把各种 prompts 加上人工干预配置成 flow 的 agent 框架,并一点点实现了(或者找到最适合的开源框架给改一改)。
感兴趣的伙伴们,点个赞点个在看再关注下公众号,咱们多多交流喽。

继续阅读
阅读原文