引言
提示词工程(Prompt Engineering)是 AI 应用中决定输出质量的关键环节。在鸿蒙壁纸大师中,提示词的质量直接决定了最终生成的壁纸是否符合用户的审美期待。
本文将深入分析项目中的双层提示词优化策略:
- 第一层 :根据用户选择的风格、主题和场景,使用
build_image_prompt()构建结构化的基础 prompt - 第二层:调用 LLM 对基础 prompt 进行艺术化增强和语义丰富
同时还涵盖 System Prompt 设计、负向提示词、8 大核心艺术要素等内容。
关键概念:提示词工程不是简单的「写描述」,而是一个涉及结构化约束、多轮优化、负向控制的系统工程。优秀的提示词应同时考虑「告诉模型做什么」和「告诉模型不做什么」。
一、双层提示词优化策略
1.1 优化流程总览
用户输入/选择
↓
┌─────────────────────────────────────┐
│ 第一层:基础 prompt 构建 │
│ build_image_prompt(style, theme, │
│ screen_type, resolution) │
│ → 结构化、标准化的基础 prompt │
│ → 包含风格、主题、场景、分辨率约束 │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ 第二层:LLM 艺术增强 │
│ enhance_prompt_with_llm(base_prompt) │
│ → 调用 doubao-seed-2-0-mini 模型 │
│ → 添加艺术流派、色彩方案、材质纹理 │
│ → 确保输出结构规范 │
└─────────────────────────────────────┘
↓
最终 prompt → 调用文生图模型生成壁纸

