news 2026/3/10 1:57:49

Qwen3-0.6B实战项目:做一个会写诗的AI机器人

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qwen3-0.6B实战项目:做一个会写诗的AI机器人

Qwen3-0.6B实战项目:做一个会写诗的AI机器人

1. 引言:让AI学会诗意表达

你有没有想过,一个参数量只有0.6B的语言模型,也能写出打动人心的诗句?今天我们要做的,不是简单地调用大模型API,而是亲手打造一个会写诗的AI机器人——它不仅能理解意境、押韵和节奏,还能根据你的提示即兴创作。

这个项目基于阿里开源的新一代通义千问模型Qwen3-0.6B。虽然它的体积小巧(仅6亿参数),但在诗歌生成这类创意任务上表现惊人。更重要的是,它可以在普通笔记本电脑甚至远程Jupyter环境中轻松运行,无需高端GPU支持。

通过本文,你将学会:

  • 如何快速启动并调用Qwen3-0.6B
  • 构建一个专精“写诗”的AI代理
  • 设计有效的提示词(prompt)来引导诗歌风格
  • 实现流式输出,让AI一边思考一边“吟诵”

整个过程不超过20行代码,适合所有对AI创作感兴趣的开发者、文学爱好者或教育工作者。

2. 环境准备与模型调用

2.1 启动镜像并进入Jupyter

首先,在CSDN星图平台或其他支持的AI开发环境中,选择预置的Qwen3-0.6B镜像,启动后自动跳转至Jupyter Notebook界面。

