眼看马上要回家过年,在外漂泊的时间越长,家乡的人事也愈加淡忘,很多人物的关系都搞不清楚了,更不想起来该如何称呼。
这几天看到字节发布了一个AI应用开发平台:扣子coze,于是就想是不是可以用大模型来开发一个AI应用,对于搞不定的关系和称呼,就用这个应用来解决下。
扣子coze其实类似OpenAI的GPTs,国内的钉钉前段时间也发布了类似的产品,不过钉钉更偏重工作场景,扣子coze则比较普适,而且实际创建应用时,钉钉的使用体验有点乱乱的,对高级能力的支持也比较薄弱。
效果展示
先给大家看下这个应用的使用效果。
在豆包中使用这个应用:doubao.com/bot/6vsXTtu...
下面开始介绍使用扣子coze开发这个应用的过程。
注册账号
这一步特别的简单,使用抖音扫码或者手机验证码都可以。
创建应用
在扣子Coze中,应用称为Bot,有时也称为机器人、智能体。
创建应用有三种方式,如下图所示:
- 通过聊天窗口创建应用:只需要告诉扣子Coze你的应用名称和应用能力,扣子就会自动为你创建这个应用,然后你可以对这个应用进行调整修改。
- 手工创建全新应用:从头创建一个全新的应用,所有都需要自己填写,下面我会详细介绍。
- 通过克隆创建应用:从一个现有的应用创建一个新的应用,类似于Linux进程的fork操作,然后你可以对这个应用进行修改调整。
"通过聊天窗口创建应用"和"手工创建全新应用"的方法都很直观,这里再介绍下"通过克隆创建应用"的方法:
通过克隆创建应用时,首先需要点击左侧菜单中的"Bots",进入应用列表,选择一个你希望参考的应用。
在应用编辑页面,点击右上角的"创建副本",即可复制这个应用。然后我们就可以编辑这个应用并进行调试。
应用编辑和调试
无论你通过哪种方式创建的应用,最终都会进入应用编辑和调试页面,如下图所示:
介绍下上图中的3个区域,从左到右依次是:
1、AI原生能力:设置应用的人设、技能和限制,这就是通常使用大模型的套路,让它扮演一个角色,定义这个角色的能力,强调一些重要的要求。
2、AI扩展能力:AI大模型的能力比较通用,而且只能一问一答。扣子Coze为增强大模型的能力提供了很多有用的工具,包括:
- 插件,能够让应用调用外部 API,例如搜索信息、浏览网页、生成图片等,扩展 Bot 的能力和使用场景。
- 工作流,可以让应用执行一连串的工作,完整的做一件事。比如从采集数据、到清洗数据、再到分析数据、应用分析结果,把这些工作自动连接起来运行。这个能力特别强大,是个亮点。
- 知识库,上传文档到扣子Coze或提供网站URL让扣子Coze抓取,应用回答问题时就能够引用数据集中的内容。
- 数据库,让应用可以向结构化的数据库中存储和查询信息,这个能力比较突出,也是个亮点。
- 开场白,就是用户打开应用时,应用自动展示的话。可以给用户一些提示,方便开始会话。
- 用户问题建议,应用回答问题之后,可以再给用户一些问题参考,别冷场了。
- 音色,可以用语音播放AI应用输出的内容,这里选择各种男声、女声。
3、预览与调试:
修改"AI原生能力"和"AI扩展能力"之后,扣子Coze会自动保存,然后我们可以在这个区域直接测试应用。
如果感觉应用回答的不好,我们可以在左侧继续修改应用,直到获取满意的结果。
AI原生能力
所谓AI原生能力说的就是上图中的最左侧区域,就是大模型的提示词,这里的内容比较重要,所以重点说下。
扣子Coze中称这块为"人设与回复逻辑"。在大模型聊天中,有一个让模型生成内容质量更高的技巧,那就是:先让大模型扮演一个角色、定义这个角色的具体能力、对生成内容提出一些要求或限制,然后用户再提出自己的问题。扣子的示例应用中也是这样组织提示词的。
扣子Coze中的示例都是使用Markdown格式来组织内容的,这样结构比较清晰,我们继续沿用这一方式,不过应该也可以用其它组织方式,有兴趣的可以探索下。
下面开始具体说说怎么编写这段提示词。
我们想要开发一个AI应用或者AI智能体,首先要给它树立一个形象,也就是这个AI应用的人设或者角色定义,它是谁,它是干什么的。比如我这个应用的人设定义:
人设
你是大家口中的"称呼通",对中国社交文化有着深厚的理解和精准的把握,你理解中国各个地方人与人之间的关系和称呼。
然后我们还要具体描述这个AI应用的技能,这是为了让应用清楚理解自己的能力,应该如何处理用户的问题:
技能
技能 1: 称呼翻译
无论是亲戚称谓、职场称呼,你都能根据用户所在省迅速准确地翻译出用户与对方之间的具体关系。如果因为市县的差别导致这个称呼可以解释为多种关系,你必须要求用户再给出具体的市县。比如:在山东,"爷爷"就是"爸爸的爸爸","大伯"就是"爸爸的哥哥"。
技能 2: 关系推理
给你一个双方之间的关系描述,你就能准确根据用户所在省得出用户的标准称呼。如果因为市县的差别导致有多种称呼,你必须要求用户再给出具体的市县,以便给出更准确的称呼。最后调用 "create_hanzi_gif" ,把你最终推理得到的称呼作为参数text的值,结果展示给用户。
推理结果中请把其中的每一层关系都列出来,输出格式:
-
A的B是"C"
-
C的D是"E"
-
E的F是"G"
输出示例:对于问题"在山东,妈妈的姐姐的丈夫的弟弟怎么称呼?",标准输出是:
在山东,妈妈的姐姐的丈夫的弟弟通常被称为"叔"。这个称呼中包含的关系有:
妈妈的姐姐是"姨";
姨的丈夫是"姨夫";
姨夫的弟弟是"叔"。
这里给"称呼通"这个应用定义了两项技能,一个是称呼翻译,另一个是关系推理。
在定义这两项技能时,我首先对这个技能做了一个描述,然后举了一些例子方便大模型理解。
在"关系推理"技能中,我还做了两件特别的事:
一是调用插件把最终的称呼生成Gif图片。不过实际效果并不好,扣子Coze使用的大模型好像不能准确理解我想传递的参数是什么,感觉这个大模型和GPT-4还是有些差距的。在扣子Coze中调用工作流、访问知识库、数据库,差不多就是这个方法。
二是定义了输出的格式,并举了一个标准输出的例子。不过不能做到百分百,但是绝大部分时候应用输出的内容时就是按照这个格式组织的。
然后我们还要对这个AI应用做一些限制,这是为了应用的安全运行:
限制
-
回答只与中国人称呼有关的问题。如果用户提出与此无关的问题,不进行回答。
-
你必须了解用户所在的省或者地区,并在上下文中记住。如果猜不出来,必须询问。
-
语言:通俗易懂、言语亲切、口语化。
-
必须按照用户的要求和上述约束进行创作,不能随意发挥。
如果不做这些限制,用户可能就会让AI做一些其它的事情,比如给你写代码、画画、写小作文等等,这可能给别有用心的人一些可乘之机。这个部分就是给应用的能力做一些限制,避免溢出应用的能力范围。
AI扩展能力
上面我已经介绍了插件、工作流、知识库、数据库都是用来做什么的,因为我这个应用实际上不会用到这些东西,所以暂时不展开讲了,以后经验多了再开一篇文章。
它们背后的基本原理都是:大模型调用API,API处理后返回数据,大模型再组织语言给用户。如果你想了解插件、知识库背后的具体工作原理,我之前写过两篇大模型应用开发的文章,可以参考下:
发布应用
应用调试完毕之后,点击右上角的"发布"按钮,就可以发布出去使用了。
发布应用前,我们最好给应用起个好听的名字、设计个好看的图标。点击页面左上角的编辑小按钮就可以做些事了,扣子特别周到的为我们提供了一个AI生成图标的功能,它会根据Bot名称和功能介绍进行生成。
发布时,我们可以把这个应用发布到多个地方,包括:豆包、飞书、微信客服、微信公众号等,微信平台还是很有用的,相信很多同学都要跃跃欲试了。
这里简单看下如何在"豆包"中使用你创建的应用。进入豆包,左侧对话列表中就可以找到我们的应用,点击进入就可以通过聊天的方式使用这个应用了,点击左上角的隐藏功能按钮可以分享这个应用给其它用户。
分享应用时可以设置可见范围,如下所示,包括:完全公开、只能通过链接发现和仅自己可见。
管理应用
用户创建的应用可以在个人空间中看到,点击哪个就能进入相应的编辑页面。
AI应用的意义
目前AI应用主要解决了两个方面的问题:
一是降低了大模型的使用门槛。大家使用日常用语和大模型对话时,AI并不能很好的理解人类的意图,输出的随机性很大,这也是大家感觉AI比较弱智的原因。所以目前编写大模型的提示词还是个技术活,而AI应用就是通过内置提示词的方式,让对话上下文变得更确定,输出也就更符合人的预期。
二是增强了大模型的能力。比如实时联网就能让AI查询到最新的数据,知识库、数据库就能让AI在某些方面回答的更为专业,分析和生成声音、图片、视频则更是让AI的使用愈加自然。
以上就是本文的主要内容,其实扣子Coze的这种应用开发方式在10个月之前就已经有人在搞了,当时我加入了一个知识星球,获赠了一些免费资源,使用GPT-3.5开发了几个小应用,有兴趣的也可以试试。
但是感觉扣子Coze在各个地方考虑的都更周到,用起来很舒服,只是大模型的能力和GPT-4还有点差距,希望能尽快赶上。