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 关键收获回顾
轻量级模型也能胜任创意任务
Qwen3-0.6B 虽然只有6亿参数,但在经过良好提示引导后,完全能够生成符合审美规范的诗歌作品。提示工程决定AI表现上限
我们没有训练模型,也没有微调权重,仅靠精心设计的 system prompt 就让它“变身”为专业诗人。这就是提示工程的力量。流式输出提升用户体验
结合streaming=True和回调函数,可以让AI响应更具人性化,仿佛真的在“思考”和“书写”。可扩展性强,易于集成
这个框架可以轻松迁移到网页应用、微信机器人、智能音箱等场景,成为AI文艺助手的核心模块。
6.2 下一步建议
- 尝试接入Gradio或Streamlit,做成可视化网页应用
- 增加“评分反馈”机制,收集用户对诗歌的喜爱程度,用于后续优化
- 让AI不仅能写诗,还能赏析诗、讲解典故,变成“诗词导师”
- 探索语音合成接口,让AI亲自“朗诵”自己写的诗
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。