确保服务地址正确(通常为https://gpu-podxxxxxx-8000.web.gpu.csdn.net),端口为8000,这是后续调用的关键。

2.2 使用LangChain调用本地部署的Qwen3

我们使用langchain_openai模块来对接本地部署的模型服务。尽管名字叫“OpenAI”,但它也兼容任何遵循OpenAI API格式的服务。

from langchain_openai import ChatOpenAI import os # 配置模型连接 chat_model = ChatOpenAI( model="Qwen-0.6B", temperature=0.7, # 控制创造性,值越高越自由发挥 base_url="https://gpu-pod694e6fd3bffbd265df09695a-8000.web.gpu.csdn.net/v1", api_key="EMPTY", # 因为是本地服务,不需要真实密钥 extra_body={ "enable_thinking": True, # 开启思维链模式 "return_reasoning": True, # 返回推理过程(可用于调试) }, streaming=True, # 流式输出,模拟“边想边说” )

说明temperature=0.7是诗歌生成的理想设置——既保留一定规律性,又允许适度跳跃联想。太低会呆板,太高则杂乱。

现在你可以测试一下模型是否正常工作:

response = chat_model.invoke("你是谁?") print(response.content)

你应该能看到类似“我是通义千问Qwen3,由阿里巴巴研发……”的回答。

3. 打造专属写诗AI:从零到一首诗

3.1 定义角色与能力

为了让AI专注于写诗,我们需要在提示词中明确它的“身份”和“任务”。这就像给演员设定剧本和人设。

我们不直接问“写首诗”,而是构建一个完整的上下文环境:

poetry_prompt = """ 你是一位精通古典诗词与中国现代诗的AI诗人,擅长七言绝句、五律、宋词小令以及自由体新诗。 请根据用户提供的主题或场景,创作一首富有意境、语言凝练、情感真挚的中文诗歌。 要求: 1. 使用标准中文,避免生僻字; 2. 注意押韵和平仄(古体诗); 3. 若为现代诗,注重意象组合与留白; 4. 每次只输出诗歌本身,不要解释; 5. 可适当融入哲思或人生感悟。 示例输入:“秋夜思乡” 示例输出: 月落乌啼霜满天, 孤灯照壁忆当年。 故园东望三千里, 一夜西风一鬓斑。 """

3.2 封装成可复用的写诗函数

接下来我们将这个提示固化为系统消息,并封装成一个简洁的函数:

def write_poem(theme): messages = [ ("system", poetry_prompt), ("human", theme) ] response = chat_model.invoke(messages) return response.content

试试看:

print(write_poem("春日赏花"))

你可能会得到这样的结果:

春风拂面柳轻摇, 桃李争妍映小桥。 蝶舞芳丛寻旧梦, 一枝红杏出墙娇。

是不是已经有几分韵味了?

4. 提升诗歌质量:优化提示工程

4.1 细化风格控制

如果你想让AI模仿特定风格,比如李白的豪放、李清照的婉约,或者北岛的现代主义,只需修改 system prompt 即可。

例如,切换到“李清照式婉约词风”:

style_li_qingzhao = """ 你是一位宋代女词人,文风细腻哀婉,善用白描手法抒发离愁别绪。 请以《如梦令》或《声声慢》格律为基础,创作一首短词,描写孤独、思念或时光流逝之感。 语言要含蓄深情,多用自然意象(如雨、雁、残花、黄昏)。""" def write_lyric(theme, style="default"): prompt = style if style != "default" else poetry_prompt messages = [("system", prompt), ("human", theme)] return chat_model.invoke(messages).content

调用:

print(write_lyric("雨夜独坐", style_li_qingzhao))

输出可能如下:

细雨敲窗声渐悄, 孤影对灯昏晓。 往事几回肠断处, 唯有寒更漏。 欲寄锦书无雁过, 庭院空锁春草。 梦里相逢君不见, 泪湿罗衣早。

4.2 支持多种诗歌类型

我们可以进一步扩展功能,让用户指定诗歌类型:

POETRY_TYPES = { "gushi": "创作一首五言或七言古诗,讲究对仗与意境。", "jueju": "写一首七言绝句,四句二十八字,押平声韵。", "ci": "按《浣溪沙》词牌填词,上下阕各三句。", "xiandai": "写一首现代自由诗,强调意象与情绪张力。" } def write_poem_advanced(theme, genre="jueju"): instruction = POETRY_TYPES.get(genre, POETRY_TYPES["jueju"]) full_prompt = f"{poetry_prompt}\n\n特别要求:{instruction}" messages = [ ("system", full_prompt), ("human", theme) ] return chat_model.invoke(messages).content

使用方式:

print(write_poem_advanced("登高望远", "gushi")) print("\n---\n") print(write_poem_advanced("初恋回忆", "xiandai"))

你会发现,不同体裁下AI的表现截然不同:古诗工整典雅,现代诗则更具象征性和开放解读空间。

5. 实战案例:做一个互动式诗歌机器人

5.1 加入流式输出体验

前面我们设置了streaming=True,但还没真正利用它。我们可以借助 LangChain 的回调机制,实现“逐字输出”,仿佛看到AI在纸上一笔一划写下诗句。

from langchain_core.callbacks import StreamingStdOutCallbackHandler # 重新定义支持实时打印的模型 streaming_model = ChatOpenAI( model="Qwen-0.6B", temperature=0.7, base_url="https://gpu-pod694e6fd3bffbd265df09695a-8000.web.gpu.csdn.net/v1", api_key="EMPTY", callbacks=[StreamingStdOutCallbackHandler()], # 实时输出到终端 streaming=True ) def interactive_poem(theme, genre="jueju"): instruction = POETRY_TYPES.get(genre, POETRY_TYPES["jueju"]) full_prompt = f"{poetry_prompt}\n\n特别要求:{instruction}" messages = [ ("system", full_prompt), ("human", theme) ] return streaming_model.invoke(messages)

当你运行interactive_poem("月下散步")时,你会看到文字像打字机一样一个个出现,带来强烈的沉浸感。

5.2 构建简易交互循环

最后,我们可以加一个简单的命令行交互,让它成为一个真正的“诗歌机器人”:

def poetry_bot(): print("🌸 欢迎使用AI诗歌机器人!输入‘退出’结束对话。\n") while True: user_input = input("请输入诗歌主题(如:秋思、江南春色):").strip() if user_input in ["退出", "quit", "exit"]: print("感谢使用,愿诗意常伴左右。") break genre = input("选择诗体(gushi/ jueju/ ci/ xiandai,默认jueju):").strip() or "jueju" print("\n 正在为你创作...\n") try: result = interactive_poem(user_input, genre) print(f"\n\n 完成!以下是为你写的诗:\n{'='*40}") print(result.content) print("="*40 + "\n") except Exception as e: print(f"生成失败:{str(e)}") # 启动机器人 # poetry_bot()

运行效果如下:

🌸 欢迎使用AI诗歌机器人!输入‘退出’结束对话。 请输入诗歌主题(如:秋思、江南春色):夏夜听蝉 选择诗体(gushi/ jueju/ ci/ xiandai,默认jueju):xiandai 正在为你创作... 夏夜听蝉...

随后逐字输出:

树影婆娑,热浪未歇, 一声蝉鸣划破长夜。 它唱着灼烧的夏天, 也唱着无人倾听的告别。

6. 总结:小模型也能有大情怀

通过这个实战项目,我们完成了一个完整闭环:
从环境搭建 → 模型调用 → 提示设计 → 功能封装 → 交互实现,最终打造出一个能写诗、懂风格、会表达的AI机器人。

6.1 关键收获回顾

  1. 轻量级模型也能胜任创意任务
    Qwen3-0.6B 虽然只有6亿参数,但在经过良好提示引导后,完全能够生成符合审美规范的诗歌作品。

  2. 提示工程决定AI表现上限
    我们没有训练模型,也没有微调权重,仅靠精心设计的 system prompt 就让它“变身”为专业诗人。这就是提示工程的力量。

  3. 流式输出提升用户体验
    结合streaming=True和回调函数,可以让AI响应更具人性化,仿佛真的在“思考”和“书写”。

  4. 可扩展性强,易于集成
    这个框架可以轻松迁移到网页应用、微信机器人、智能音箱等场景,成为AI文艺助手的核心模块。

6.2 下一步建议

  • 尝试接入Gradio或Streamlit,做成可视化网页应用
  • 增加“评分反馈”机制,收集用户对诗歌的喜爱程度,用于后续优化
  • 让AI不仅能写诗,还能赏析诗、讲解典故,变成“诗词导师”
  • 探索语音合成接口,让AI亲自“朗诵”自己写的诗

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 14:13:16

YOLO26验证集设置:val参数在训练过程中的监控作用

YOLO26验证集设置:val参数在训练过程中的监控作用 YOLO26作为Ultralytics最新发布的高性能目标检测模型,其训练稳定性与泛化能力高度依赖于验证集(validation set)的合理配置。很多用户在首次使用YOLO26镜像时发现:训…

作者头像 李华
网站建设 2026/3/7 7:28:52

fft npainting lama输出目录自定义:修改save路径实战

fft npainting lama输出目录自定义:修改save路径实战 1. 背景与目标 你可能已经用过 fft npainting lama 这个图像修复工具,它基于 FFT(快速傅里叶变换)和深度学习模型实现高质量的图像重绘与物品移除。默认情况下,修…

作者头像 李华
网站建设 2026/3/5 16:10:57

MinerU提取表格不准?table-config参数调优指南

MinerU提取表格不准?table-config参数调优指南 1. 问题背景:为什么你的PDF表格提取总是出错? 你有没有遇到过这种情况:用MinerU处理一份带复杂表格的PDF文档,结果生成的Markdown里表格乱成一团——列对不齐、数据错位…

作者头像 李华
网站建设 2026/3/10 0:40:20

YOLOv10可视化结果展示,Jupyter Notebook超方便

YOLOv10可视化结果展示,Jupyter Notebook超方便 你有没有这样的经历:刚跑完一个目标检测模型,迫不及待想看看它到底识别出了什么?打开终端、运行命令、保存图片、再手动查看——这一套流程下来,别说“实时”了&#x…

作者头像 李华
网站建设 2026/3/7 15:39:37

模型加载报错怎么办?DeepSeek-R1-Distill-Qwen-1.5B故障排查手册

模型加载报错怎么办?DeepSeek-R1-Distill-Qwen-1.5B故障排查手册 你兴冲冲地复制完命令,敲下回车,满怀期待等着那个熟悉的 Web 界面弹出来——结果终端里突然跳出一串红色报错:OSError: Cant load tokenizer...、torch.cuda.OutO…

作者头像 李华