AI小说创作配置:用Python脚本和提示词模板批量生成章节
想用AI批量写小说章节,关键不是找一个万能模型,而是把小说设定、章节大纲和写作要求整理成结构化的提示词模板,再用脚本循环调用模型接口。
下面从零开始,一步步完成配置。
先理清:你需要准备什么
在开始写脚本之前,先确认三样东西:
- 一个可用的模型API:例如OpenAI、DeepSeek、通义千问等,注册后获取API Key。本文以兼容OpenAI接口的模型为例,其他模型只需替换API地址和模型名称。
- Python 3.8及以上环境:Windows、macOS或Linux均可。用
python --version检查版本。 - 一本小说的基础设定:书名、主角、世界观、每章大纲。哪怕只有粗略的章节列表,也比没有强。
如果还没有API Key,先去对应平台的控制台创建,并确保账户有可用额度。不要把API Key直接写在脚本里提交到公开仓库,后面会讲如何用环境变量管理。
安装依赖并设置API密钥
打开终端,安装openai库和python-dotenv(用于读取环境变量):
pip install openai python-dotenv
在项目目录下新建.env文件,写入你的密钥和接口地址:
API_KEY=你的API密钥
BASE_URL=https://api.deepseek.com/v1
MODEL_NAME=deepseek-chat
注意:BASE_URL和MODEL_NAME要换成你实际使用的服务商提供的信息。
不同平台的地址和模型名不同,以控制台文档为准。
编写提示词模板和生成脚本
提示词模板决定生成质量。
建议把小说设定和章节要求分开,模板中留出变量占位。
新建prompt_template.txt:
你是一位小说写作助手。请根据以下设定和章节大纲,写出一章完整的小说内容。
【小说设定】
书名:{{book_title}}
主角:{{protagonist}}
世界观:{{world_setting}}
【本章大纲】
{{chapter_outline}}
【写作要求】
- 字数约{{word_count}}字
- 使用第三人称叙述
- 章节结尾留一个悬念
- 不要出现与设定矛盾的内容
再新建generate.py,读取模板和章节大纲,循环调用接口:
import os
import time
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(
api_key=os.getenv("API_KEY"),
base_url=os.getenv("BASE_URL")
)
MODEL = os.getenv("MODEL_NAME")
with open("prompt_template.txt", "r", encoding="utf-8") as f:
template = f.read()
chapters = [
{"title": "第一章 开端", "outline": "主角在旧书店发现一本会说话的书。"},
{"title": "第二章 试探", "outline": "主角尝试与书对话,得知一个秘密。"},
]
for ch in chapters:
prompt = template.replace("{{book_title}}", "示例小说")
prompt = prompt.replace("{{protagonist}}", "林默")
prompt = prompt.replace("{{world_setting}}", "现代都市,存在隐藏的超自然力量")
prompt = prompt.replace("{{chapter_outline}}", ch["outline"])
prompt = prompt.replace("{{word_count}}", "800")
response = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": prompt}],
temperature=0.7
)
content = response.choices[0].message.content
filename = f"{ch['title']}.md"
with open(filename, "w", encoding="utf-8") as f:
f.write(content)
print(f"已生成:{filename}")
time.sleep(2)
运行脚本:
python generate.py
如果控制台依次输出“已生成:第一章 开端.md”等字样,说明调用成功。
打开生成的Markdown文件,检查内容是否符合设定和大纲。
避坑:几个容易出错的地方
- API地址填错:
BASE_URL通常以/v1结尾,但有些平台不同。报错404或Connection error时优先检查这一项。 - 模型名称不对:模型名必须与服务商控制台一致。报错
model not found时去控制台复制准确名称。 - 额度不足或密钥失效:报错
401或insufficient_quota时,检查密钥是否复制完整、账户是否有余额。 - 生成内容偏离设定:适当降低
temperature(如0.5),或在模板中增加“禁止事项”列表。 - 脚本被中断:批量生成时加
time.sleep(1~3)避免触发频率限制。如果仍然报429,把间隔调大。
验证生成效果
不要只看有没有输出文件,还要检查三件事:
- 章节内容是否覆盖了大纲要点:对照大纲逐条检查,缺漏的地方调整模板中的要求。
- 人物和设定是否一致:比如主角名字、世界观规则有没有前后矛盾。
- 字数是否接近要求:模型对字数控制不一定精确,可以在提示词中给出范围,或者生成后人工增删。
如果发现某一章质量明显偏低,单独修改该章的大纲描述,重新运行脚本生成该章即可,不必全部重跑。
整个配置流程并不复杂:准备好API和Python环境,把小说设定写成模板,用脚本循环调用并保存结果。
先跑通一章,确认效果后再批量生成,比一次性写完所有章节更稳妥。