AI 小说创作实战:如何用大模型构建长篇叙事

AI 小说创作实战:如何用大模型构建长篇叙事
直接用大模型让 AI 一次写完几万字小说,结果通常是中段崩盘、人物失忆、逻辑闭环断裂。要做出真正可读的长篇叙事,核心不在于 Prompt 怎么花哨,而在于如何管理上下文窗口以及如何拆解任务粒度。我通过搭建一套分层创作系统,把“让 AI 写作”变成了“让 AI 写分镜脚本”,最终能把单次生成的幻觉率降低到可接受的水平。
核心痛点:为什么 AI 写不长?
我刚开始尝试用 LLM 写小说时,输入了“写一个关于侦探悬疑的小说”,结果写到第三章,主角忘了自己手里有枪,反派突然变成了正派,而且情节开始原地打转。这不是模型笨,而是典型的上下文溢出与注意力稀释问题。

目前的商业大模型上下文通常在 128k 到 1M token 之间,但这不代表它能有效记住所有内容。当输入量超过窗口的 50% 时,模型对早期信息的检索能力会呈指数级下降。对于长篇叙事,我总结了三个必须规避的坑:
- 单轮生成过长:不要试图让模型一次性输出 5000 字以上的高密度剧情,一旦中间出错,回滚成本极高。
- 缺乏外部记忆存储:单纯依赖 Prompt 里的“记住这个人”,模型很快就会忘记。必须建立独立的“世界书”数据库。
- 风格一致性漂移:随着对话轮数增加,模型的语气会从“严肃文学”逐渐滑向“网文小白文”,需要引入风格锚点。
实战架构:RAG 驱动的分章写作
我的解决方案是引入 RAG(检索增强生成)架构,但不是为了搜索引擎,而是为了角色档案和剧情时间线。我把整个创作过程拆分为“大纲层”、“章节层”和“润色层”。
在工程实现上,我最小化可用的工作流如下。我用 Python 脚本将角色卡和剧情要点存入向量数据库,每次生成新章节前,先检索相关设定注入 Context:
import chromadb
from openai import OpenAI
client = OpenAI()
# 初始化本地向量库,存储角色和已发生剧情
client_db = chromadb.Client()
colLECTION = client_db.get_or_create_collection("novel_memory")
def get_relevant_context(query: str, top_k=3):
# 检索与当前剧情最相关的设定
results = colLECTION.query(query_embeddings=[embed(query)], n_results=top_k)
return "\n".join([doc['content'] for doc in results['documents'][0]])
def write_chapter(scene_outline: str, prev_chapter_summary: str):
# 动态注入背景信息
background = get_relevant_context(scene_outline)
prompt = f"""
当前剧情目标:{scene_outline}
前情概要:{prev_chapter_summary}
相关角色/场景设定:{background}
请根据以上信息,撰写本章正文(约1500字),要求文笔细腻,不要总结。
"""
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}],
temperature=0.7
)
return response.choices[0].message.content
在这个架构下,我不再是“问 AI 写小说”,而是在“喂 AI 素材并约束输出”。chromadb 在这里起到了类似人脑海马体的作用,确保主角在第 10 章出现的物品,在第 1 章就有迹可循。
保持连贯性的具体技巧
有了架构,具体操作时还有哪些细节决定成败?我踩过最坑的一个点是时间线的混乱。AI 很容易把“三年前”和“今天”搞混。
我的处理方式是建立严格的状态追踪机制:
- 每章结束后强制摘要:不要让 AI 直接生成分章结果,要求它先生成一段 200 字的“本章剧情摘要”和“角色状态变更”。这段摘要将作为下一章的
prev_chapter_summary输入,而不是直接把全文塞回去。 - 分离事实与描写:在 Prompt 中明确区分“事实层”和“修辞层”。例如,告诉模型“角色 A 此时心里很愤怒”是事实,但“他眼神如寒冰般冷冽”是修辞。前者存入数据库,后者由模型自由发挥。
- 多视角校验:对于关键转折剧情,我通常会跑两个不同的 Seed(随机种子),生成两个版本,然后人工比对逻辑漏洞。如果两个版本在某处细节上产生冲突,那里往往就是逻辑崩坏点。
很多初学者容易陷入“一直让模型重写直到满意”的怪圈,这不仅烧钱而且效率极低。更好的做法是先由 AI 生成粗糙的骨架,再由人类填补血肉。你可以让模型输出章节大纲(Scene Outline),人工调整大纲的逻辑顺序后,再让模型扩写正文。这样即使扩写质量不佳,修改成本也只是几百字而非几万字。
下一步探索
如果你已经掌握了基础的 RAG 写作流,可以尝试引入记忆衰减机制,即越久远的剧情检索权重越低,模拟人类记忆的模糊感,这会让叙事节奏更加自然。此外,结合 LoRA 微调你喜欢的作者风格,也是进阶的好方向。
本文首发于 AI 小说创作实战:如何用大模型构建长篇叙事 — https://lyxq.com.cn/en/blog/ai-novel-creation-long-form-narrative
转载或引用请注明出处,商业使用请联系作者获得授权。