背景前摇:
最近搭建了一个智能体,功能是接收同学们的问题生成回复,主要起一个辅助答疑的效果。
预期是问题发给智能体——智能体调用工作流——生成回答并把问答记录写入多维表格——回复答案并结束。
然而,就这么简单的智能体和工作流,出现了一个奇葩问题。
调度智能体的大模型,每次在收到用户输入的时候,都得先自己把问题回答一遍,然后再传给工作流。
正文:
解决过程:
用我自己搭着玩的一个问答游戏工作流示例:
每个智能体页面上都有一个可选的大模型选项,下图我红框圈出的位置就是调度这个智能体的大模型,可以理解为智能体的指挥大脑,由TA来判断智能体调用什么工具来响应用户。
大家如果给大模型输入内容,看到右边“调试”这个扳手一样的按钮单击展开,发现最先就会调用这个调度大模型,其后才是我们的插件。


一般来说,这个不会有什么问题,但是偏偏,我的答疑智能体就出现了下面这个情况:
用户输入:你好,请问1+1等于多少?
预期是智能体把这问题给我的答疑工作流,工作流里面的大模型生成回复“同学你好,1+1等于2”,然后写入飞书表格,并且返回给智能体回答。
然而,出 bug 的实际效果是:
用户输入:你好,请问1+1等于多少?
这个调度智能体先生成了一个答案:同学,1+1等于2噢,这个是数学问题。
然后把TA自己回复的这句话,即“同学,1+1等于2噢,这个是数学问题。”喂给了后续的工作流,这样以来,工作流内部的大模型节点就一脸懵逼了呀,这是啥问题啊?要我干啥啊??
于是就开始响应莫名其妙的答案:“你好同学,看起来似乎你在帮其他同学解答数学问题…”
诡异的地方在于,这个bug很难定位,因为工作流内部运行完全是正确的,但是一到智能体就报错,因为工作流没有这个调度模型横插一脚,那肯定是对的。
让智能体不错误响应的解决方法:
1.精简提示词:
之前的提示词除了告诉智能体,在收到用户的内容时调用这个引用的工作流,并且限制不允许自行回答用户问题,必须交给工作流处理之外,还不够。
还必须删去一些提示词里过多的背景知识,比如这个场景下的常见操作,项目背景等,把这个提示词变得很简单直白,甚至很傻瓜,就告诉智能体一件事——》用户的输入来了,你给我调用工作流解决,其他的你啥也不要想!!!
一位大佬给了一段参考提示词,他的功能比我的还复杂一些,我这个就只有纯调用工作流一项功能,大佬说,一般他给智能体的身份是《工作流调用机器人》,也是为了避免外面这个调度智能体的影响——TA会先接收到用户这句话,然后根据提示词看看下一步该怎么做,调用工具还是直接回复。

2.工作流描述增添参数说明:
之前大家创建工作流的时候,是不是这里的描述都是瞎写意思意思的?巧了么,我也一样,看挺多B站UP也很随意。
但这其实不是个好习惯,因为调度大模型会参考这个描述,来理解这个工具是做啥的,从而决定什么时候用到这个工作流。
所以,工作流的描述千万要准确明了,不要瞎写,但这只是基本操作,还不够解决我们这个诡异的bug。
在这里,要对工作流里要传入的参数给调度模型做一个说明,告诉TA你希望TA《把什么东西给这个工作流的什么参数》。

这样才彻底解决了这个调度智能体横生枝节,添油加醋的问题。
3.飞书聊天清空上下文:
上下文也会影响智能体的发挥,不仅仅是调试编辑页面,就连飞书聊天的上下文也会影响智能体的输出效果。
所以在更新智能体以后,务必在飞书跟智能体的聊天框中输入“/clear”命令,(注意必须得是小写,不然识别不了)
把过去的聊天记录上下文清空,否则,即便是工作流、智能体都调好了,飞书中的聊天机器人可能还是那副本性难移的死相。
Coze的官方文档也有对清空上下文的描述:
出现这个问题的可能原因:
可能是Coze平台的Function Call功能不够完善,比较少遇到这种需要把用户的输入原封不动送给工作流执行的情况,加上工作流本身可能也搭建得比较思路清奇,所以阴差阳错就触发了这个诡异的Bug。
一些试了没有用不会解决问题的办法:
有建议我试试把模型换为DeepSeekV3,试了,这个不解决问题。
其他相关知识:
使用快捷指令的时候,有一个选项“直接使用插件、工作流”,如果勾选该选项,则意味着不经过调度大模型的判断,在收到指令之后就直接启动工具。
如果没勾选的话,结果也大概率还是会调用工具,只是中间多了一层调度大模型这个头脑的判断。
1万+

被折叠的 条评论
为什么被折叠?



