vault backup: 2026-06-03 10:22:41
This commit is contained in:
@@ -0,0 +1,216 @@
|
||||
# 13. 标签驱动提示词工程
|
||||
|
||||
> **一句话概括**:40+ 预定义标签映射到精确的图像生成指令,保障风格一致性与管线友好性。
|
||||
|
||||
---
|
||||
|
||||
## 处理流程
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["用户选择标签\n+ 输入描述"] --> B["Tag Mapper\n标签→指令映射"]
|
||||
B --> C["Prompt Template\n三段式结构组装"]
|
||||
C --> D{"LLM 可用?"}
|
||||
D -->|"是"| E["PromptOptimizer\nLLM 精炼"]
|
||||
D -->|"否"| F["Fallback Template\n模板生成"]
|
||||
E --> G["Final Prompt\n最终提示词"]
|
||||
F --> G
|
||||
G --> H["AssetGenerator\n文生图 API"]
|
||||
|
||||
style B fill:#7c4dff,stroke:#333,color:#fff
|
||||
style D fill:#ff9800,stroke:#333,color:#fff
|
||||
style G fill:#4caf50,stroke:#333,color:#fff
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 标签分类体系
|
||||
|
||||
系统内置 40+ 预定义标签,分为 **7 大类别**,每条标签精确映射到一条图像生成指令。
|
||||
|
||||
### 内容类型 — 决定布局与格式
|
||||
|
||||
| 标签 | 映射指令要点 |
|
||||
|------|-------------|
|
||||
| `瓦片/图块` | 瓦片集,可无缝拼接,网格排列,白色背景 |
|
||||
| `背景/远景` | 三层结构(远景/中景/前景),视差滚动适配 |
|
||||
| `前景/装饰` | 独立遮挡物,白色背景,可叠加 |
|
||||
| `图集` | 多元素打包,网格排列,白色背景 |
|
||||
| `纹理` | 可无缝平铺,白色背景 |
|
||||
| `序列帧` | 连续动画帧,网格排列,标注方向和帧数 |
|
||||
| `纸娃娃部件` | 可组合散件,统一比例和锚点 |
|
||||
|
||||
### 美术风格 — 决定渲染技术
|
||||
|
||||
| 标签 | 映射指令要点 |
|
||||
|------|-------------|
|
||||
| `像素` | 严格像素网格,无抗锯齿,有限色盘 |
|
||||
| `卡通` | 粗轮廓线,明亮饱和色彩,夸张比例 |
|
||||
| `手绘` | 自然笔触纹理,不规则线条 |
|
||||
| `矢量` | 干净几何形状,平滑曲线 |
|
||||
| `扁平` | 无阴影或极少阴影,纯色块面 |
|
||||
|
||||
### 色调配色
|
||||
|
||||
| 标签 | 映射指令要点 |
|
||||
|------|-------------|
|
||||
| `暖色` | 红橙黄为主,温暖活力氛围 |
|
||||
| `冷色` | 蓝青紫为主,冷静神秘氛围 |
|
||||
| `鲜艳` | 高饱和度,强烈对比 |
|
||||
| `柔和` | 低饱和度,温和内敛 |
|
||||
| `单色` | 单一色相,明暗层次 |
|
||||
|
||||
### 线条粗细
|
||||
|
||||
| 标签 | 映射指令要点 |
|
||||
|------|-------------|
|
||||
| `无` | 无线条轮廓,纯色块面 |
|
||||
| `细线` | 0.5-1px,细腻精致 |
|
||||
| `中等` | 1-2px,清晰明确 |
|
||||
| `粗线` | 2-4px,粗犷有力 |
|
||||
|
||||
### 场景氛围
|
||||
|
||||
| 标签 | 映射指令要点 |
|
||||
|------|-------------|
|
||||
| `森林` | 树木、藤蔓、蘑菇、落叶 |
|
||||
| `地牢` | 石砖墙壁、火把、蛛网 |
|
||||
| `城市` | 建筑、街道、路灯 |
|
||||
| `太空` | 星云、行星、飞船 |
|
||||
| `水下` | 珊瑚、水草、气泡 |
|
||||
| `沙漠` | 沙丘、仙人掌、绿洲 |
|
||||
|
||||
### 光照效果
|
||||
|
||||
| 标签 | 映射指令要点 |
|
||||
|------|-------------|
|
||||
| `明亮` | 充足自然光,无深阴影 |
|
||||
| `昏暗` | 低光照,柔和阴影 |
|
||||
| `戏剧` | 强烈明暗对比,聚光灯效果 |
|
||||
| `霓虹` | 高饱和彩色光源,赛博朋克辉光 |
|
||||
|
||||
### 情绪基调
|
||||
|
||||
| 标签 | 映射指令要点 |
|
||||
|------|-------------|
|
||||
| `欢快` | 明亮色彩,圆润造型 |
|
||||
| `黑暗` | 深色调,尖锐造型 |
|
||||
| `神秘` | 朦胧效果,未知元素 |
|
||||
| `史诗` | 宏大场面,壮观远景 |
|
||||
| `平静` | 柔和色彩,开阔空间 |
|
||||
|
||||
---
|
||||
|
||||
## 精灵图特殊处理
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
T["用户标签"] --> G{"包含网格标签?\n瓦片/图集/序列帧/纸娃娃"}
|
||||
G -->|"是"| S["注入网格布局指令\n白色背景 + 8-16px 间隙\n投影法可检测"]
|
||||
G -->|"否"| N["标准布局指令"]
|
||||
S --> P["Prompt 构建"]
|
||||
N --> P
|
||||
```
|
||||
|
||||
当标签命中 `gridLayoutTags` 集合时,自动注入网格布局专用指令:
|
||||
|
||||
- **纯白色背景** (`#FFFFFF`)
|
||||
- **帧间 8-16px 纯白间隙**
|
||||
- **间隙内不得有任何像素**
|
||||
- **确保投影法能可靠检测间隙**
|
||||
|
||||
这些指令对下游的 `SplitSprite` 切割算法至关重要。
|
||||
|
||||
---
|
||||
|
||||
## 未知标签回退
|
||||
|
||||
当用户输入系统未预定义的标签时,不会报错,而是降级为通用风格描述:
|
||||
|
||||
```go
|
||||
func tagToInstruction(tag string) string {
|
||||
if inst, ok := tagInstruction[tag]; ok {
|
||||
return inst
|
||||
}
|
||||
// 未知标签:作为风格修饰词处理
|
||||
return fmt.Sprintf("风格特征: %s(用户自定义标签,按其字面含义应用到画面中)", tag)
|
||||
}
|
||||
```
|
||||
|
||||
这保证了系统的**向前兼容** — 新增标签无需修改核心逻辑。
|
||||
|
||||
---
|
||||
|
||||
## PromptOptimizer 节点
|
||||
|
||||
PromptOptimizer 是 Eino 管线的第一个节点,负责将标签指令组装为最终提示词。
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph "输入"
|
||||
A["全局风格提示词\nprojectStyle"]
|
||||
B["任务描述\nprompt + userNote"]
|
||||
C["标签指令\ntagInstructions"]
|
||||
D["拒绝原因\nqualityFeedback\n(重试时)"]
|
||||
end
|
||||
|
||||
subgraph "PromptOptimizer"
|
||||
E["buildMetaPrompt\n组装元提示词"]
|
||||
F{"LLM 可用?"}
|
||||
G["callLLMRefine\nLLM 精炼"]
|
||||
H["fallbackRefine\n模板生成"]
|
||||
end
|
||||
|
||||
subgraph "输出"
|
||||
I["Final Prompt\n三段式结构"]
|
||||
end
|
||||
|
||||
A --> E
|
||||
B --> E
|
||||
C --> E
|
||||
D --> E
|
||||
E --> F
|
||||
F -->|"API Key 已配置"| G
|
||||
F -->|"未配置 / 调用失败"| H
|
||||
G --> I
|
||||
H --> I
|
||||
```
|
||||
|
||||
三段式输出结构:
|
||||
|
||||
| 段落 | 内容 | 示例 |
|
||||
|------|------|------|
|
||||
| 【主题】 | 画面主体与场景 | "一个融合像素风格的游戏角色精灵图..." |
|
||||
| 【风格】 | 艺术风格与视觉特征 | "美术风格: 像素画;色调: 暖色系..." |
|
||||
| 【技术】 | 分辨率和格式参数 | "输出格式: spritesheet;纯白色背景..." |
|
||||
|
||||
---
|
||||
|
||||
## LLM 回退机制
|
||||
|
||||
当 LLM 不可用时(API Key 未配置 / 网络故障),系统自动降级到模板生成:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["callLLMRefine"] --> B{"API Key\n已配置?"}
|
||||
B -->|"否"| F["fallbackRefine\n模板回退"]
|
||||
B -->|"是"| C["调用 Chat API"]
|
||||
C --> D{"调用成功?"}
|
||||
D -->|"是"| E["返回 LLM 优化结果"]
|
||||
D -->|"否"| F
|
||||
F --> G["解析标签\n组装三段式提示词"]
|
||||
G --> H["返回模板生成结果"]
|
||||
```
|
||||
|
||||
模板回退同样遵循标签驱动逻辑,保证即使没有 LLM 参与,生成的提示词也具备结构化和一致性。
|
||||
|
||||
---
|
||||
|
||||
## 关联文档
|
||||
|
||||
| 文档 | 关系 |
|
||||
|------|------|
|
||||
| [05 - 生成管线](05-generation-pipeline.md) | PromptOptimizer 是管线第一阶段 |
|
||||
| [06 - 精灵图处理](06-sprite-processing.md) | 网格布局指令影响切割算法 |
|
||||
| [01 - 系统总览](01-system-overview.md) | 提示词工程在整体架构中的位置 |
|
||||
| [00 - 索引](00-index.md) | 返回文档总览 |
|
||||
Reference in New Issue
Block a user