最近在智能体学习交流群里回复了一些小伙伴的问题。
发现其中有一个共性问题不少人没有搞得很清楚:就是在Coze Bot里,工作流到底是基于什么被调用的?
有小伙伴发现,即使在人设提示词里明确指明了什么时候应该调用工作流,但它就是不执行
这个问题其实是一个比较关键的基础问题,所谓基础不牢,地动山摇。咱们学知识要知其然,更要知其所以然,才能为更高阶的功能做好准备。
程哥今天就专门来给大家解释清楚这个原理。
首先看个例子:
在这个例子里,我在人设提示词里什么都没写,是空的。
技能里只有一个工作流test1,工作流非常简单,就是输出“你输入的是一”
在预览的时候,我输入“一”,它就会执行工作流并输出“你输入的是一”
是不是挺神奇?连人设回复逻辑都不需要,就可以正常工作。
如下:
关键就在我的那个工作流描述里:如果用户输入“一”,则执行这个工作流
现在程哥就把Bot调用工作流的原理详细说明一下,这样大家就能理解为什么工作流会被调用了。
首先,Coze Bot默认使用的是豆包 · Function call模型,字面意思也就是函数调用模型。
看这个图:
函数调用模型的意思也就是,大模型会根据用户的输入去判断是否调用某个函数,而工作流就是某个函数。判断的依据就是函数(工作流)的描述。当我输入“一”的时候,大模型就会根据工作流的描述自动匹配到它。
为了更清楚的了解具体原理,我们再来看一下调试区的调用树图。
它完整展示了整个Bot的执行过程,首先从用户输入开始 -> 再到Function call模型 -> 再调用工作流 -> 最后到工作流结束
接下来我们向下滑动来看一下Function call模型的细节
首先看下大模型的输入部分:
解释一下:
"model":"豆包·Function call模型:这个是Function call模型的完整结构
tools:这个是Function call模型中的tools结构,可以看作是大模型的工具箱,里面放的就是在Bot里添加的各种技能,包括插件,工作流等
function:这个是tools工具箱里的第一个技能,也就是我添加的工作流test1,它是一个function(函数)
description:这个是就是工作流test1的描述,大模型会根据这个描述来决定是否调用这个工具
name:这个是工作流test1在系统里的真实名字
type:将这个工具定义为一个函数类型
最后再看下大模型的执行结果:其实就是对工作流test1执行了一次函数调用
可以看出工作流在大模型的结构里就是个函数,是否调用这个函数就看用户输入的要求是否和函数的描述匹配。
所以对一个工作流的正确描述是非常非常重要的,要避免有时候工作流不被正常调用,就一定要给它一个正确的描述。
好了,掌握了以上知识以后,你应该能更好的理解大模型在Coze Bot里的运行原理,可以更从容的管理Bot输出结果的预期了。
不知道程哥讲清楚了没有,觉得还有疑问的小伙伴欢迎给我留言~
今天就这,欢迎关注程哥,和我一起玩AI
更多精彩专栏
-> AI智能体学习&实战
-> 私域AI机器人
-> 自媒体AIP打造
-> AI应用