跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI大前端算法

AIGC 诗歌创作实战指南与避坑手册

利用 AIGC 技术进行诗歌创作的完整流程。从 Transformer 模型原理出发,讲解了中文诗歌在押韵、平仄和意境上的特殊挑战。提供了基于 Python 和 Hugging Face 的代码示例,展示了如何加载模型、设置参数生成诗句。同时包含后端 FastAPI 接口封装与前端 Vue3 交互实现的代码。文章还分析了 AI 诗歌的优缺点,总结了乱码、跑题、强行押韵等常见问题的解决方案,并分享了情绪标签、散文压缩等进阶技巧,帮助开发者高效落地 AI 诗歌应用。

人间过客发布于 2026/4/6更新于 2026/7/2354 浏览
AIGC 诗歌创作实战指南与避坑手册

AIGC 诗歌创作实战指南与避坑手册

引言

AI 写诗并非玄学,而是基于大语言模型的文本生成任务。它既能生成具有赛博浪漫色彩的诗句,也可能出现强行押韵或逻辑不通的情况。本文将从技术原理、代码实现到前端集成,系统讲解如何利用 AIGC 进行诗歌创作。

AIGC 写诗原理

核心机制是'给定上文,预测下一个 token'。模型通过训练数据学习语言规律,本质上是一场超大规模的文本接龙游戏。

中文诗的特殊挑战

  1. 押韵:英文只需关注词尾,中文需遵循《平水韵》等格律,否则读起来像相声。
  2. 平仄:需要控制节奏感,否则会出现'拖拉机横冲直撞'的韵律。
  3. 意境:AI 擅长字面组合,但难以理解深层情感和文化隐喻。

主流模型训练机制

训练数据

  • 古诗文网爬虫:全唐诗、全宋词及现代诗数据。
  • 清洗规则:去除无效字符,统一语气词映射。
  • 数据增强:随机替换词汇以增加多样性。

Loss 函数优化

在交叉熵损失基础上增加押韵惩罚项,引导模型学习正确的韵脚。

def rhyme_penalty(logits, target_tokens, rhyme_dict):
    """
    logits: 模型预测的下一个 token 分布
    target_tokens: 正确答案
    rhyme_dict: 《平水韵》映射表
    """
    penalty = 0
    if target_tokens[-1] in rhyme_dict:
        rhyme_class = rhyme_dict[target_tokens[-1]]
        for token_id, logit in enumerate(logits):
            if idx2token[token_id] in rhyme_dict:
                if rhyme_dict[idx2token[token_id]] != rhyme_class:
                    # 不押韵就狠狠扣分
                    logits[token_id] -= 5.0
    return logits

实操上手:Python 实现

使用 Hugging Face 上的预训练模型快速验证。

pip install transformers torch
from transformers import BertTokenizer, GPT2LMHeadModel
import torch

# 1. 模型&tokenizer 一步到位
tokenizer = BertTokenizer.from_pretrained("ethan-yi/Chinese-Poetry-GPT2")
model = GPT2LMHeadModel.from_pretrained("ethan-yi/Chinese-Poetry-GPT2")
model.eval()

# 2. prompt 越中二,诗越对味
prompt = "小姐姐,今晚的月亮像刚充值的币," * 3
inputs = tokenizer(prompt, return_tensors="pt")

# 3. 生成——temperature=0.8 赛博微醺感
with torch.no_grad():
    outputs = model.generate(**inputs, max_length=128, do_sample=True, temperature=0.8, top_p=0.9, repetition_penalty=1.2)
    poem = tokenizer.decode(outputs[0], skip_special_tokens=True)
    print(poem)

后端接口封装

将模型封装为 API 供前端调用,推荐使用 FastAPI。

# api.py
from fastapi import FastAPI
from pydantic import BaseModel
import uvicorn
from poem_engine import generate_poem

app = FastAPI()

class Keyword(BaseModel):
    keyword: str
    style: str = "tang"  # tang / song / modern

@app.post("/ai/poem")
def get_poem(kw: Keyword):
    prompt = f"{kw.style}风格,关键词:{kw.keyword},写一首七言绝句:"
    poem = generate_poem(prompt, max_len=64)
    return {"poem": poem}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

前端展示与交互

使用 Vue3 + Tailwind 构建古风 UI。

<!-- Vue3 + Tailwind 快速撸一个'赛博文房四宝' -->
<template>
  <div>
    <h1>AI 赛博诗塾</h1>
    <input v-model="keyword" @keyup.enter="getPoem" placeholder="输入关键词,比如'火锅'" />
    <svg v-if="loading" viewBox="0 0 100 100">
      <text x="50" y="50" text-anchor="middle" fill="#92400e" font-size="20">落笔中...</text>
    </svg>
    <div v-if="poem">
      <p v-for="line in poem.split(',')" :key="line">{{ line }}</p>
    </div>
  </div>
