自动小说生成工具
核心功能:
✅ 小说设定(世界观、人物、剧情结构)
✅ 章节生成(多步生成,确保逻辑连贯)
✅ 角色状态 & 伏笔管理(追踪人物发展)
✅ 向量检索(保证长篇小说上下文一致)
✅ 一致性检查(防止剧情冲突)
✅ GUI 友好交互(可配置 & 直观操作)
在开始之前,请确保你的系统满足以下要求:
- Python 3.8+
- pip 已安装(Python 包管理器)
- API 访问权限(支持OpenAI API方式的任何AI,中文推荐使用DeepSeek)
手动安装以下依赖:
pip install openai langchain chromadb langchain_openai langchain_chroma langgraph typing_extensions
克隆或下载本项目后,你会看到如下结构:
.
├── main.py # 入口文件,运行 GUI
├── ui.py # 图形界面
├── novel_generator.py # 章节生成核心逻辑
├── consistency_checker.py # 一致性检查 (防止剧情冲突)
├── prompt_definitions.py # 预定义的 AI 提示词
├── utils.py # 通用工具函数 (文件操作)
├── config_manager.py # 处理配置信息 (API Key, Base URL)
├── config.json # 用户配置文件 (可选)
└── vectorstore/ # (可选) 存储向量数据库
运行前,你需要配置 API Key 以便调用 OpenAI 或本地 LLM。
在 config.json
文件中填入:
{
"api_key": "your_openai_api_key",
"base_url": "https://api.openai.com/v1",
"model_name": "gpt-4o",
"topic": "未来科技",
"genre": "科幻",
"num_chapters": 10,
"word_number": 3000,
"filepath": "output_directory"
}
- 启动程序后,在 GUI 中输入
API Key
并选择Base URL
,然后点击 "保存配置" 以存储到config.json
。
python main.py
程序启动后,你会看到一个图形界面,方便用户交互。
如果你希望打包成可执行文件(避免 Python 依赖),可以使用 PyInstaller
:
pip install pyinstaller
pyinstaller --onefile --windowed main.py
这样会在 dist/
目录下生成 main.exe
(Windows)或 main
(Linux/macOS)。
在 GUI 界面:
- 输入 API Key & Base URL(或使用
config.json
)。 - 选择模型(如
gpt-4o
)。 - 输入小说主题(如 "未来世界中的 AI 革命")。
- 选择小说类型(如 "科幻"、"奇幻"、"悬疑")。
- 设置章节数和每章字数(如 10 章,每章 3000 字)。
- 选择存储路径(建议创建
novels/
目录)。
点击 "1. 生成设定 & 目录",系统将:
- 生成世界观设定(
Novel_setting.txt
)。 - 生成章节目录(
Novel_directory.txt
)。
点击 "2. 生成单章",系统将:
- 读取上一章节内容(
lastchapter.txt
)。 - 通过向量检索查找相关背景信息。
- 动态调整角色状态(
character_state.txt
)。 - 生成完整章节,并保存到
chapters/chapter_X.txt
。
点击 "3. 一致性审校",系统将:
- 检查角色行为、剧情逻辑是否前后矛盾。
- 识别是否有未解伏笔,保证故事合理性。
所有生成的文件存储在你选择的目录下:
output_directory/
├── Novel_setting.txt # 小说世界观 & 角色设定
├── Novel_directory.txt # 章节目录
├── lastchapter.txt # 最新章节 (供 AI 参考)
├── character_state.txt # 角色状态 (道具、情感、技能)
├── global_summary.txt # 小说摘要
└── chapters/ # 所有章节
├── chapter_1.txt
├── chapter_2.txt
├── chapter_3.txt
└── ...
原因: Chroma
版本问题。
解决方案:
pip uninstall chromadb
pip install chromadb==0.3.21 # 或尝试其他版本
如果仍然报错,可以在 novel_generator.py
里注释 store.persist()
。
可能的原因:
- 主题不够清晰,可以在
topic
字段中添加详细设定(如“废土世界 + AI 叛乱”
)。 - 角色设定较少,可手动在
Novel_setting.txt
里补充。