我是一名老AI开发者了,记得刚入门时,还是从TensorFlow 1.x
的张量开始学习。后来,随着技术发展,出现了高阶API
。这让AI
开发更加便捷,只需引入百余行代码,就能搭建一套简单的算法流程。
再后来,ChatGPT
的出现,引发了全球的AI热潮。这又让非AI开发者,拥有了跨行接入AI的机会。此时,尽管各大厂商(尤其国内)都说自己的平台可以零基础使用,但从我看来,用户依然需要一些AI理念和编程基础。也就是说,AI离普通人还是太远。
后来,字节上线了Coze
平台。它好像是开启了AI应用层面的一个新纪元。当然,这不是针对庙堂的学术大佬来说,而是针对浩浩荡荡的江湖用户而言。因为Coze
真的是站在用户一侧,易用,接地气,甚至连名字也不搞生僻的远古词汇,它叫“扣子”。
官方文档上它自述说:“扣子是新一代一站式 AI Bot 开发平台”。这里的Bot
是Robot
(机器人)的缩写。也就是说,扣子是一个搭建人工智能机器人的平台,它可以模拟人类自动执行一些任务。
比如,让它讲一个笑话给你听。
一、Prompt提示语
大模型火的时候,很多卖课的人经常兜售一个词,那就是“Prompt”。他们喊:你可以不懂AI技术,但是,一定要懂得如何向AI提问题。他们说的,就是prompt这个知识点。
在聊天机器人中,你想要听一个笑话,你需要提前告诉它。比如,你想听关于“考勤”的笑话,如果你直接说出“考勤”二字,机器人会以为你在查词典。
但是你提前告诉它要求之后,再说“考勤”,它就会给你讲笑话。
这种机制导致每次会话,你都要把提示信息说在前面。
一般在实际应用时,为了提高用户体验,程序员会把它写到代码中:“现在我想要听一个笑话。你要给我讲一个关于【%s
】的笑话。要求100字以内。”之后,虽然用户只在输入框中打出了“考勤”两个字,但是经过字符的拼接和替换,最终发给机器人的问题,实际上是完整的有约束的问题。这就是最简单的prompt
。
扣子把这一点做得很好。只需要用文字描述一下人设和技能,就可以直接完成设置。
左边写完了描述,右边直接就能聊天了。
如果,你懒得写(讲笑话的创意至少得由你提出)。那么它还有一个AI优化功能,可以帮你实现细节的润色。
好了,讲笑话的机器人就完成了。点击发布,这个就是你的创意应用啦!你可以分享到社交软件,让更多人看到。
是的,就是这么简单。它就像是衣服上的扣子一样,“咯嘣”一声就按上了。
二、实时信息查询
大语言模型出来之后,大家纷纷通过各种途径,去解决一个问题,那就是如何保证信息的时效性。
存粹的大语言模型,是过去某个时间节点的产物。但是,如今我们的生活,对实时信息有极高的需求。因此,我们在做AI应用时,会通过各种手段接入搜索引擎,通过它来获取最新的信息,然后返回给大模型进行分析处理。
大模型接入搜索引擎,抢占搜索引擎的用户。以及搜索引擎融入大模型,实现更好的回答体验。这两者是即竞争又合作的关系。
在技术里面,实现AI大模型的实时搜索查询,稍微要麻烦一些,要走很多链路。但是在扣子里面,可以轻松搞定。
扣子里面,有一个插件的概念。在你的应用中,你可以免费引入实时搜索类的插件。并且在左边的技能描述中,说一下输入的问题,要调用引入的插件去实时查询。
这么一个大模型+实时搜索
的功能,如果是让一个程序员来写,可能得几天的时间才能搭建完成。但是,现在你通过扣子,几分钟就能搞定。只能说,它真的是奔着解决用户痛点而生的。同时,也让不了解它的开发者,心里感到有点痛。
类似的插件还有很多,涉及很多门类领域。
这些功能,并非停留在API
层面,它们已经与扣子深度集成了。即便你不懂编程,不知道什么叫参数、返回值,也可以通过文字描述,让它们为你的应用服务。
比如使用一个“写汉字”的插件,只需要引入,然后告诉扣子,如果有人问汉字怎么写,就调用这个插件。
上面几个段落,简单聊了一下什么是扣子。
下面,我将用扣子平台做一个应用展示给大家。我尽量多结合一些功能,比如它还有知识库、数据库啥的,咱主打就是一个好玩、好做、好用。
三、实战扣子应用:精品爆笑段子
我这款扣子应用,起名叫“精品爆笑段子”。现在大家压力都很大,不想上班只想摸鱼,不想学习只想放松。因此,我要做一个讲笑话的应用,让大家获得难得的快乐。
前面讲prompt提示语
知识点时,咱们已经搭建了一个讲笑话的应用。但是那个太初级,仅用于功能摸索,没有竞争力。可能大家也看得出来,我这么能白话能侃大山,肯定也是一个段子爱好者。
没错,我平时非常喜欢收集段子。多年来,我一直默默地收集着好笑的段子,大约有1万多条。
我收藏的这些段子,每一条都让我笑过。如果你和我的笑点一样的话,那么我能让你笑1万多次。每天笑一次,能笑27年。每分钟笑一次,能连续笑7个小时。我很自信,这些精品段子,要比网上搜来的要好。这是我独有的优势和自信。
今天遇到了扣子平台,我就捐了他们!
3.1 知识库
扣子有一个知识库的功能。这个功能很契合我当下的需求。即,我认为扣子提供的笑话,不如我自己的手里的好。我要给用户呈现我的内容。此时,我可以将私有内容加入我的知识库作为数据源。
有关扣子知识库的使用,点击前面这个官方链接可查看。人家说的比我详细,它从登录开始教。
它支持很多种方式,txt
、pdf
、docx
都可以。对文件里面的内容格式也没有要求(我的是json
格式是因为我喜欢结构化数据)。不要感觉步骤多就胆怯,放心大胆地跟着“下一步”、“下一步”走就行,又不花钱。最复杂的就是上传文件。
我的段子文本存在data.txt
文件中。上传完毕之后,在扣子平台上,是下面这么个结构和展现形式。
看到这里,我眼泪出来了(你又怎么了?)。
因为,我曾写过类似的功能。我做过一个本地知识库的项目,当时也是用大语言模型去理解本地文档,要求从文档里找出问题的答案。但是,实现过程太曲折了。当时大模型刚起步,公开方案少,没思路。最后通过LLM
+开源识别+LangChain
勉强凑了一套,效果一般。
因此,一看这个结构,我就知道它是什么回事。那是我日日夜夜的思考和调研历程。
就拿这个分段来说吧。为什么要分段?这是为了更好地进行检索和管理。
我那个段子素材data.txt
文件,单文件约6MB大小,里面10000条笑话,共计2百多万字。这个数量级,大模型一口吃不下。这就像你和别人聊天一样。他一口气跟你讲了半年时间,中间他不休息,也不允许你插嘴。估计等他讲完,你必然友好地说一句:不好意思,三天前的我忘了,请再说一遍!
因此,将长文本分块,就像是将一套课程拆分为一节节40分钟的课堂。这就是它这个知识库分单元、分段的目的。
其实,再往里面深究,这些分段的文本片段,都会再转换为向量存储。这些稍微专业些的内容,作为普通用户,没有必要去了解。毕竟,我们能会用,就已经很厉害了!
使用知识库很简单,在你的应用中,点击知识库后面的加号。然后,选择你创建的知识库。此时,知识库就引入好了。你不用做任何操作,直接问就可以了。
我们发现扣子执行“已搜索知识库”,然后给出了一个笑话。点击“运行完毕”,我们还可以追溯,知识库中哪条段子被选中了。
好啦,通过知识库,很简单就实现了自己手里数据的应用。你也可以把笑话段子,换成教材、课程、歌曲等,效果都是一样的。
3.2 数据库
实际上,我们的作品会面临版本的更新迭代。我这个当然也不例外。
我现在想新增一个功能。
好吧,坦白了。我发现,其实……我的笑点是挺另类的。很多人看了我的笑话,没有想象中的开心。10000条段子中,大约只有20%能让大家笑出声音。而每个人的这20%还是不同的。他们想收藏这些内容,作为他们自己的口味大餐。
这很好,他们给我提供了一个用户偏好。这是双赢:他们获得了自己想要的段子,我也了解了我的用户喜欢什么类型的段子。以后我可以按照他们的喜好,给他们推送内容。
但是,要做这些,首先要把用户喜欢的信息保存下来。如何保存呢?
作为平台,扣子提供了这样一个功能,那就是数据库
。
数据库
就是存数据的仓库(你是要凑字数吗?)。数据库里有数据表,存储一条条数据。一条数据可能又分几个部分组成(标题、内容、时间),这在数据表里叫字段。
下面,我们就建立一个数据库。我们使用模板,然后在这个基础上修改。
稍微修改一下,如下所示。
其中joke_content
数据类型选String
,也就是字符串。add_time
数据类型选Time
,表示这是一个时间。这可能是本文唯一次,接触到IT技术的地方,后面不会了。
根据我的AI开发嗅觉,你如果将描述写的准确一些,可能有助于扣子去理解字段。
好,加好了数据库,建好了数据表。我们下一步就要告诉扣子如何进行数据存储。
其实上面这段,是我稍微列了提纲让AI优化的。我知道你懒得敲,请复制。
# 角色
你是一个笑话大师,可以根据用户的要求讲笑话。如果用户觉得好笑,可以进行收藏。
## 技能
### 技能 1: 讲笑话
1. 当用户让你讲一个笑话或者段子时,你需要调用 recallKnowledge 从知识库的“精品爆笑笑话”中搜索一条相关的内容,并讲给用户听。
### 技能 2: 记录笑话
1. 如果用户说“好笑”或“收藏”,你不用调用 recallKnowledge 去查询笑话,将最近的一条笑话,保存到数据库的`joke_notes`表中,内容存入`joke_content`字段,`add_time`取当前日期时间。
### 技能 3: 查询笑话
1. 如果用户说“收藏的笑话”,你不用调用 recallKnowledge 去查询笑话,你到数据库的`joke_notes`表中,查询出前 10 条记录的`joke_content`字段。
此时的功能变多了。不但能讲笑话,而且还能收藏笑话。因此,需要告诉角色什么时候该干什么。
其中有一点大家需要注意,知识库改成了“按需调用”。也就是
技能 1
中描述的“用户让你讲段子时,调用知识库”。为啥呢?因为你说“收藏”时,也可能让它讲一个关于“收藏”的段子。
技能 2
是存储笑话,技能 3
是查询笑话。这个没啥好说的。不过,建议你写完之后,也让AI润色一遍。这样能变得更趋近扣子好理解的语言。
好了,下面试试效果。
哈哈,收藏是没有问题的。点击“运行完毕”我们可以看到插入数据库成功了。
下面再试试,能不能查询到我们收藏过的段子。
从上图我们可以看到,不管是从数据库查看,还是从聊天对话查看,我们都能查到已经收藏过的段子。而且是可以对应起来的(这不废话嘛!)。
关于数据库的使用,就到了这里。怎么样?很简单吧!
3.3 更多功能
我继续对我的“精品爆笑段子”进行探索和优化。
我想,用户要是问了我知识库里不存在的问题,会怎么样?根据我开发产品的经验,一般是转向大模型进行回答,或者根据用户的偏好配置选择去向。
于是,我问了它一个关于“大语言模型”的段子。结果,扣子的AI居然从我10000条知识库中,匹配到了段子内容。可见它已经具备了比较强的理解和查询能力。
后面我又问了一个“背景(北京)天气”。这个不是问段子,肯定不会走知识库。我没猜错,扣子走了自己的问答,而且还对错别字进行了矫正。
我想啊,我的产品是专业讲段子的,不允许问天气(可能有人觉得功能越多越好)。因此,我在人设编排中,加了一条限制:只谈了段子有关的问题。然后,再问天气,它已经不回答了。
另外,还有很多的功能可以提高扣子应用的用户体验。比如,给我的段子增加语音播报。还有针对每一次回答增加问题的周边补充(知识类的更需要这种配置)。
四、最后
我的扣子应用“精品爆笑段子”已经慢慢接近我想要的了。它还在不断被完善。
完善它太简单了,就在编排中写下规则和约束。它会实时生效,这边描述完毕,那边就可以用了。另外,很多插件和模块都可以很方便的引入。
扣子就像是邻家大哥,它是为普通用户而设计的。到我这种专业开发者手里,玩得会更加游刃有余。因为,很多功能我都写过,多少会了解一些背后的原理。
扣子里面还有一个工作流的功能,唯独这个功能我没有讲。因为对于普通用户而言,其他功能就已经能覆盖90%的场景了。
从熟悉扣子,到写下这篇文章,大约花了1天的时间。这种便捷度,要是放在以前,想都不敢想。
谈完了技术,再谈一下别的。扣子平台的出现,开启了一个让人人都是AI应用创作者的局面。这在以前也是不敢想的(你有多少GPU,你玩AI?)。这很像是自媒体刚开始的时候,发布新闻消息不再是媒体界的特权,人人都可以发布。
扣子应用一旦接入了社交软件系统,让每个人的作品可以互相交流和使用。那么这个市场的前景是很难想象的。而现在扣子平台也已经支持豆包、飞书、微信公众号的发布。
总之,我看好它。因为从没有哪个平台,这么地宠爱用户。
扣子平台已经来了,你只要稍微操作,就能将创意实现,拥有一个属于自己的AI应用。
你们都只等待着乘势起飞。
如果你迫不及待想要听笑话,可以访问豆包(抖音旗下AI助手)的体验地址:
www.doubao.com/chat/972730…
Coze上也能搜索到“精品爆笑段子”
BotID:7338786626807726080