AI_NovelGenerator:把一章小说的生成过程拆开讲
【免费下载链接】AI_NovelGenerator使用ai生成多章节的长篇小说,自动衔接上下文、伏笔项目地址: https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator
AI_NovelGenerator 是一个自动写作平台,把「写几十章的长篇小说」拆成可以逐章推进的流水线:上下文自动衔接、伏笔自动追踪、章节一致性检查都替你做。读完这篇,你能带走它对向量检索、提示词分层和模型调度的整套设计思路。
30 秒判断值不值得用
- 跨章一致性:每章生成前自动汇总前文摘要、检索相关剧情,写第 50 章也能记得第 8 章埋的伏笔
- 伏笔与角色追踪:内置「未解决冲突/剧情要点」记录,生成时主动检查哪些线索该推进了
- 章节一致性检查:每章定稿后可单独跑一次校验,比对设定、角色状态和前文摘要,冲突直接列出来
- GUI 全流程:从世界观设定、章节蓝图到正文、校对,全部有界面操作,不用自己写脚本
一句话总结:如果你写过「让 LLM 一次性生成长文然后越写越飘」的翻车现场,这套分阶段生成 + 向量检索的链路值得花时间研究;如果只是想要单篇短篇,它略重。
从 clone 到界面跑起来
git clone https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator cd AI_NovelGenerator && pip install -r requirements.txt python main.py需要 Python 3.9+(推荐 3.10~3.12)。默认配置参考config.example.json,复制为config.json后,模型参数都在llm_configs分组里,每个任务用哪个模型在choose_configs里分配。首次启动最常见的两个坑:某个包编译失败,装上对应平台的 C++ 构建工具后重装即可;界面里测试模型连接超时,检查base_url是否带了版本后缀(如/v1)。
一章小说是怎么被生成的
整条链路是「输入 → 检索 → 生成 → 校验」,我们按这个顺序走一遍。
输入:进入这一环节的是章节目录文件、全书总纲和角色状态文件。novel_generator/chapter.py里的build_chapter_prompt读取本章大纲、下一章信息,再把前几章的原文压缩成一份摘要,第一章还会走单独的提示词模板。出来的是「这一章要写什么」的结构化素材。
检索:相当于给全书做一次关键词联想搜索。系统先让模型基于本章大纲生成检索关键词,再去向量库里取回最相关的历史片段。向量库由novel_generator/vectorstore_utils.py维护(底层是 Chroma),每章定稿后增量更新,所以它是一份持续生长的长期记忆。这一步解决的是上下文窗口装不下整本书的问题——不是硬塞全文,而是按相关性抽片段。
生成:摘要、检索片段、本章大纲、角色设定被按分层提示词工程拼进一个提示词模板(模板集中在prompt_definitions.py,按「定稿/蓝图/草稿/校验」阶段分层,互不干扰),交给草稿模型出正文,再经过novel_generator/finalization.py按目标字数扩写润色。多章节批量生成时,ui/generation_handlers.py用后台线程逐个调度,属于 LLM 并发调度的简化形态:串行触发、异步等待,避免界面卡死。
校验:consistency_checker.py拿全书设定、角色状态、全局摘要、未解决冲突清单和最新章节做一次比对,让模型把冲突逐条列出来,没有冲突就返回「无明显冲突」。这一步刻意用了低温(0.3)模型,因为校验要的是判断不是发挥。
值得翻一翻的 4 个文件
novel_generator/chapter.py:最值得学的是「提示词组装」的写法——它把读文件、生成摘要、向量检索、格式化全集中在build_chapter_prompt一个函数里,提示词本体却留在prompt_definitions.py,改文案不碰逻辑,这比把长字符串内联在逻辑里好维护得多。novel_generator/vectorstore_utils.py:看它如何按句子边界切分章节再入库(split_text_for_vectorstore),以及检索结果为什么要过一道「相关性过滤」再进提示词。直接存长段会让相似度搜索召回一堆半相关的内容。llm_adapters.py:经典的适配器模式教学样本,十来个厂商各一个类、共用一个create_llm_adapter工厂函数。想接新模型时你只需要加一个子类,全项目其他代码一行不改。novel_generator/common.py:一个call_with_retry和invoke_with_cleaning就撑起了整个系统的容错——重试、兜底返回值、响应清洗都收敛在这里。把「怎么可靠地调一次 API」和「调 API 干什么」分开,是这类项目最该有的纪律。
调参、限流与踩坑
| 参数 | 推荐值 | 取值理由 |
|---|---|---|
temperature(正文模型) | 0.7 | 创作需要发散,但太高会偏离大纲;示例配置全部用 0.7 |
temperature(一致性检查) | 0.3 | 校验要判断不要发挥,低温输出更稳定 |
max_tokens | 8192~32768 | 跟随单章目标字数,短章用 8192 省成本,长篇定稿模型留 32768 |
embedding_retrieval_k | 4 | 召回太少丢线索,太多会把不相干剧情混进提示词,4 是示例默认值 |
timeout | 600 | 长文本生成动辄几分钟,60 秒必断连 |
两个我们实际会踩的坑:一是 API 限流,批量生成十几章时中途 429 很常见,项目靠novel_generator/common.py的重试(默认 3 次、间隔 2 秒)扛住短时限流,但连续失败时更稳的做法是调大sleep_time或错开高峰跑;二是向量索引别攒着不更新,每章定稿后都会增量写入向量库,如果手动改过章节内容却不重建索引,检索回来的就是旧剧情。
接下来可以怎么玩
- 换一套提示词体系:在
prompt_definitions.py里按自己的叙事方法改写草稿模板,这是零代码成本最大的自定义入口 - 接新模型:仿照
llm_adapters.py里任意一个子类加一个适配器,再在config.json里登记即可 - 定制校验规则:
consistency_checker.py的CONSISTENCY_PROMPT就是校验的全部标准,加几条你关心的冲突类型(比如时间线、能力上限)直接生效
把生成链路想清楚——输入从哪来、检索取什么、校验看什么——比换模型更能决定长篇写作的最终质量。
【免费下载链接】AI_NovelGenerator使用ai生成多章节的长篇小说,自动衔接上下文、伏笔项目地址: https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考