</template>
<script setup>
import { ref } from 'vue'
const keyword = ref('')
const poem = ref('')
const loading = ref(false)

async function getPoem() {
  loading.value = true
  const res = await fetch('http://localhost:8000/ai/poem', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ keyword: keyword.value })
  })
  const data = await res.json()
  poem.value = data.poem
  loading.value = false
}
</script>

AI 诗歌的优缺点

优点

  • 效率:GPU 上跑 1 秒可生成多首。
  • 数量:可批量生成不同主题内容。
  • 版权:基于概率生成的文本在法律上通常被视为原创。

缺点

  • 情感假:缺乏真实情感体验,修辞堆砌感强。
  • 文化错:可能出现历史常识错误(如屈原吃粽子)。
  • 创新边界:擅长缝合,难跳出既有模式。

常见问题复盘

1. 乱码问题

中文 GPT 遇到生僻字可能输出 [UNK]。解决:提前扩展 tokenizer 字典。

2. 跑题问题

Prompt 上下文干扰导致主题偏离。解决:使用模板锁死 Prompt 结构。

3. 强行押韵

Temperature 过高导致乱押。解决:后处理检查韵脚或在 logits 阶段加惩罚。

4. 文化常识错误

训练数据高频共现导致的脑补。解决:Prompt 中加入事实约束或使用知识图谱过滤。

进阶技巧

情绪标签法

先喂'情绪向量',再让模型生成。例如:'孤独 + 雨夜 +80 年代老磁带'。

散文→诗压缩

先生成散文,再指令压缩为诗,保留关键意象。

人类半截诗续写

提供上半段,要求 AI 续写下半段,保持对仗与押韵。

彩蛋:藏头诗生成

利用模板将特定汉字嵌入每句开头。

heads = ["张","总","英","明","神","武"]
prompt = f"七律,藏头诗,每句首字依次:{''.join(heads)},风格豪放:"

在这里插入图片描述

目录

  1. AIGC 诗歌创作实战指南与避坑手册
  2. 引言
  3. AIGC 写诗原理
  4. 中文诗的特殊挑战
  5. 主流模型训练机制
  6. 训练数据
  7. Loss 函数优化
  8. 实操上手:Python 实现
  9. 1. 模型&tokenizer 一步到位
  10. 2. prompt 越中二,诗越对味
  11. 3. 生成——temperature=0.8 赛博微醺感
  12. 后端接口封装
  13. api.py
  14. 前端展示与交互
  15. AI 诗歌的优缺点
  16. 优点
  17. 缺点
  18. 常见问题复盘
  19. 1. 乱码问题
  20. 2. 跑题问题
  21. 3. 强行押韵
  22. 4. 文化常识错误
  23. 进阶技巧
  24. 情绪标签法
  25. 散文→诗压缩
  26. 人类半截诗续写
  27. 彩蛋:藏头诗生成
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Pyenv 多版本 Python 环境管理与实战指南
  • 基于 YOLO 与大模型的多场景智能检测系统架构设计
  • 前端分层架构实战:DDD 与 Clean Architecture 落地实践
  • MySQL 表操作实战:创建、修改与删除全解析
  • 机器人动力学:牛顿欧拉法推导与详解
  • Stable Diffusion 秋叶整合包 v4.7 本地部署与入门指南
  • 宇树 G1 机器人 ROS1 二次开发:基于 FAST-LIO 的建图与 RViz 配置
  • KaiwuDB 在 PX4-ROS2 无人机仿真中的时序数据存储实践
  • C 语言快速排序详解:从基础到非递归实现
  • 大语言模型 LoRA 技术综述:原理、应用与训练指南
  • 基于FPGA的高精度TDC设计
  • Linux Ext 系列文件系统原理:从磁盘结构到文件存储
  • C++ 核心概念与常见面试题解析
  • 滑动窗口算法核心思路与四道经典题解析
  • Stable Diffusion 模型加载报错:CheckpointLoaderSimple 错误修复
  • Android Studio 登录 Gitee 与 Gemini 授权回调失败排查
  • Spring Cloud Nacos 核心实战:服务注册、发现与配置中心详解
  • GitHub 核心功能与开发者使用指南
  • Training-Serving Skew 治理:Python+Java+Vue 特征工程全链路测试实战
  • 基于 html2canvas 和 jsPDF 封装 Vue3 页面导出 PDF 工具

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online