在前面三篇,我们分别创建了插件,插件里面添加了多个工具。接着,我们把插件添加到工作流内,成为一个开放平台API的调用节点,从而创建出一条业务流。分别是,语音伪造检测工作流,以及通话语音内容分析工作流。有了工作流,表示我们可以通过 API 调用,但是终端客户未必会用 API 去调用,因此我们通过创建机器人,并且发布到对应的平台来应用。
机器人的配置有很多,我们就简单地从如何把工作流加到机器人里面即可。
1. 语音伪造检测机器人
我们在构建这个机器人的时候,其实配置基础的模块,prompt,工作流,开场白也就够了。不过,由于鉴权的特殊性,所以还运用了,数据库和快捷指令。
1.1. 创建 bot
进到个人空间 -> Bots -> 右上角点击创建 Bot。输入名称以及介绍就可以了,图标可以让 coze 自动帮你生成。
1.2 添加开场白
设置开场白可以让用户知道,你这个机器人是做什么的,是一个富文本的编辑框。下面也可以配置开场白的预置问题,会出现在开场白下方,让用户去点击,不过我们不需要就关掉了。
1.3. 添加工作流
如果后面要发布,就必须选择已发布的工作流,不然要发布这个机器人的时候是不允许发布的。
我们点击要添加的工作流即可,添加前也可以看一下这个工作流的输入,以便选择正确的那个工作流。
选择工作流后,会创建一个副本到自己的工作流里面,而不是直接引用别人或者自己已经创建好的工作流。
添加好后的样子
1.4. 写 Prompt
写 prompt 可以参考吴恩达老师在 DeepLearning 上的提示词课程,遵循他的方法就行,或者写完后让 coze 给你优化。
v1
text
# 角色
你是一个精准的语音伪造检测机器人,能够将用户输入的 app_id ,app_sercrect, file_url 和 ext 信息,会立即调用 speech_deep_fake_detect_2 工作流,并将返回结果原封不动地输出给用户。
## 技能
### 技能 1: 处理文件并输出结果
1. 收到用户提供的 file 信息,即刻调用 speech_deep_fake_detect_2 工作流。
## 限制:
- 只处理与语音伪造检测相关的操作,拒绝处理无关任务。
- 严格按照上述流程和步骤进行操作,不得随意更改。
- 输出的结果必须准确、完整,不得有遗漏或错误。
这个是第一版本的提示词,告诉机器人是干嘛的,然后指定输入什么参数后,调用什么工作流。接着再明确机器人的技能,与限制。
如果不告诉机器人要调用工作流,机器人是不会自己去调用的,或者大部分情况下不会去调用的,因此需要说清楚什么情况下去调用工作流。
这样子是可以调用到工作流,但是每次都要输入这 4 个参数,挺麻烦的。所以就要记下来用户的应用,用到数据库。见1.5。
v2
改版后,就指定,在输入什么参数后,记录到某个数据库。我原本以为可以写简单点,但是时好时坏,所以我干脆就直接写清楚一点,什么参数写到哪个表里面。
那为了让用户下次进来不用再传 app id 和 app secret 就需要指定一个技能。再次进入的时候,会去根据用户 id 关联数据库里面的数据。
text
# 角色
你是一个精准的语音伪造检测机器人,能够将用户输入的 app_id 和 app_sercrect 妥善记录在数据库 user_app 中。当用户再次进入时,可依据其用户 id 直接关联相关数据,无需重复输入。当用户提供 file_url 和 ext 信息,会立即调用 speech_deep_fake_detect_2 工作流,并将返回结果原封不动地输出给用户。
## 技能
### 技能 1: 记录用户数据
1. 当用户输入 app_id 和 app_secret时,将其完整准确地记录到数据库 user_app的app_id和app_secret中。
2. 当用户上传语音后,即获取到file_url后,将其file_url和ext完整准确地记录到数据库 file的file_url和ext中。
### 技能 2: 关联用户数据
1. 用户再次进入时,根据用户 id 迅速从数据库中关联获取对应的 app_id 和 app_secret。
### 技能 3: 处理文件并输出结果
1. 收到用户提供的 file 信息后,即刻调用 speech_deep_fake_detect_2 工作流。
## 限制:
- 只处理与语音伪造检测相关的操作,拒绝处理无关任务。
- 严格按照上述流程和步骤进行操作,不得随意更改。
- 输出的结果必须准确、完整,不得有遗漏或错误。
1.5. 创建数据库
可以让 coze 根据你的提示词去创建数据库,也可以自己去创建,写清楚就行。
我创建了 user_app 和 file 表。user app 用来记录用户的 app 信息,不用每次进来都要再输一次。file 用来记录每次上传的语音,用来记录复查用。
1.6. 添加快捷指令
我们的 prompt 里面虽然写了 能够将用户输入的 app_id 和 app_sercrect 妥善记录在数据库 user_app 中
,但是用户怎么输入,会不会这么输入,我们其实不知道。如果要让客户输入,应该规范客户的输入,就输要他们输入的数据即可。因此,才考虑加快捷指令。添加了 2 个快捷指令,分别是设置应用,上传语音。
快捷指令,就会出现在输入框上方,点击就会弹出要让用户输入的参数,跟表单一样。
当然用户自己输入也是可以的。
设置应用
按钮名称,指令名称,指令描述就按照实际的填写即可。我们需要让用户输入 app id 和 app secret,所以在组件就输入这两个参数。输入后的结果,我们需要发送给大模型做 input 才知道结合 prompt 要做什么。因此,在指令内容里面,就需要拼接或者说模式化,我们要发送给大模型的 input。后面我再看下实际的效果。
上传语音
上传语音我们需要用户传路径,那怎么办,有些用户语音都是在本地没有路径。所以这时候,选择快捷指令是最好的方法,参数 file_url 的类型选择上传文件,还可以对文件类型做约束。不用担心说我传的是文件,怎么传给大模型。在指令内容里面拼上 file_url 后,会自动地把上传的语音文件改成一个在 coze 服务器的可访问的地址传给大模型。
当然用户要直接填写可访问的地址也是可以的,旁边有个按钮点击就可以变成输入框。
1.7. 测试效果
先设置应用,图片我是拼接的,忽略变量。
可以看到大模型收到我创建好的应用后,会把 app id 和 app secret 记录到数据库里面,可以在右上角有一个 Memory 里面已存数据库查看。
再上传语音,左边是我直接传 url,右边是我重新上传一条语音的结果,不影响。
可以看到大模型在收到语音后,会先去把 file 数据写入到 file 数据库,然后再去调用工作流。虽然 input 里面的 file_url 用的是文件名,但是下面大模型调用工作流的时候,file_url 已经转成可访问的地址了。这也是为什么在设计插件里面的工具的时候,流媒体文件建议用 url 的方式传的原因。
最下面就是输出的结果,这个数据接口也就是我们在工作流里面指定的 output。
2. 通话语音总结机器人
这边我们就不再重复创建的流程,我们直接看最终的效果。一样我们也是配置了快捷指令,来方便用户的输入。大模型,也是调用了 call_record_summary 来做分析。
最后的结果,还记得的朋友,分为 3 块:
- 通话总结
- 客户问题
- 客服解决方案及提供的信息
- 通话中提取的信息点
- 分离后的语音数据,合并成了一条 2 个声道的语音
- 语音识别的内容
可能最后语音识别的准确率并没有到90,但是大模型依旧可以通过上下文去分析通话的内容
3. 发布
发布成功后,就可以在 Bots 商店找到 语音伪造检测机器人 啦,这个 app id 和 app secret 可以给大家试用但是次数有限
- fd3a68624f194edead2935e54bad8cb4
- 8cd69d45cd504b519ab0685508c37584
4. 总结
其实机器人里面还可以很多优化的地方和联动的地方,比如说语音伪造检测机器人里面做完一个动作后,可以配置引导语,引导进行上传语音。通话语音总结的,可以再配置其他工作流,抽取出来通话内容里面的意图,姓名等信息。不过这个文档也只是简单地讲一下,怎么在机器人里面配置工作流,以及如何触发到工作流,并且如何让用户更方便或者更有针对性地输入。
下一篇,我们讲开始使用 API 来调用工作流,Coze使用开放平台接口-【5】API 调用。