共计 3653 个字符,预计需要花费 10 分钟才能阅读完成。
1. 背景:AI 写作与传统工具的本质差异
传统写作工具(如 Word 或 Scrivener)本质是记录载体,而 AI 创作是内容生产者。最核心的差异在于:

- 创意来源 :传统工具依赖作者构思,AI 通过概率模型预测下一个 token
- 交互方式 :传统工具是单向输入,AI 需要双向对话式引导
- 内容边界 :传统工具不设限,AI 受限于训练数据和上下文窗口
有趣的是,AI 写作反而更接近人类「灵感迸发」的过程——通过大量阅读(训练)形成潜在模式,在特定刺激(prompt)下产生联想输出。
2. 技术实现:从 API 调用到内容控制
2.1 API 基础调用
先安装必备库:
pip install openai tiktoken
基础请求示例:
import openai
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "system", "content": "你是一位科幻小说作家"},
{"role": "user", "content": "写一段关于火星殖民的 200 字开头"}
],
temperature=0.7
)
print(response.choices[0].message.content)
关键参数说明:
temperature:0- 2 之间,值越大输出越随机max_tokens:限制生成长度(注意:输入 + 输出不能超过模型上下文限制)
2.2 Prompt 工程技巧
优秀的小说 prompt 应包含:
- 角色设定 :明确 AI 的作家身份 / 风格
- 结构要求 :章节长度、段落数量等
- 内容锚点 :关键情节或人物特征
进阶技巧:
prompt = """ 以悬疑风格写第 3 章,需包含以下元素:- 主角在古董店发现怀表
- 店员露出诡异微笑
- 天气突然变暗
保持描写细腻,每段不超过 3 句话,结尾留下悬念 """
2.3 长篇叙事控制
解决「上下文遗忘」问题的两种方案:
方案 A:摘要继承法
def generate_chapter(previous_summary, current_prompt):
system_msg = f"根据以下摘要延续故事:\n{previous_summary}"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "system", "content": system_msg},
{"role": "user", "content": current_prompt}
]
)
return extract_summary(response.choices[0].message.content)
方案 B:关键信息注入
character_card = """
主角档案:- 姓名:林默
- 特征:左脸有疤痕,随身携带铜制打火机
- 口头禅:"事情没那么简单"
"""
# 每次请求都附加角色卡
messages.append({"role": "system", "content": character_card})
3. 完整代码示例:小说生成器
import openai
import json
from tiktoken import encoding_for_model
class NovelGenerator:
def __init__(self, api_key, model="gpt-4"):
openai.api_key = api_key
self.model = model
self.encoder = encoding_for_model(model)
def count_tokens(self, text):
return len(self.encoder.encode(text))
def generate_chapter(self, outline, previous_chapters=[], max_tokens=1500):
# 构建上下文历史
messages = [{"role": "system", "content": "你是一位专业小说家"},
{"role": "user", "content": outline}
]
# 添加前文摘要(控制 token 消耗)if previous_chapters:
summary = "\n".join([ch["summary"] for ch in previous_chapters[-3:]])
if self.count_tokens(summary) < 500:
messages.insert(1, {"role": "system", "content": f"前情提要:\n{summary}"})
# 执行生成
response = openai.ChatCompletion.create(
model=self.model,
messages=messages,
temperature=0.7,
max_tokens=max_tokens
)
content = response.choices[0].message.content
return {
"content": content,
"summary": self.create_summary(content),
"tokens": response.usage["total_tokens"]
}
def create_summary(self, text, max_sentences=3):
# 用 AI 提取摘要
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "提取以下文本的核心内容,用 3 句话概括"},
{"role": "user", "content": text}
],
temperature=0
)
return response.choices[0].message.content
# 使用示例
if __name__ == "__main__":
generator = NovelGenerator("your-api-key")
# 生成第一章
chapter1 = generator.generate_chapter("写一个科幻小说的第一章,关于发现外星遗迹,2000 字左右")
# 延续第二章
chapter2 = generator.generate_chapter(
"接着写第二章,描述遗迹内部结构",
previous_chapters=[chapter1]
)
print(json.dumps(chapter2, indent=2, ensure_ascii=False))
4. 性能优化与成本控制
4.1 Token 消耗监控
- GPT- 4 输入 + 输出:$0.06/1K tokens
- 监控代码示例:
def show_cost(usage): cost_map = {"gpt-4": 0.06, "gpt-3.5-turbo": 0.002} model = usage["model"] return f"消耗 {usage['total_tokens']} tokens,费用 ${cost_map[model] * usage['total_tokens']/1000:.4f}"
4.2 速度优化技巧
- 对非关键内容使用 gpt-3.5-turbo
- 设置合理的 max_tokens 避免长等待
- 异步处理多章节生成
5. 常见问题解决方案
问题 1:角色特征漂移
– 解决方案:维护角色特征 JSON 库,每 5 章重新注入
问题 2:情节矛盾
– 解决方案:建立时间线检查器:
def check_consistency(new_text, existing_data):
prompt = f"验证以下内容是否与已知信息冲突:\n 已知:\n{existing_data}\n 新内容:\n{new_text}"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0
)
return "不冲突" in response.choices[0].message.content
问题 3:重复描写
– 解决方案:在 prompt 中加入「避免重复使用以下形容词:[列表]」
6. 伦理与版权考量
- 版权声明 :
- AI 生成内容目前在美国不受版权保护
-
建议人工修改比例 >30% 再申请版权
-
内容过滤 :
from openai import Moderation def safety_check(text): response = Moderation.create(input=text) return not response.results[0].flagged -
人类参与度 :
- 建议作为灵感工具而非完全代笔
- 关键情节转折点应由人工决定
结语:人机协作的创作未来
实际使用中发现,AI 在场景描写和次要角色塑造上表现优异,但主线把控仍需人类作者。最佳实践是:
- 用 AI 快速生成备选段落
- 人工筛选并重组内容
- 关键情节手动润色
这种协作模式既能保持创作效率,又能确保作品的独特性和深度。”
正文完
