背景
文心智能体平台,开启新一轮活动,超级创造营持续百日活动。
在AI 浪潮席卷的今天,如雨后春笋般丛生的 AI 应用,昭告着时代风口显然已随之到来。
如何能把握住时代红利,占据风口,甚至打造新风向,成为了热点的话题。
为了能够帮助大家丝滑突破智能体创作瓶颈和开发卡点,助力大家打造属于自己的超级智能体, 共创 AI 应用新风向!超级智能体创造营应运而生!
超级智能体创造营旨在帮助有创意有能力的潜能开发者获取更多的资源和帮助,突破能力边界,实现超级智能体创意想法。
活动将百日持续开启,趣味赛题持续更新,只要你想,随时可以“参战”!
创作灵感
前阵子在百度热搜看到一个标题,00后职场疯感工牌火了。
然后就想到使用文心智能体低代码的方式去实现,毕竟需要图片。
百度直接搜索,会发现非常有意思的姓氏谐音梗和疯狂一句话。
姓很,叫陈住气(谐音沉住气)
姓赵,叫赵不到(谐音找不到)
Prompt提示词
prompt的编写过程也是一波三折,前后改了不少版本。
并且prompt内容写的越来越多,刚开始测试效果还不错,等多人用就发现问题。
最后通过精简,达到现在线上这版还不错的效果。
可见,prompt提示词不是越多越好,重点是尽量表达清楚是干什么即可。
变量_input_的值就是用户输入的原始值
根据用户输入的【{_input_}】提取【姓氏】和【职位岗位】信息。
先根据【姓氏】输出姓氏谐音梗名字,比如:【周】姓,输出谐音梗名字【八宝粥】
再根据【职位岗位】输出一句疯狂的、幽默的、搞笑的,并且和【职位岗位】信息相关的一句话
最后组合输出疯感工牌信息,包含四部分:姓氏、谐音名字、职位岗位信息、一句话。
# 思考路径
姓氏谐音梗名字:搞笑、搞笑、再搞笑一点的名字,每次都不一样
职位岗位信息:原样输出用输入的职位岗位名字
一句话:疯狂、疯狂、再疯狂一点的句子,每次都不一样
# 内容校验
1、校验用户输入的内容必须合法合规
2、校验用户输入的内容不能包含政治、医疗等敏感信息
# 输出参考示例
## 用户输入
梁,品牌部
## 输出信息
姓名:薪尽自然梁同学
职位:品牌部
一句话:就这点钱,我很难帮你办事啊
prompt提示词最多时超过了2048个字符,后面精简到了300多个字符,效果反而更加好。
工作流
这里博主要说下,官方文档还是需要看下,非常有助于理解和开发,否则就会像博主一样,
一开始对工作流编排开发比较懵逼或者使用不恰当的情况,这个还被小小说了下,也非常多谢小伙伴的指正。
基本信息
详细信息可查看官方文档:https://agents.baidu.com/docs/intelligent-agent/visual-development/Kit/
使用工作流创建智能体,属于低代码创建智能体,工作流通过套件组合方式进行编排开发。
套件是可视化编排流程的构建块。它们由定义其功能的输入、输出和参数组成,为构建智能体提供了一种方便、直接的方法。
套件类型:
链: 用于编排主流程,智能体将遵循链的顺序执行后输出结果; 平台提供大模型链、分支链等多种类型,用于表达智能体的业务逻辑。
普通套件: 除链外所有套件均为普通套件,可以与对应的链连接,连接后将生效为链的基础属性。
完整套件
博主这里使用了大模型和工具套件,大模型链具有提示词和模型输入类型,工具链具有HTTP请求工具输入类型。
成语提示词模板
这个可以理解为零代码里的人物设定,具体要感觉模型需要做什么,尽量表达清晰明了。
这里要说的就是变量{input},这个前面也说了,也有对应的官方文档说明。
这个变量刚开始时博主自己猜的,然后百度搜素看到的,其实官方文档就有说明,说明博主没认真看文章,
这个习惯不太好,说明博主有点偷懒了,哈哈哈。
- 模板
模板内容,即prompt提示词,有红色星号说明是必须要填写的内容。
根据用户输入的内容{_input_},提取成语并输出成语解释或成语来源。
如果是成语
输出成语解释或成语来源
否则
输入成语无效,请重新输入
- 输出格式
输出格式后面没有红色星号,说明是非必填项,可为空,也可指定格式输出。
这个还是挺好玩的,可以根据指定json格式输出,比如下面测试(可以单独添加一个大模型链、文心大模型、提示词模板来测试) - 测试
套件卡片的右上角显示绿色则表示通过,可进行预览测试。
- json格式
通过数组对象方式设置输出字段名称和字段描述
[
{
"key":"isChengyu",
"description":"是否是成语"
},
{
"key":"explain",
"description":"成语解释"
}
]
工牌提示词模板
上面通过成语提示词模板的举例和测试,可以大概知道,大模型最终输出的内容一定会包含有指定格式输出的信息。
下面就是工牌里面设置的提示词模板输出的json格式和输出效果,有时候输出直接就是json格式信息
- json格式
[
{
"key":"name",
"description":"名字"
},
{
"key":"work",
"description":"职位岗位名字"
},
{
"key":"sentence",
"description":"一句话"
}
]
工具链
博主这里使用的是http请求工具链,自己调用api服务器接口,返回Markdown图片格式内容。
HTTP请求工具
- 变量报错原因
下游链使用上游链定义的参数,如果不存在,则会报错,如下图所示
- 变量使用
在提示词模板输出格式定义的json格式变量,并且作为大模型链输出关键的子对象。
对于开发人员来说就比较清楚,直接就是通过result.name等方式直接获取参数值,并且用花括号括起来。
注:刚开始博主没理解是这么使用,其实官方文档有说明,所以,边做边看文档还是有帮助的。
智能体设置
可以设置引导语和推荐问题。
完整输出效果
工作流各个套件编排好后,点击测试,通过后可点击预览查看效果。
存储对象BOS
在这次开发的过程中,图片的显示也是一个非常有挑战和卡点的问题。
毕竟博主我的服务器带宽有限,高并发下,瞬间就爆了,图片直接拉爆我的图片。
因此,本次智能体最大的卖点和亮点之一就是图片的BOS存储和访问,大大降低了博主服务器的压力,
这里也是利用了BOS图片的一个小小技巧在这里,图片叠加水印方式。
同时,也让博主涨知识了,通过给BOS图片加参数设置水印方式来解决图片文本动态化问题。
基本信息
官网地址:https://cloud.baidu.com/product/bos.html
百度智能云对象存储BOS(Baidu Object Storage)是一款稳定、安全、高效、高可拓展的云存储服务,
支持标准、低频、冷和归档存储等多种存储类型满足多场景的存储需求。
用户可以将任意数量和形式的非结构化数据存入BOS,并对数据进行管理和处理。
Bucket上传图片
支持后端开发语言调用API或SDK方式上传图片,博主这里使用界面进行上传,这里固定20多张模板。
随机根据这些模板叠加文字在图片上进行输出。
图片添加文字水印
参考地址:https://cloud.baidu.com/doc/BOS/s/Cldh5wqlh
博主刚开始确实没想过可以用图片加文字水印方式来解决图片访问问题,对于工牌图片显示逻辑实现是太有帮助了。
文字水印有很详细的参数说明,可以实现非常强大的图文叠加功能,确实可以实现一些不用通过服务器进行访问的情况,只需要传参即可。
- 多文本
https://doc.bce.baidu.com/bce-documentation/BOS/image.jpg?x-bce-process=image/watermark,text_aGVsbG8=,type_RlpMYW5UaW5nSGVp,g_9,color_0000ff/watermark,text_aGk=,type_RlpMYW5UaW5nSGVp,g_6,color_A752F7/watermark,text_aGk=,type_RlpMYW5UaW5nSGVp,g_4,color_A752F7
参数,x-bce-process=image
第一个文本:/watermark,text_aGVsbG8=,type_RlpMYW5UaW5nSGVp,g_9,color_0000ff
text=水印文本=aGVsbG8(base64编码)
g=锚点位置分9个区域=6
color=文字颜色=#0000ff
第二个文本:/watermark,text_aGk=,type_RlpMYW5UaW5nSGVp,g_6,color_A752F7
第三个文本:/watermark,text_aGk=,type_RlpMYW5UaW5nSGVp,g_4,color_A752F7
- base64在线解码
总结和感受
时间花费最多的还是在调优prompt提示词上面,只要输出结果不理想就需要重新优化下prompt。
对于我来说不太善于表达,这也算是对我的小小挑战,同时也说明,只要你有好的想法好的创意,总能让更多的人看到,总能在调优的路上学习到很多。
本次超级创造营,也非常感谢官方同学给予的指导和帮助,官方对于有创意有想法的智能体会提供1v1调优指导以及给出合理有效的完善解决方案,也是让博主感受和学习到百度同学的优秀解题思路。
所以,也非常鼓励大家不管你是否善于表达,都可以来尝试创建和挑战文心智能体。
同时从这一次《疯感工牌》爆款也深深感受到,人人都是智能体开发者和使用者,人人都能成为超级个体。
荣获"超凡入圣"金奖
欢迎点击体验:https://mbd.baidu.com/ma/s/6yA90qtM