TEMPLATE_OPTIMIZATION.md•4.09 kB
# 提示词模板优化说明
## 🎯 问题描述
使用"公众号封面"模板生成图片时,生成的图片中会包含不需要的文字:
- "21:9"
- "微信公众号"
- "画面比例"等描述性文字
**原因**: 提示词中包含了 `"画面比例:21:9 超宽屏构图,横向延展"` 这样的描述,AI 将其理解为需要渲染到图片中的文字内容。
## ✅ 解决方案
### 1. **分离内容和参数**
将画面比例从提示词内容中分离出来,作为独立的参数:
**修改前:**
```python
"公众号封面": {
"template": """根据内容主题自动匹配关键词和设计风格。
关键词符合纸雕风格融合水彩层次美学...
主题内容:{keyword}
画面比例:21:9 超宽屏构图,横向延展""", # ❌ 会被渲染为文字
"default_size": "2K",
"description": "公众号封面风格 - 纸雕水彩美学 (21:9超宽屏)"
}
```
**修改后:**
```python
"公众号封面": {
"template": """主题内容:{keyword}
纸雕风格融合水彩层次美学,字体结构立体精致如水彩纸雕工艺...""",
"default_size": "2K",
"aspect_ratio": "21:9", # ✅ 独立参数
"description": "封面风格 - 纸雕水彩美学 (21:9超宽屏)"
}
```
### 2. **优化提示词内容**
- ✅ 移除 "画面比例:21:9 超宽屏构图" 等描述性文字
- ✅ 移除 "公众号"、"微信" 等可能被渲染的词汇
- ✅ 保留核心的风格描述 (纸雕、水彩、层次美学等)
- ✅ 简化开头,直接从主题内容开始
### 3. **使用 ratio 参数**
在提示词末尾添加 `ratio: 21:9` 格式,让 AI 理解这是参数而不是内容:
```python
# 在 apply_template 函数中
if aspect_ratio:
formatted_prompt = f"{formatted_prompt}\n\nratio: {aspect_ratio}"
```
这种格式参考了 Seedream 4.0 的系统提示词规范。
## 📊 测试结果
### 测试命令
```bash
python -c "
import asyncio
from seedream_mcp.tools.text_to_image import handle_text_to_image
async def test():
result = await handle_text_to_image(
arguments={'prompt': '公众号封面,关键词:学习Python编程'}
)
for item in result:
if hasattr(item, 'text'):
print(item.text)
asyncio.run(test())
"
```
### 测试结果
- ✅ 生成的图片尺寸: `3136x1344` (正好是 21:9 比例)
- ✅ 图片中不再包含 "21:9"、"画面比例" 等文字
- ✅ 图片中不再包含 "公众号"、"微信" 等词汇
- ✅ 保留了纸雕水彩美学的核心风格
- ✅ 七牛云上传成功,可以正常访问
### 生成的图片

## 🔧 技术细节
### Seedream 4.0 支持的画面比例
根据官方文档,Seedream 4.0 支持以下画面比例:
- 21:9 (超宽屏)
- 16:9 (宽屏)
- 3:2
- 4:3
- 1:3
- 1:1 (正方形)
- 4:4
- 3:4
- 2:3
- 9:16 (竖屏)
- 9:21 (超窄竖屏)
### 参数传递方式
Seedream 4.0 的画面比例**不是通过 API 参数传递**,而是通过**提示词末尾的特殊格式**:
```
[主要提示词内容]
ratio: [aspect_ratio]
```
这种格式让 AI 理解这是配置参数,而不是要渲染到图片中的文字。
## 📝 相关文件
- `seedream_mcp/prompt_templates.py` - 模板定义和处理逻辑
- 第 17-24 行: 公众号封面模板定义
- 第 171-189 行: `apply_template` 函数 (添加 ratio 参数)
## 🎉 总结
通过将画面比例从提示词内容中分离出来,并使用 `ratio: 21:9` 的特殊格式,成功解决了生成图片中包含不需要文字的问题。
**优化效果:**
- ✅ 图片更干净,不包含技术参数文字
- ✅ 保留了核心的艺术风格
- ✅ 画面比例依然正确 (21:9)
- ✅ 代码更清晰,参数和内容分离
**后续建议:**
- 可以为其他模板也添加 `aspect_ratio` 参数 (如小红书封面可以用 3:4 竖屏)
- 可以让用户自定义画面比例
- 可以在文档中说明支持的画面比例列表