← 返回首页
🧠

诗歌生成:AI创作诗歌

📂 llm ⏱ 3 min 520 words

--- 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])

最佳实践

  1. 选择风格:根据需求选择合适的诗歌风格
  2. 提供主题:提供清晰的主题和意象
  3. 多次尝试:生成多个版本选择最佳
  4. 人工润色:对AI生成的内容进行润色

总结

诗歌生成是LLM创意应用的精彩展示。通过合理使用,可以创作各种风格的诗歌作品。