AI写小说提示词:从原理到实战的开发者指南
·

在AI内容生成领域,小说创作一直是技术实现难度较高的场景。不同于短文生成,长篇小说需要维持角色一致性、剧情连贯性、世界观统一性等多重约束。本文将系统介绍如何通过提示词工程解决这些核心挑战。
一、当前AI生成小说的主要痛点
- 剧情断裂问题:生成超过5000字内容时,后续剧情常与开头设定偏离
- 角色失忆现象:同一角色在不同章节出现性格、外貌特征不一致
- 世界观混乱:魔法/科幻等特殊设定在后续生成中被意外修改
- 文风波动:不同段落间出现明显的语言风格差异
二、主流模型技术选型对比
| 模型 | 上下文长度 | 角色一致性 | 创意性 | 成本 | |------------|------------|------------|--------|--------| | GPT-3.5 | 4k tokens | 中等 | 较强 | $0.002/1k tokens | | GPT-4 | 8k/32k | 优秀 | 极强 | $0.06/1k tokens | | Claude 2 | 100k | 优秀 | 较强 | $0.015/1k tokens |
对于预算有限的项目,推荐GPT-3.5+自定义微调;追求质量的场景建议使用GPT-4-32k版本。
三、核心实现方案
1. 提示词模板设计
def build_prompt(genre, setting, characters):
return f"""你是一位专业的{genre}小说作家。请根据以下设定创作:
世界观:{setting}
主要角色:{', '.join(characters)}
创作要求:
1. 保持角色行为一致性
2. 每章结尾留下悬念
3. 使用{genre}风格的文学语言
当前章节剧情概要:"""
2. 多轮对话连贯性保持
通过维护会话历史实现:
- 每次生成新章节时,附带前3章的关键事件摘要
- 使用向量数据库存储已生成内容
- 通过相似度检索确保新内容相关性
3. 角色一致性维护
- 建立角色卡片JSON库
- 在每轮提示中注入当前活跃角色的属性
- 对偏离设定的生成结果进行正则校验
四、关键代码实现
import openai
from typing import List
class NovelGenerator:
def __init__(self, model="gpt-4"):
self.model = model
self.memory = [] # 存储剧情发展
def generate_chapter(self, prompt: str, prev_chapters: List[str]) -> str:
context = "\n\n".join(prev_chapters[-3:])
full_prompt = f"{prompt}\n\n前情提要:{context}\n\n新章节:"
response = openai.ChatCompletion.create(
model=self.model,
messages=[{"role": "user", "content": full_prompt}],
temperature=0.7
)
chapter = response.choices[0].message.content
self.memory.append(chapter)
return chapter

五、性能优化策略
- Token节省技巧:
- 对长文本采用
gpt-3.5-turbo-16k压缩摘要 -
使用
text-embedding-ada-002做语义检索替代全文存储 -
响应时间优化:
- 实现章节异步生成
-
设置合理的max_tokens限制(建议单章不超过2000tokens)
-
成本控制:
- 对非关键章节使用GPT-3.5
- 实现自动化的token计数器
六、生产环境避坑指南
- 常见错误:
- 未设置temperature导致输出过于随机(建议0.6-0.8)
- 忽略角色性别在中文代词中的混淆问题
-
世界观设定过于复杂超出模型理解能力
-
解决方案:
- 实现敏感词过滤层
- 开发人工审核中间件
- 建立生成质量评估指标体系
实践建议
建议从短篇故事开始验证提示词效果,逐步扩展到长篇。可以尝试以下改进方向:
- 增加情感曲线控制参数
- 集成Stable Diffusion生成角色立绘
- 实现多支线剧情树
期待看到各位开发者创造出更智能的小说生成系统!"
更多推荐


所有评论(0)