我是AI破局俱乐部合伙人,专注于AI智能体的越山,欢迎点击上方蓝字关注我,不迷路。
破局行动第2期,16个AI行动营,超过9000人次报名。作为仪式感的一部分,行动营开始前,官方会向每位学员发放一张专属定制的行动营海报。每张海报的主体背景都相同,不一样的,只是每个学员的头像,昵称,所在行动营项目。 以前都是人工来修改海报,大量重复性的替换名字头像的工作,费时费力。 借助于AI智能体, 可以让每个人的行动营海报自动生成,节省人力。
以前可能需要两个人1周时间,现在让学员使用智能体,只需要一分种,生成专属通行卡。
今天就来详细讲解下这个海报智能体的搭建过程。
目的
搭建一个海报智能体,通过上传头像,昵称,行动营项目名等信息,生成定制海报。
做出来的效果如下,左边是底图,右边是定制海报。
注意:下图仅作演示,最新的破局行动第2期将于7月15日开始。
智能体设计
分步设计:
1 先搭建MVP(最小可行产品)
2 优化交互体验
3 再支持批量操作
4 再支持自定义背景图(可选)
使用过程/用户故事:
用户在对话界面上传单个学员的信息,上传头像,昵称,行动营名称
智能体加工海报,主要是图片,文字信息的叠加
返回生成的海报
前提条件:
要有一张海报底图,没有昵称,头像,行动营信息。
要有一张完成了的的海报图,有昵称,头像,行动营信息。
MVP搭建
MVP 指的是“Minimum Viable Product”,即最小可行产品。
登陆coze.cn,新建bot, 比如 “海报生成器”。
在”海报生成器”bot的开发页面,点“+” 添加图像流。
点“创建图像流”,来到图像流编辑页面。
图像流与工作流分开了,这里只有与图像处理相关的一些工作节点。
包括图像生成,滤镜,图片AI编辑, 图片基础编辑几大块。
今天制作海报的场景我们专注在基础编辑的功能上。 因为目的是大批量地生成背景图一致的海报,所以背景图是预先由设计时做好的。理论上海报背景图,也可通过图像生成节点来每次自动生成。
图像流中的核心节点讲解
图像流 haibao_workflow
中, 依次往背景海报上加昵称,行动营名字,和头像。 图像流运行效果如下。下面我来详细讲解每个工作节点。
先在开始节点录入参数
“开始”节点,传入背景图片,昵称,行动营名字,头像以及头像的缩放比例。
添加昵称和行动营文字
新增一个"添加文字"节点,重命名为"昵称"。拉一根开始到昵称节点的线。 本节点中对应有很多参数,主要解释如下。
origin_url: (必填)原始图片链接,可引用前面“开始”里的变量,也可输入一个固定图片链接。
text: (必填)文字内容,中文字符串的最大字节长度为 64 个字符。引用前面“开始”里变量。
transparency: 文字的透明度。取值范围:[0,100]默认值:100,表示透明度 100%(不透明)
type: 文字字体。可选字体为文泉驿正黑:(默认)、文泉微米黑、方正书宋、方正楷体、方正黑体、方正仿宋
vertical_margin: 文字的垂直边距,即距离图片边缘的垂直距离,这个参数只有当文字位置是左上、中上、右上、左下、中下、右下才有意义。取值范围:[0,4096]默认值:10 单位:像素(px)
color: 文字的颜色。十六进制颜色码,取值为 000000 到 FFFFFF默认值为000000(黑色)
location: 文字的初始位置。nw:左上,north:中上,ne:右上,west:左中,center:中部, east:右中, sw:左下, south:中下,se(默认值):右下
size: 文字的文字大小,(0,1000],默认值:40,单位:px
fill: 是否将文字平铺满原图。1:表示将文字水印铺满原图。0(默认值):表示不将文字水印铺满全图。
horizontal_margin: 文字的水平边距,即距离图片边缘的水平距离。这个参数只有当文字位置是左上、左中、左下、右上、右中、右下才有意义。取值范围:[0,4096]默认值:10 单位:像素(px)
这些值该怎么填呢?特别是文字该放在图片的哪个位置,该怎么设置呢? 下面我介绍一种比较方便的方法。
这里用到photoshop, 电脑浏览器中访问 https://www.photopea.com/
Ctrl+O, 打开一张设计好的海报图片。
Ctrl+R, 打开标尺工具,会在画面左边和上边显示刻度。
Ctrl+0, 让图片自适应显示全部。或者按一下键盘上的z, 然后点左键可放大图片,或者按住Alt点鼠标左键,可缩小图片。按住空格可鼠标拖动图片。
按一下键盘上的v, 注意输入法切换到英文。然后鼠标从画布上边的刻度处,按住左键往下拖出一条标尺线,拖到昵称上端,就是昵称所在位置的Y轴值,也就是上面要填的
vertical_margin
值。同理,从左边刻度拖也来的标尺可得到horizontal_margin
。字体的Y转下边减上边就得到字体size
值。按一下键盘上的i, 切换到颜色拾取器,然后鼠标移到昵称字体上点一下,就能查看到字体的颜色编码,比如
fff1ce
, 这就是color
值。
填好后,可测试“昵称”节点,需要输入text和origin_url。
这里origin_url就是空白海报底图,图片链接怎么获取呢? 我们可以在”海报生成器” bot的调试界面,点对话框右边的+号,上传背景海报图片,发送。然后在页面上显示的图片上右键,复制图片地址。
测试节点,可以点这个节点组件的右上角的三角形,输入昵称和背景图片URL。生成的图片中,看到昵称已经添加上去了。
如果文字位置,大小,字体等不合适,可以调整输入参数,继续调试。
类似的方法添加 “行动营”节点。
添加头像节点
要将用户头像弄上去,需要增加一个“叠图”结点。
其中的参数origin_url
就是前面添加了文字的海报图,image_url
就是要叠加的头像图片。 其它位置相关的变量填入方式跟前面提到的类似。
测试结果,图片是叠加上去了,但头像是方形的,没法截取成圆形或多边形,并加边框。 Coze图像流中,没有现成的工具能做到。
怎么办?
是不是可以在这之后,再叠加一个边框区域的蒙板呢?叠加一个png图片,让中间头像显示区域空出来。 我试了,可以实现。
还是在 https://www.photopea.com/ 里制作这个头像蒙板。 选择多边形套索工具,将头像区域框起来,按Del键删除。
然后按c,进入裁剪模式,框选后回车,剪出蒙板。
然后将图片导出为PNG格式。 菜单上点 File - Export As - PNG
在图像流中,复制前面的叠图节点,设置参数。
image_url
,选择上传刚才做好的蒙板PNG图片。zoom
,设置为 100,表示不要缩放。origin_url
, 引用前一步处理的图片。注意检查每一步的输入都应该是前一步的输出data
然后点右上角的“试运行”,跑整个图像流。
至此,图像流创建完成,点右上角的“发布”,然后同意添加到bot。
回到bot编排页面,在“人设与回复逻辑”里,简单填写要求,比如:
根据用户提供的海报背景图片,头像图片,用户昵称和行动营名字,调用图像流haibao_workflow, 生成个人海报。
然后在右侧调试栏上传图片调试。 bot自动调用了图像流,生成想要的海报。 至此,MVP算是完成了。
迭代优化
MVP只是把主流程跑通了,但还有许多需要优化的地方。迭代优化是搭建智能体必须经历的步骤,而且是最费时的环节。由于Coze太新,很多功能并不完善,越山就踩了许多坑。
时刻清楚自己的目标,不择手段去实现,先完成,再完善,不要追求完美。
这个海报智能体需要完善的地方包括
输出图片而不是链接
更改模型输出格式为Markdown,而不是默认的Text。这样bot就能直接输出图片了。
固定海报底图
这个海报智能体只是为了一次活动定制的,里面的位置参数也都是固定写死的,所以底图也可以固定,没必要每次生成都要传底图。
那就在图像流中,删除开始里的backgroundPicUrl
, 在第一个添加文字节点中,origin_url
改为上传底图。
改图像流后,记得发布。
头像缩放比例如何确定
上面的图像流中,有一个头像缩放百分比参数headZoomRatio
,因为用户上传的头像图片大小不一致。微信头像导出都是正方形,但像素有940x940的,也有576x576的。所以,这个缩放比例,应该要根据用户上传的图片来计算。
这时,需要添加工作流,在工作流中计算这个比例值,再调用图像流。以下是步骤说明。
1 在bot编排区域中间,图像流的上面就是工作流,点+,新建一个工作流。
2 添加一个插件,搜索“图片参数”,将height,width都加进来,这样能获取头像图片的宽和高。
3 添加一个代码节点,计算缩放百分比。
首先要知道头像蒙板的宽高。蒙板PNG图片上右键,查看图片信息,比如我这里宽高是 257 x 223。
如果头像图片是960x960,那么宽的缩放百分比应该是257/960, 宽比应该是223/960, 这两个比值,取最小的一个,就能保证图片缩放后,能被蒙板遮住。
4 添加前面创建好的图像流,将参数传进去。
5 试运行,图片url这里粘贴进去。bot对话时,直接上传图片。
6 发布此工作流,并确定将其添加到bot。
7 因为图像流会在工作流中调用到,所以建议从bot中删除图像流。这里只里并未删除图像流本身的定义,只是删除与bot的附属关系。
8 优化主提示词
9 调试并发布bot,默认会发布到扣子bot商店。
10 分享bot链接,点右上角“商店”,跳转到bot使用页面后,点右上角“分享”。
访问bot链接后,需要登陆Coze后才能使用。
其它改进建议
根据实际需求,还可能有其它改进的点,比如批量处理,保留处理历史,添加个性化问候语等,我们都可以不断地迭代改进。每一次更新工作流,都需要将工作流和bot重新发布,才会生效。
写在后面
洋哥今天在合伙人群里提到,智能体套壳,解决一个小刚需的产品,非常看好。 这个海报智能体,就是借助于智能体,解决一个真实需求的实例。
越山长期专注于AI应用落地,有着丰富的AI智能体经验。 接下来,我会分享更多的AI智能体搭建的经验和案例。
欢迎关注我的公众号,或加我好友,交流, 围观, 学习。