上图展示了双层提示词优化策略:第一层构建结构化基础 prompt,第二层通过 LLM 进行艺术增强,最终生成高质量壁纸
1.2 第一层:基础 prompt 构建
python
# services/wallpaper_flow_service.py
def build_image_prompt(
style: str,
theme: str,
screen_type: str,
resolution: str
) -> Tuple[str, str]:
"""
构建图片生成提示词
Args:
style: 风格名称(如"水墨国风")
theme: 主题名称(如"青峦远山")
screen_type: 屏幕类型(lock_screen 或 home_screen)
resolution: 分辨率(如 1440x2560)
Returns:
(正向提示词,负向提示词)
"""
# 计算宽高比
if resolution:
try:
width, height = map(int, resolution.split('x'))
if width > height:
aspect_ratio = "横屏 3:2"
else:
aspect_ratio = "竖屏 9:16"
except (ValueError, AttributeError):
aspect_ratio = "竖屏 9:16"
else:
aspect_ratio = "竖屏 9:16"
# 确定场景描述(锁屏 vs 主屏的差异化处理)
if screen_type == "home_screen":
scene_desc = (
"整体画面柔和虚化、低对比度、留白充足,"
"四周简洁不杂乱,不遮挡应用图标与卡片,"
"风格简约高级,色调统一细腻"
)
else: # lock_screen
scene_desc = (
"画面层次精致优雅,视觉柔和唯美,"
"不遮挡顶部时间区域"
)
# 构建正向提示词
positive_prompt = (
f"生成一张 {style} 的 {aspect_ratio} 壁纸,"
f"画面包含 {theme},比例为{aspect_ratio.split()[-1]}。"
f"{scene_desc}。高级艺术氛围,柔光质感。"
f"8K 超高清,无文字、无水印、无多余杂物。"
)
# 负向提示词
negative_prompt = (
"丑陋、杂乱、刺眼、文字、水印、LOGO、低俗、"
"过度饱和、高对比、噪点、变形、低清、像素模糊、"
"多余杂物、主题堆砌、色彩脏乱、卡通化、俗气"
)
return positive_prompt, negative_prompt
核心设计理念:
- 场景差异化:主屏壁纸需要虚化留白以适应图标,锁屏壁纸则强调视觉层次
- 分辨率自适应:根据分辨率自动确定横竖屏比例
- 负向提示词硬编码:避免 LLM 优化时遗漏关键约束
- 基础模板稳定可靠:确保每次生成的壁纸都符合基本质量标准
设计提示:基础模板中的负向提示词不经过 LLM 优化,这是有意为之。LLM 在增强 prompt 时可能会「遗忘」或「弱化」某些约束条件,而文字、水印、LOGO 等禁止项是严格的合规需求,不可妥协。
1.3 第二层:LLM 艺术增强
基础 prompt 虽然结构清晰,但艺术表现力不足。第二层通过调用 LLM 进行深度增强:
python
# services/wallpaper_service.py
async def enhance_prompt_with_llm(
user_prompt: str,
context_messages: List[Dict[str, str]] = None,
log_id: str = None
) -> str:
"""
调用语言模型完善用户输入的 prompt
返回优化后的 prompt
"""
system_prompt = """你是一个专业的艺术插画提示词优化专家。
用户会输入简单的描述(可能包含主题、风格信息),
你需要将其优化为具有强烈艺术风格的插画提示词。
核心原则:
- 禁止写实风格,必须是艺术插画
- 强调艺术性、设计感、高级感
- 融合多种艺术流派和质感
必须包含的核心要素:
1. 艺术风格定位:高定艺术插画、绘本风格、平面插画等
2. 主体元素:核心视觉元素具体化
3. 色彩方案:主色调+辅助色调,色彩情绪
4. 背景与材质:材质纹理、光影特征
5. 构图与排版:大师级排版,大量留白
6. 艺术质感:电影感、绘本感、版画质感等(至少3种)
7. 情绪氛围:梦幻、诗意、朦胧、宁静、治愈
8. 限制条件:不要出现文字
输出结构模板:
一张【主题】风格的艺术插画壁纸,融合【艺术流派】美学。
画面主体为【主体元素】,采用【主色调】与【辅助色调】,
呈现【情绪氛围】。背景使用【材质纹理】,带有【光影特征】。
构图采用【构图方式】,大量留白,点线面层次丰富。
融合【艺术质感关键词】。高定艺术插画,大师级排版,
极简与极繁结合,梦幻诗意,动态定格,电影级氛围。
不要出现文字。"""
messages = [{"role": "system", "content": system_prompt}]
if context_messages:
messages.extend(context_messages[-10:])
messages.append({
"role": "user",
"content": f"请优化以下绘画提示词:{user_prompt}"
})
# 调用火山引擎 LLM(流式输出)
async with client.stream(
"POST",
f"{settings.VOLCANIC_BASE_URL}/chat/completions",
headers={
"Authorization": f"Bearer {settings.VOLCANIC_API_KEY}",
},
json={
"model": settings.LANGUAGE_MODEL, # doubao-seed-2-0-mini
"messages": messages,
"max_tokens": 1024,
"temperature": 0.7,
"stream": True,
},
) as response:
enhanced_prompt = ""
async for line in response.aiter_lines():
# 解析 SSE 流式响应,拼接完整 prompt
# ...
enhanced_prompt += content
return enhanced_prompt
二、System Prompt 设计详解
2.1 壁纸闲聊 System Prompt
用于闲聊场景下的 LLM 调用:
python
# services/wallpaper_service.py
system_prompt = """你是一个友好的 AI 壁纸助手。你可以和用户聊天,
但主要专长是帮助用户生成各种风格的壁纸。
如果用户询问壁纸相关的问题,请热情地介绍你的能力;
如果是闲聊,请简洁友好地回应,并适时引导用户描述他们想要的壁纸。"""
设计要点:
- 明确角色定位:告诉模型它是"AI 壁纸助手"
- 定义专业边界:主要专长是壁纸生成
- 交互引导:闲聊时适时引导回壁纸主题
2.2 意图识别 System Prompt
python
# utils/intent_classifier.py
INTENT_SYSTEM_PROMPT = """你是一个意图识别助手。请分析用户的输入,判断用户的意图。
可选的意图类型:
1. generate_wallpaper - 生成壁纸
2. chat - 闲聊
3. modify_wallpaper - 修改壁纸
4. regenerate - 重新生成
5. cancel - 取消
6. clear_context - 清理上下文
7. unknown - 未知
判断规则:
- 问候语、感谢语、告别语 -> chat
- 停止、取消、不要、别等 -> cancel
- 清空、重新开始 -> clear_context
- 有上下文时,"换一张"、"重新来" -> regenerate
- 有上下文时,修改具体特征 -> modify_wallpaper
- 描述场景、物体、风格 -> generate_wallpaper
请返回 JSON 格式:
- intent: 意图类型
- confidence: 置信度 (0-1)
- reason: 判断理由
- topic: 如果是 generate_wallpaper,提取壁纸主题;否则为空
"""
设计要点:
- 结构化输出要求:要求模型返回 JSON 格式,便于程序解析
- 枚举值约束:只允许返回预定义的7种意图类型
- 低温参数 :
temperature=0.1确保分类结果的一致性 - 上下文感知:将"是否有历史壁纸"等信息传递给模型
2.3 主题生成 System Prompt
python
# wallpaper_flow_service.py
system_prompt = f"""你是一个壁纸主题设计专家。
请为「{style}」风格的壁纸设计 {count} 个主题选项。
要求:
1. 主题名称要简短、有诗意、2-6 个中文字符
2. 主题要符合该风格的美学特征
3. 只返回 JSON 数组,不要其他说明
4. 例如:["远山暮色", "林间晨光", "湖畔倒影", "雪地初晴"]"""
设计要点:
- 格式约束:要求返回纯 JSON 数组,避免解析错误
- 字符数限制:2-6 个中文字符,确保主题简洁
- 示例引导:通过 Few-shot 示例提示期望的输出格式
三、艺术插画提示词八要素
从 enhance_prompt_with_llm() 的 System Prompt 中可以提炼出艺术插画提示词八要素:
| # | 要素 | 说明 | 示例 |
|---|---|---|---|
| 1 | 艺术风格定位 | 确定画面整体艺术风格 | 高定艺术插画、绘本风格、极简主义 |
| 2 | 主体元素 | 核心视觉元素具体化 | 一只简化线条的橘色猫咪剪影 |
| 3 | 色彩方案 | 主色调+辅助色调+色彩情绪 | 暖橙色与奶油白,呈现宁静治愈 |
| 4 | 背景与材质 | 材质纹理和光影特征 | 细腻亚麻纹理,柔和散射光 |
| 5 | 构图与排版 | 构图方式和空间布局 | 极简留白式,点线面层次丰富 |
| 6 | 艺术质感 | 至少3种艺术质感叠加 | 绘本感、版画质感、胶片颗粒感 |
| 7 | 情绪氛围 | 画面传递的情感氛围 | 梦幻、诗意、朦胧、宁静、治愈 |
| 8 | 限制条件 | 不能出现的内容 | 不要出现文字 |
3.1 优化前后对比
以用户输入"水墨风山水"为例:
优化前(基础 prompt):
生成一张 水墨国风 的 竖屏 9:16 壁纸,
画面包含 远山轮廓,比例为9:16。
画面层次精致优雅,视觉柔和唯美,不遮挡顶部时间区域。
高级艺术氛围,柔光质感。8K 超高清,无文字、无水印、无多余杂物。
优化后(LLM 增强):
一张水墨国风主题的艺术插画壁纸,融合宋代山水画美学。
画面主体为远山轮廓层叠,采用墨色与青灰色渐变,
呈现诗意朦胧氛围。背景使用宣纸质感纹理,
带有水墨晕染光影。构图采用深远式构图,大量留白,
点线面层次丰富。融合版画质感、宣纸肌理、水墨渲染。
高定艺术插画,传统与现代结合,梦幻诗意,电影级氛围。
不要出现文字。
优化后的 prompt 增加了艺术流派参考(宋画)、材质细节(宣纸、墨色)、构图技巧(深远式),以及更丰富的艺术质感描述,能产生更具艺术感的壁纸。
四、负向提示词设计
负向提示词(Negative Prompt)是文生图模型的重要输入,告诉模型不要生成什么。
4.1 壁纸大师的负向提示词
python
negative_prompt = (
"丑陋、杂乱、刺眼、文字、水印、LOGO、低俗、"
"过度饱和、高对比、噪点、变形、低清、像素模糊、"
"多余杂物、主题堆砌、色彩脏乱、卡通化、俗气"
)
4.2 负向提示词的分类策略
| 类别 | 关键词 | 目的 |
|---|---|---|
| 质量过滤 | 丑陋、杂乱、刺眼、低俗 | 避免低质量输出 |
| 技术问题 | 噪点、变形、低清、像素模糊 | 确保图像质量 |
| 内容限制 | 文字、水印、LOGO | 合规性要求 |
| 风格控制 | 卡通化、俗气 | 确保艺术插画风格 |
| 色彩控制 | 过度饱和、高对比、色彩脏乱 | 保证色彩和谐 |
| 构图控制 | 多余杂物、主题堆砌 | 确保简洁构图 |
4.3 为什么负向提示词要硬编码
在 build_image_prompt() 中,负向提示词是硬编码的,不经过 LLM 增强。原因是:
- 负向提示词的精确性要求高:少量关键词的遗漏可能导致大量不合格图片
- LLM 可能"遗忘"约束:模型在增强过程中可能忽略或曲解某些禁止项
- 合规性不可协商:文字、水印等限制是严格需求,不能被"优化"掉
五、提示词工程的性能优化
5.1 超时控制
LLM 调用的超时控制是提示词工程的重要环节:
python
# services/wallpaper_service.py
# 基础 prompt 优化(非流式,快速返回)
async with httpx.AsyncClient(timeout=15.0) as client:
...
# LLM 增强 prompt(流式,需更长时间)
async with httpx.AsyncClient(timeout=60.0) as client:
...
# 文生图生成(最长超时)
async with httpx.AsyncClient(timeout=120.0) as client:
...
5.2 上下文窗口管理
上下文长度直接影响成本和响应速度:
python
# services/wallpaper_service.py
if context_messages:
# 只保留最近的上下文,避免 token 过多
messages.extend(context_messages[-6:]) # 闲聊场景取6条
...
messages.extend(context_messages[-10:]) # 提示词优化取10条
不同场景使用不同的上下文窗口大小:
- 闲聊:保留最近6条对话,保持轻快响应
- 提示词优化:保留最近10条,获取更丰富的上下文
- 意图识别:仅传递关键状态信息,不传完整上下文
5.3 流式 vs 非流式
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 提示词优化 │ │ 意图识别 │ │ 闲聊对话 │
│ (流式/非流式)│ │ (非流式) │ │ (流式) │
│ 需要完整输出 │ │ 仅需JSON │ │ 逐token输出 │
│ 来构建下一步 │ │ 响应可解析 │ │ 以提升体验 │
└──────────────┘ └──────────────┘ └──────────────┘
- 提示词优化:使用流式,但最终拼接为完整字符串再传递给文生图模型
- 意图识别:使用非流式,等待完整 JSON 响应
- 闲聊对话:使用流式,逐 token 推送给用户
六、提示词优化的最佳实践总结
6.1 分层优化策略
| 层级 | 方法 | 优点 | 缺点 |
|---|---|---|---|
| 模板化 | 固定字符串拼接 | 速度快、稳定可靠 | 缺乏艺术性 |
| LLM 增强 | 调用语言模型优化 | 艺术表现力强 | 耗时增加 |
| 负向提示词 | 硬编码禁止内容 | 安全性高 | 不够灵活 |
6.2 质量保证清单
- System Prompt 明确定义角色和边界
- 输出格式结构化(JSON 或模板)
- 提供 Few-shot 示例引导期望输出
- 负向提示词不与正向提示词矛盾
- 温度参数根据任务类型调整(分类用低温,生成用中温)
- 上下文窗口大小适配场景需求
- 超时时间根据任务复杂度设置
- 兜底方案(LLM 失败时使用默认模板)
6.3 常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 提示词被 LLM 改写过度 | 温度过高或约束不足 | 降低 temperature,增加结构化约束 |
| 生成图片含文字 | 负向提示词未生效 | 在正向提示词中也添加"无文字"约束 |
| 图片风格偏离 | 风格描述不够精确 | 参考艺术家风格或具体艺术流派 |
| 响应超时 | 提示词过长 | 控制上下文条数,精简 System Prompt |
七、常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| LLM 增强后 prompt 偏离原意 | temperature 过高或约束不足 | 降低 temperature 至 0.5,增加结构化模板约束 |
| 生成图片出现文字 | 负向提示词被 LLM 弱化 | 正向 prompt 中也显式添加「无文字」约束 |
| 图片风格不稳定 | 风格描述过于抽象 | 引用具体艺术流派或艺术家风格作为参考 |
| 流式调用超时 | 网络波动或 prompt 过长 | 缩短上下文窗口,增加流式超时时间至 60s |
八、性能优化建议
提示词工程的性能优化直接影响用户体验,以下是一些实测有效的策略:
python
# 根据任务类型选择 temperature
TEMPERATURE_MAP = {
"intent_classification": 0.1, # 低温度,确保分类一致
"prompt_enhancement": 0.7, # 中等温度,平衡创意与稳定
"chat": 0.7, # 闲聊,适度创造性
"theme_generation": 0.8, # 主题生成,较高创造性
}
| 优化方向 | 措施 | 效果 |
|---|---|---|
| 缓存基础 prompt | 相同参数命中缓存 | 省去 LLM 调用,< 1ms |
| 压缩 System Prompt | 精简冗余描述 | Token 减少 30% |
| 上下文窗口裁剪 | 仅保留最近 6-10 条 | 降低延迟和成本 |
| 流式调用 | 避免非流式超时 | 提升用户体验 |
九、总结
本文详细解析了鸿蒙壁纸大师的提示词工程体系,核心内容:
- 双层优化策略:基础模板构建 + LLM 艺术增强,兼顾效率与质量
- 三种 System Prompt:闲聊、意图识别、主题生成,各有侧重
- 八要素提示词模板:艺术风格、主体元素、色彩方案、材质等
- 负向提示词设计:硬编码关键约束,确保输出质量和合规性
- 性能优化:超时控制、上下文窗口、流式与非流式的选择
提示词工程是一个持续迭代的过程,需要根据实际输出质量不断调整 System Prompt 的措辞和约束条件。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源: