诗歌生成:AI创作诗歌
--- title: "诗歌生成:AI创作诗歌" description: "使用LLM生成各种风格的诗歌" tags: ["诗歌生成", "AI诗歌", "创意写作", "LLM", "文学"] category: "llm" icon: "🌸"
诗歌生成:AI创作诗歌
诗歌生成概述
诗歌生成是利用LLM创作各种风格诗歌的技术,包括古典诗词、现代诗、自由诗等。
核心功能
1. 古典诗词生成
from openai import OpenAI
from typing import Dict, List
class ClassicalPoetryGenerator:
"""古典诗词生成器"""
def __init__(self, model: str = "gpt-4"):
self.client = OpenAI()
self.model = model
def generate_tang_poem(self, topic: str, form: str = "七言绝句") -> str:
"""生成唐诗"""
prompt = f"""请创作一首{form},主题是"{topic}"。
要求:
1. 符合{form}的格律
2. 押韵
3. 意境优美
4. 符合古典诗词的风格
请创作:"""
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "你是一位精通古典诗词的诗人。"},
{"role": "user", "content": prompt}
],
temperature=0.8
)
return response.choices[0].message.content
def generate_song_ci(self, topic: str, cipai: str = "水调歌头") -> str:
"""生成宋词"""
prompt = f"""请按照"{cipai}"的词牌,创作一首词,主题是"{topic}"。
要求:
1. 符合{cipai}的词牌格律
2. 押韵
3. 意境优美
4. 符合宋词的风格
请创作:"""
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "你是一位精通宋词的词人。"},
{"role": "user", "content": prompt}
],
temperature=0.8
)
return response.choices[0].message.content
def generate_couplet(self, first_line: str) -> str:
"""生成对联"""
prompt = f"""请为上联创作下联:
上联:{first_line}
要求:
1. 对仗工整
2. 平仄相对
3. 意义相关
4. 字数相等
请提供下联:"""
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "你是一位对联大师。"},
{"role": "user", "content": prompt}
],
temperature=0.7
)
return response.choices[0].message.content
2. 现代诗生成
class ModernPoetryGenerator:
"""现代诗生成器"""
def __init__(self, model: str = "gpt-4"):
self.client = OpenAI()
self.model = model
def generate_free Verse(self, topic: str, mood: str = "抒情") -> str:
"""生成自由诗"""
prompt = f"""请创作一首关于"{topic}"的自由诗。
情绪:{mood}
要求:
1. 意象丰富
2. 语言优美
3. 情感真挚
4. 结构自由
请创作:"""
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "你是一位现代诗人。"},
{"role": "user", "content": prompt}
],
temperature=0.9
)
return response.choices[0].message.content
def generate_haiku(self, topic: str) -> str:
"""生成俳句"""
prompt = f"""请创作三首关于"{topic}"的俳句。
俳句格式:5-7-5音节
请创作三首不同角度的俳句。"""
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "你是一位俳句大师。"},
{"role": "user", "content": prompt}
],
temperature=0.8
)
return response.choices[0].message.content
def generate_prose_poem(self, topic: str, style: str = "抒情") -> str:
"""生成散文诗"""
prompt = f"""请创作一篇关于"{topic}"的散文诗。
风格:{style}
要求:
1. 诗意与散文结合
2. 意象丰富
3. 语言优美
4. 情感真挚
请创作:"""
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "你是一位散文诗人。"},
{"role": "user", "content": prompt}
],
temperature=0.8
)
return response.choices[0].message.content
3. 诗歌分析
class PoetryAnalyzer:
"""诗歌分析器"""
def __init__(self, model: str = "gpt-4"):
self.client = OpenAI()
self.model = model
def analyze_poem(self, poem: str) -> str:
"""分析诗歌"""
prompt = f"""请分析以下诗歌:
{poem}
请提供:
1. 主题分析
2. 意象解读
3. 修辞手法
4. 情感表达
5. 艺术特色
6. 文学价值"""
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "你是一位诗歌评论家。"},
{"role": "user", "content": prompt}
],
temperature=0.4
)
return response.choices[0].message.content
def compare_poems(self, poem1: str, poem2: str) -> str:
"""比较诗歌"""
prompt = f"""请比较以下两首诗歌:
诗歌1:
{poem1}
诗歌2:
{poem2}
请从以下方面进行比较:
1. 主题
2. 风格
3. 技巧
4. 意境
5. 优劣"""
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "你是一位诗歌比较研究专家。"},
{"role": "user", "content": prompt}
],
temperature=0.4
)
return response.choices[0].message.content
诗歌创作工作流
class PoetryCreationWorkflow:
"""诗歌创作工作流"""
def __init__(self):
self.classical = ClassicalPoetryGenerator()
self.modern = ModernPoetryGenerator()
self.analyzer = PoetryAnalyzer()
def create_poetry_collection(self, theme: str, styles: List[str]) -> Dict:
"""创建诗歌集"""
poems = []
for style in styles:
if style in ["唐诗", "七言绝句", "五言律诗"]:
poem = self.classical.generate_tang_poem(theme, style)
elif style in ["宋词", "水调歌头", "念奴娇"]:
poem = self.classical.generate_song_ci(theme, style)
elif style == "自由诗":
poem = self.modern.generate_free Verse(theme)
elif style == "俳句":
poem = self.modern.generate_haiku(theme)
else:
poem = self.modern.generate_free Verse(theme)
poems.append({"style": style, "content": poem})
# 分析诗歌
analyses = []
for poem_data in poems:
analysis = self.analyzer.analyze_poem(poem_data["content"])
analyses.append({"poem": poem_data["style"], "analysis": analysis})
return {
"theme": theme,
"poems": poems,
"analyses": analyses
}
# 使用示例
workflow = PoetryCreationWorkflow()
collection = workflow.create_poetry_collection(
"春天",
["七言绝句", "水调歌头", "自由诗", "俳句"]
)
print(f"主题:{collection['theme']}")
print(f"诗歌数量:{len(collection['poems'])}")
for poem_data in collection['poems']:
print(f"\n{poem_data['style']}:")
print(poem_data['content'][:200])
最佳实践
- 选择风格:根据需求选择合适的诗歌风格
- 提供主题:提供清晰的主题和意象
- 多次尝试:生成多个版本选择最佳
- 人工润色:对AI生成的内容进行润色
总结
诗歌生成是LLM创意应用的精彩展示。通过合理使用,可以创作各种风格的诗歌作品。