# 使用 Gemini API 创作小说:从入门到实践 (gemini-2.5-pro-exp-03-25,gemini-2.0-flash,gemini-2.5-flash-deepsearch,gemini-2.5-flash-all)
使用 Gemini API 创作小说:从入门到实践(gemini-2.5-pro-exp-03-25,gemini-2.0-flash,gemini-2.5-flash-deepsearch,gemini-2.5-flash-all)
引言
Google 的 Gemini API 为开发者提供了强大的文本生成能力,特别适合用于创意写作和小说创作。本文将详细介绍如何使用 Gemini API 的不同模型来创作引人入胜的小说内容。
Gemini 模型概览
1. gemini-2.5-pro-exp-03-25
- 特点:最新的实验性专业模型,具有卓越的理解和生成能力
- 适用场景:复杂情节构思、深度人物塑造、长篇小说创作
- 优势:创意丰富,文笔流畅,能够处理复杂的叙事结构
2. gemini-2.0-flash
- 特点:快速响应模型,平衡了性能和速度
- 适用场景:短篇故事、章节生成、实时创作辅助
- 优势:响应迅速,成本效益高
3. gemini-2.5-flash-all
- 特点:全能型快速模型,支持多种创作风格
- 适用场景:多样化的创作需求,风格实验
- 优势:灵活性强,适应各种文学体裁
4. gemini-2.5-flash-deepsearch
- 特点:深度搜索增强模型,善于整合信息
- 适用场景:历史小说、科幻小说等需要大量背景知识的创作
- 优势:知识面广,能够生成信息丰富的内容
环境准备
1. 获取 API 密钥:API-key, https://jeniya.top/
# 首先需要在 Google AI Studio 获取 API 密钥
# 访问:https://aistudio.google.com/app/apikey
2. 安装必要的库
pip install google-generativeai
pip install python-dotenv # 用于管理环境变量
3. 基础配置
import google.generativeai as genai
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 配置 API 密钥
genai.configure(api_key=os.getenv('GEMINI_API_KEY'))
小说创作实战
1. 基础小说生成
def generate_story(model_name, prompt, max_tokens=2000):
"""
使用指定的 Gemini 模型生成小说内容
"""
model = genai.GenerativeModel(model_name)
response = model.generate_content(
prompt,
generation_config=genai.types.GenerationConfig(
max_output_tokens=max_tokens,
temperature=0.8, # 控制创意程度
top_p=0.9,
top_k=40
)
)
return response.text
# 示例:生成一个科幻小说开头
prompt = """
请为我创作一个科幻小说的开头,设定如下:
- 时间:2150年
- 地点:火星殖民地
- 主角:一位年轻的地质学家
- 事件:发现了一个神秘的地下结构
请用生动的描写和引人入胜的情节开始这个故事。
"""
story = generate_story('gemini-2.5-pro-exp-03-25', prompt)
print(story)
2. 章节续写功能
class NovelWriter:
def __init__(self, model_name='gemini-2.5-flash-all'):
self.model = genai.GenerativeModel(model_name)
self.story_context = []
def write_chapter(self, chapter_prompt, previous_context=None):
"""
根据提示和上下文续写章节
"""
if previous_context:
self.story_context.append(previous_context)
# 构建包含上下文的提示
full_prompt = f"""
基于以下已有故事内容:
{''.join(self.story_context[-3:])} # 使用最近3章的内容作为上下文
请续写下一章节,要求:
{chapter_prompt}
"""
response = self.model.generate_content(
full_prompt,
generation_config=genai.types.GenerationConfig(
max_output_tokens=3000,
temperature=0.85
)
)
new_chapter = response.text
self.story_context.append(new_chapter)
return new_chapter
# 使用示例
writer = NovelWriter('gemini-2.5-pro-exp-03-25')
# 第一章
chapter1 = writer.write_chapter(
"创作第一章:主角初次登场,描述其背景和当前处境"
)
# 第二章
chapter2 = writer.write_chapter(
"创作第二章:主角遇到第一个挑战,引入配角",
previous_context=chapter1
)
3. 角色对话生成器
def generate_dialogue(character_profiles, scene_description, model_name='gemini-2.0-flash'):
"""
根据角色设定和场景生成对话
"""
model = genai.GenerativeModel(model_name)
prompt = f"""
角色设定:
{character_profiles}
场景描述:
{scene_description}
请生成一段自然、符合角色性格的对话,包含情感变化和肢体语言描述。
"""
response = model.generate_content(
prompt,
generation_config=genai.types.GenerationConfig(
temperature=0.9, # 提高创意度
max_output_tokens=1500
)
)
return response.text
# 使用示例
characters = """
- 李明:35岁的侦探,冷静理智,说话简洁有力
- 王芳:28岁的记者,好奇心强,性格活泼
"""
scene = "深夜的咖啡馆,两人第一次见面讨论一起神秘失踪案"
dialogue = generate_dialogue(characters, scene)
print(dialogue)
4. 风格化写作
def stylized_writing(content_prompt, style_reference, model_name='gemini-2.5-flash-all'):
"""
模仿特定风格进行创作
"""
model = genai.GenerativeModel(model_name)
prompt = f"""
内容要求:{content_prompt}
风格要求:请模仿{style_reference}的写作风格,包括:
- 句式特点
- 用词习惯
- 叙事节奏
- 氛围营造
创作一段500字左右的内容。
"""
response = model.generate_content(prompt)
return response.text
# 示例:模仿不同风格
detective_story = stylized_writing(
"一个雨夜的谋杀案现场",
"经典侦探小说风格,如阿加莎·克里斯蒂"
)
高级技巧
1. 批量生成与筛选
def generate_multiple_versions(prompt, model_name, num_versions=3):
"""
生成多个版本供选择
"""
model = genai.GenerativeModel(model_name)
versions = []
for i in range(num_versions):
response = model.generate_content(
prompt,
generation_config=genai.types.GenerationConfig(
temperature=0.7 + (i * 0.1), # 每个版本使用不同的温度
max_output_tokens=1000
)
)
versions.append(response.text)
return versions
# 生成3个不同版本的开头
versions = generate_multiple_versions(
"写一个悬疑小说的开头,主角在暴风雨夜收到一封神秘信件",
'gemini-2.5-flash-all'
)
2. 情节大纲生成器
def generate_plot_outline(genre, theme, num_chapters=10):
"""
生成完整的小说大纲
"""
model = genai.GenerativeModel('gemini-2.5-flash-deepsearch')
prompt = f"""
创作一个{genre}类型小说的详细大纲:
主题:{theme}
章节数:{num_chapters}
请包含:
1. 故事背景设定
2. 主要角色介绍(至少3个)
3. 每章的主要情节点
4. 冲突与转折设计
5. 结局安排
"""
response = model.generate_content(prompt)
return response.text
# 示例
outline = generate_plot_outline("科幻悬疑", "人工智能觉醒", 12)
3. 世界观构建助手
def build_world_setting(basic_concept, model_name='gemini-2.5-pro-exp-03-25'):
"""
构建详细的小说世界观
"""
model = genai.GenerativeModel(model_name)
prompt = f"""
基于以下概念构建一个完整的虚构世界:
{basic_concept}
请详细描述:
1. 地理环境和主要地点
2. 社会结构和**体系
3. 文化和习俗
4. 科技或魔法水平
5. 历史背景
6. 经济体系
7. 主要冲突和矛盾
"""
response = model.generate_content(prompt)
return response.text
实用工具函数
1. 内容审查器
def content_review(text, model_name='gemini-2.0-flash'):
"""
审查生成内容的质量和一致性
"""
model = genai.GenerativeModel(model_name)
prompt = f"""
请审查以下小说内容:
{text}
从以下方面评估:
1. 情节连贯性
2. 人物行为一致性
3. 语言流畅度
4. 是否有逻辑错误
5. 改进建议
"""
response = model.generate_content(prompt)
return response.text
2. 字数和节奏控制
def controlled_generation(prompt, target_words=500, model_name='gemini-2.5-flash-all'):
"""
控制生成内容的长度
"""
model = genai.GenerativeModel(model_name)
enhanced_prompt = f"""
{prompt}
要求:请生成约{target_words}字的内容,注意节奏控制和段落分配。
"""
response = model.generate_content(
enhanced_prompt,
generation_config=genai.types.GenerationConfig(
max_output_tokens=int(target_words * 1.5) # 留出余量
)
)
return response.text
最佳实践建议
1. 提示词优化
- 具体明确:提供详细的背景、人物、情节要求
- 示例引导:可以提供风格示例或参考
- 分步构建:复杂故事可以分章节逐步生成
2. 模型选择策略
- 长篇创作:使用
gemini-2.5-pro-exp-03-25 - 快速迭代:使用
gemini-2.0-flash - 多样化尝试:使用
gemini-2.5-flash-all - 知识密集:使用
gemini-2.5-flash-deepsearch
3. 质量控制
- 生成多个版本进行比较
- 使用审查功能检查一致性
- 保持人物设定文档的更新
- 定期保存创作进度
4. 创意激发
def creative_prompt_generator(base_idea):
"""
生成创意写作提示
"""
model = genai.GenerativeModel('gemini-2.5-flash-all')
prompt = f"""
基于这个基础想法:{base_idea}
请生成5个不同角度的创意写作提示,包括:
- 不同的叙事视角
- 时间线变化
- 风格实验
- 主题深化
"""
response = model.generate_content(prompt)
return response.text
完整示例:短篇小说生成器
class StoryGenerator:
def __init__(self):
self.models = {
'outline': 'gemini-2.5-flash-deepsearch',
'writing': 'gemini-2.5-pro-exp-03-25',
'dialogue': 'gemini-2.0-flash',
'review': 'gemini-2.5-flash-all'
}
def create_story(self, theme, genre, length='短篇'):
"""
完整的故事创作流程
"""
# 1. 生成大纲
outline_model = genai.GenerativeModel(self.models['outline'])
outline = outline_model.generate_content(
f"为一个{length}{genre}小说创建大纲,主题是:{theme}"
).text
# 2. 生成故事主体
writing_model = genai.GenerativeModel(self.models['writing'])
story = writing_model.generate_content(
f"基于以下大纲创作完整故事:\n{outline}"
).text
# 3. 优化对话
dialogue_model = genai.GenerativeModel(self.models['dialogue'])
# 这里可以识别并优化故事中的对话部分
# 4. 审查和完善
review_model = genai.GenerativeModel(self.models['review'])
review = review_model.generate_content(
f"审查并提供改进建议:\n{story}"
).text
return {
'outline': outline,
'story': story,
'review': review
}
# 使用示例
generator = StoryGenerator()
result = generator.create_story(
theme="时间旅行的代价",
genre="科幻",
length="短篇"
)
错误处理和优化
import time
from typing import Optional
def safe_generate(model_name: str, prompt: str, max_retries: int = 3) -> Optional[str]:
"""
带有错误处理和重试机制的生成函数
"""
model = genai.GenerativeModel(model_name)
for attempt in range(max_retries):
try:
response = model.generate_content(prompt)
return response.text
except Exception as e:
print(f"尝试 {attempt + 1} 失败: {str(e)}")
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # 指数退避
else:
print("达到最大重试次数")
return None
总结
Gemini API 为小说创作提供了强大的工具,通过合理选择模型和优化提示词,可以生成高质量的创意内容。记住以下要点:
- 选择合适的模型:根据需求选择最适合的 Gemini 模型
- 精心设计提示词:详细、具体的提示词能够生成更好的内容
- 迭代优化:通过多次生成和审查来提升作品质量
- 保持创意:利用 AI 作为创意伙伴,而不是完全依赖

浙公网安备 33010602011771号