继上一篇文章,成功完成Dify本地部署后,主要做了一些workflow和Agent的应用实现,整体感觉dify在工作流可视化编排方面非常好,即使部分功能无法实现,也可以通过代码执行模块或者自定义工具来实现(后续再具体分享),agent方面也有提示词引入、变量定义、知识库引入和工具引入等,同时支持多轮对话,总体感觉workflow和agent结合着用非常方便,供大家参考。本次要是在游泳健身方面实现了用户提出的有关游泳健身方面问题意图识别、分类,包括有关游泳健身和健身app使用方面的咨询,最终形成规范化问题反馈输出,这里设计到如何构建知识库,如何设计workflow、如何将工作流发布为工具,如何在agent中引入前面发布的工具,最终通过agent实现与用户友好的问答交互。后续结合工作开发更多的基于workflow和agent的应用。
一、知识库构建
这部分内容主要是准备两个markdown文件,用户构建两个知识库,分别为游泳健身知识库和健身app知识库,这里不细说了,直接用dify的知识库构建功能即可,知识选择embedding模型时尽量选择成熟的维度大一点的模型即可,比如bge-m3或nomic-embed-text等。
二、根据用户问题进行意图识别和反馈
1.构建workflow流程:利用dify创建workflow应用,主要实现从用户输入问题到最终回复问题的反馈,将该任务进行步骤分解,主要包括用户问题输入接收、用户意图识别、用户问题分类、分类知识检索、结合知识库检索结果的问题回复、回复结果合并,回复结果规范化输出等。详见下图。
2.将上述workflow流程发布为工具:利用dify的发布功能,将问题发布为工具,工具名称和工具调用名称最好用英文及下划线(这里的名称为swim_assistantTool),工具描述可以是中文。发布完成后,在agent的工具模块就可以查看到最新发布的工具了。
3.构建用户问题对话Agent:利用dify构建Agent应用,详见下图,记得将第2步的工具引入,如果觉得回答不合适,也可以将前面构建的两个知识库也引入。
三、应用测试效果
1.直接使用workflow,优点是直接查看问题的返回结果,缺点是只能做一次回复,多次回复需要新的对话。详见下图。
2.使用agent进行多轮对话,详见下图。