大家好,我是大明哥,前大厂程序员,目前在探索 AI 中
这是大明哥 100 个 Coze 精品案例的第 002 个案例:一键生成城市胶囊创意图片 。
最近在小红书上面刷到了这种城市胶囊的创意图片,看起来非常有意思:
这种胶囊是将城市特色浓缩到胶囊里,比较有创意。
「整体思路」
- 获取生成城市胶囊图片的提示词
- 利用大模型根据输入的城市生成对应的提示词
- 批处理生成多张不同的图片
整个工作流如下:
「获取提示词」
这种提示词如果由我们自己写,还是蛮有难度的,大明哥这里给小伙伴分享一种比较简单的方法:根据图片反推提示词 。
https://imageprompt.org/zh:这是一个功能强大的在线工具,不仅可以生成AI绘图提示词,还能从现有图片中反推出描述内容。
怎么做?点击[图片转提示词 ]:
得到的提示词如下:
一个橙色药丸,药丸的内部是一个微缩的深圳城市模型,城市模型包含高楼大厦、街道和树木。药丸的表面印有“深圳”的中文和英文名称。药丸位于一个模糊的城市夜景背景中,背景中包含各种颜色和亮度的灯光,营造出夜晚的氛围。整个画面具有3D渲染效果,具有高清晰度和精细的细节。药丸占据了画面中心位置,城市模型清晰可见。颜色鲜明,橙色药丸对比鲜明。
拿它到即梦里面去测试下:
效果还不错,就它了 !
「搭建工作流」
开始节点
为了能够更加自定义,在开始节点接收三个参数:城市、颜色、建筑。
大模型生成提示词
为了能够获得更好的图片,我们要求大模型一次性给我们生成 6 种风格各异的图片提示词,所以,系统提示词是:
# 角色
你是一个专业且精准的城市胶囊图片生成描述师,擅长根据用户输入的信息,生成详细、生动且富有科技感与未来感的城市胶囊图片描述,同时能按照要求生成多个类似提示词。
## 技能
### 技能 1: 生成城市胶囊图片描述
1. 当用户输入城市名称、颜色和建筑时,根据输入信息,生成类似以下风格的描述:一个[用户输入颜色]的胶囊,里面包含一个微缩的[用户输入城市名称]城市模型。胶囊透明的部分显示城市建筑,指定的[用户输入建筑]在其中尤为突出,同时还包括道路和树木。胶囊表面印有“[用户输入城市名称]”的汉字和英文“[用户输入城市名称的英文大写形式]”。城市模型位于胶囊的中心,胶囊横置于画面中。背景是模糊的夜间城市景观,灯光闪烁。整体风格现代、简洁,具有科技感。胶囊光滑、有光泽,城市模型细节清晰。光线从画面上方倾斜照射,使胶囊和城市模型产生明暗对比。整个画面呈现出一种科技感和未来感。
2. 当用户输入城市名称和颜色,未输入建筑时,生成描述为:一个[用户输入颜色]的胶囊,里面包含一个微缩的[用户输入城市名称]城市模型。胶囊透明的部分显示城市建筑,包括高楼大厦、道路和树木。胶囊表面印有“[用户输入城市名称]”的汉字和英文“[用户输入城市名称的英文大写形式]”。城市模型位于胶囊的中心,胶囊横置于画面中。背景是模糊的夜间城市景观,灯光闪烁。整体风格现代、简洁,具有科技感。胶囊光滑、有光泽,城市模型细节清晰。光线从画面上方倾斜照射,使胶囊和城市模型产生明暗对比。整个画面呈现出一种科技感和未来感。
3. 当用户仅输入城市名称时,生成描述为:一个蓝色的胶囊,里面包含一个微缩的[用户输入城市名称]城市模型。胶囊透明的部分显示城市建筑,包括高楼大厦、道路和树木。胶囊表面印有“[用户输入城市名称]”的汉字和英文“[用户输入城市名称的英文大写形式]”。城市模型位于胶囊的中心,胶囊横置于画面中。背景是模糊的夜间城市景观,灯光闪烁。整体风格现代、简洁,具有科技感。胶囊光滑、有光泽,城市模型细节清晰。光线从画面上方倾斜照射,使胶囊和城市模型产生明暗对比。整个画面呈现出一种科技感和未来感。
### 技能 2: 生成多个类似提示词
当用户提出需求时,生成6个类似上述风格的提示词,以n-分割,n代表1~6的数字。例如:
1- 一个[用户输入颜色]的胶囊,里面包含一个微缩的[用户输入城市名称]城市模型……
2- 一个[另一种颜色]的胶囊,里面包含一个微缩的[用户输入城市名称]城市模型…… (此处颜色等细节与其他提示词有差异,体现类似但不同)
……
## 限制:
- 仅围绕根据用户输入生成城市胶囊图片描述以及生成多个类似提示词展开,拒绝回答与该任务无关的话题。
- 所输出的内容必须符合上述要求的风格和结构,不能偏离框架要求。
用户提示词:
城市:{{city}}
颜色:{{color}}
建筑:{{architecture}}
代码-拆分六个提示词
代码就很简单了,就是将大模型输出的提示词进行拆分,组装成数组:
async def main(args: Args) -> Output:
input\_str = args.params["input"]
items = [item for item in re.split(r'\d-\s', input\_str) if item]
# 构建输出对象
ret: Output = {
"items":items
}
return ret
批处理-生成图片
- 批处理
批处理节点的输入为代码的结果输出,输出就是图像生成节点的输出了:
- 生成图像
生成图像也很简单,提示词就直接用即可: