前情提要:《用AI写小说的尝试》
使用的 SKILLS 以及生成的小说:novel-skills
现阶段 AI 在各个领域都得到了广泛 的应用。AI 很能好地保证产品的下限,但若不深度参与,仅靠 AI 自动驾驶还是难以产出优秀的作品。现阶段 AI 更多的能担任辅助角色,全功能的 AI 只能寄望于其进一步进化。
用 AI 写小说是我探索其能力边界的一次尝试。从产出来看结果不算理想,不过整个过程还算是有趣。
SKILL 编写流程
Skill 的编写也是一个循序渐进的过程,下面是这个 Skill 调教的一个大致过程。
- 先按照自己的理解给定基础框架,然后让 AI 帮助完善细节。该阶段可借助 Copilot、Codex 等工具辅助进行 Skill 的编写。
- 让 AI 使用 Skill 开始按章进行写作。观察 Skill 的工具调用情况,了解 AI 是否有按照预定的流程进行工作,有哪些流程可以优化。对于未按预期执行的步骤,调整 Skill 加强约束。
- 查看产出的小说摘要文件,完善 Skill 摘要生成的约束。
- 随着小说长度的增加,摘要文件持续增加。密切关注摘要内容的变化,及时修改 Skill 调整摘要以适应小说的创作。
小说创作 SKILL 的设计
- 大多 AI 模型只有 128K 的上下文,换算成中文字符大约为15万。要加上系统prompt、控制字符、对话历史等,实际留给小说的上下文远低于这个数。为了让 AI 对完整剧情有所了解,必须将小说内容先总结成摘要再喂给 AI。
- 过于简洁的摘要会让 AI 缺少必要的信息,导致剧情不连贯甚至矛盾。过于详细的摘要不但会导致上下文超限,更会分散 AI 宝贵的注意力,适得其反。可以说摘要设计是这个 SKILL 设计的核心难点。
- 设计初期考虑使用图数据库、向量数据来辅助 AI 理解小说情节。实际操作下来发现对于小说创作而言,经过合理设计的 Markdown 已可以很好的满足需求。引入数据库反而是在自找麻烦。
- 小说的摘要按照树形结构进行组织。
- 小说总纲,里面包含小说总体的剧情简介以及完整章回简介。总纲里的章回简介只包含标题和一句话简介。每章的具体摘要放在独立文件中。每章的具体简介里包含关键剧情,情节伏笔等。
- 角色小传放在单独文件夹里。角色索引文件里将角色分为主角、配角、组织等,并给各角色一个简要介绍。每个角色的详细介绍放在独立文件中。角色详细介绍包括人物性格、和其他人物关系以及关键剧情介绍等。
- 世界观设定也有独立的索引文件。索引文件中包含简要的世界观介绍。核心场景、关键设定有自己独立的设定文件。
- 摘要的维护和使用。
- SKILL 里明确要求每章完成后必须对相关的摘要文件进行更新。
- 最初设计是让 AI 根据情节需求自己决定需要读取哪些摘要。实际使用过程中发现 AI 经常漏读关键内容。对轮工具调用不但费 Token,速度还慢。考虑当前的章回数还不是很多,因此写了个 tools 一次性加载所有摘要。注:最初想设计成 SKILL 的 Script,但其执行前会做很多环境检查,使用体验不佳。
- 当前 SKILL 需要改进的地方。
- 现在的摘要有些太“啰嗦”,随着作品长度的增加很容易超过上下文限制。需要进一步优化摘要约束,只保留重要内容。
- 在作品长度增加后一次性加载所有再要摘要将不再可行,需要回归按需加载。需对摘要加载工具进行调整,一次性加载必要的摘要文件。然后在 SKILL 里给出详细的按需加载指导。
- 设计初期没有考虑分卷问题。每卷也应当有各自独立的摘要,利用该摘要来指定本卷的创作方向。
- 需要设计 checklist 列表,避免出现伏笔丢失,人物去向没有交代的问题。