为啥要使用Dify创建工作流呢?一个基于流程的智能体的实现,特别是基于业务的实现,使用Dify去实现时,通常都是一个对话工作流,当设计到相对复杂一些的流程时,如果将所有逻辑都放在对话工作流中去实现,那么这个对话工作流是比较复杂的,涉及的组件会很多,看上去就比较复杂,就和咱们使用程序实现某个功能时,需要模块化一样,一个工作流就对应于一个相对独立的功能模块,可以简化主模块对话工作流的复杂度,便于修改和维护,同时也可以方便重用。
本文使用一个问卷调查的工作流量来演示创建工作流出过程,问卷调查工作流可以广泛的应用于各种测试和评估的场景。如:心理测试、教学考试。这里以焦虑自评量表做为案例。
1、开始:设置三个入参,分别是query(检索内容)、index(问题序号)和history(问题和答案,方便评分和总结)
2、检索知识库(知识库中有一张焦虑自评量表文档)基于父子分段(向量检索,不使用混合检索是因为向量检索在此案例中更准确,嵌入模型试验bge-m3,TopK=3)
3、使用大模型从检索的内容中输出所有问题、选项及问题数量
4、解析问题列表、选项及问题数量
5、条件判断,为了演示方便,设置为常量3,实际应该设置为变量count(有20道题)
6、按index输出测试题(index初始值为1)
7、当所有题都答完时,输出评分及评估报告。
8、发布为工具,工具调用名称可以自定义,方便在对话工作流中调用。
9、在对话工作流中调用时,需要设置会话变量query、index及history,并维护index+1及history存储的逻辑(代码执行、变量赋值)。