首页 大模型

DeepSeek+Dify 高级应用,构建工作流

分类:大模型
字数: (2611)
阅读: (16)
0

上篇文章讲到了 DeepSeek+Dify 构建知识库的流程,通过 Dify 提供的分段和检索,可以将导入的文件生成知识库供 DeepSeek 进行查询和引用。这次我们来看看 Dify 的高级功能,通过知识库等功能实现更复杂的工作流。

工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。

Dify 工作流分为两种类型:

  • Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
  • Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。

今天我们会以一个 Chatflow 的例子来一步步看工作流是如何构建使用的。

工作流创建知识库

由于该样例工作流依赖知识库,所以我们先创建两个知识库,分别用 DeepSeek 指导手册和 DeepSeek 赋能职场的文档来创建:

DeepSeek+Dify 高级应用,构建工作流创建工作流

现在来创建一个工作流,在工作室模块,点击从应用模版创建

DeepSeek+Dify 高级应用,构建工作流

点击工作流,选择一个问题分类+知识库+聊天机器人的模板,创建。

DeepSeek+Dify 高级应用,构建工作流

创建完成后会自动打开该工作流,进行编辑,点击开始节点,右边出现一堆字段:

DeepSeek+Dify 高级应用,构建工作流

这些字段是变量,Dify 的变量一共有三种、分别是系统变量、环境变量和用户变量。

变量系统变量

系统变量指的是在 Chatflow / Workflow 应用内预设的系统级参数,可以被其它节点全局读取。系统级变量均以 sys开头。

主要有:

  • sys.user_id:每个用户在使用工作流应用时,系统会自动向用户分配唯一标识符,用以区分不同的对话用户
  • sys.app_id:系统会向每个 Workflow 应用分配一个唯一的标识符
  • sys.workflow_id用于记录当前 Workflow 应用内所包含的所有节点信息
  • sys.workflow_run_id用于记录 Workflow 应用中的运行情况
环境变量

环境变量用于保护工作流内所涉及的敏感信息,例如运行工作流时所涉及的 API 密钥、数据库密码等。它们被存储在工作流程中,而不是代码中,以便在不同环境中共享。如下图所示可以添加环境变量:

DeepSeek+Dify 高级应用,构建工作流用户变量

当我们需要用户传入一些特定的信息的时候,可以通过添加变量来实现。比如这里我们添加2个变量 use1、use2,用于给用户提问:

DeepSeek+Dify 高级应用,构建工作流DeepSeek+Dify 高级应用,构建工作流DeepSeek+Dify 高级应用,构建工作流

 

设置完用户变量之后,后面的节点就可以使用了。

这里介绍下各个节点的功能。

节点

节点是工作流中的关键构成,通过连接不同功能的节点,执行工作流的一系列操作。在dify的工作流中一共有下面几种类型的节点。

开始节点

刚刚已经看过了,开始节点主要是可以添加用户变量供后续节点使用。

问题分类器

可以使用创建的知识库。问题分类器可以作为知识库检索的前置步骤,对用户输入问题意图进行分类处理,分类后导向下游不同的知识库查询相关的内容,以精确回复用户的问题。

比如这个工作流的第二个节点就是,我们可以这样配置:

DeepSeek+Dify 高级应用,构建工作流

选择推理模型,问题分类器基于大语言模型的自然语言分类和推理能力,选择合适的模型将有助于提升分类效果;

选择输入变量,指用于分类的输入内容,支持输入文件变量。问答场景下一般为用户输入的问题 sys.query;这里我们也选择 sys.query

编写分类标签/描述,你可以手动添加多个分类,通过编写分类的关键词或者描述语句,让大语言模型更好的理解分类依据。这里我们选择两个分类,分别是使用问题和赋能职场。

分类里还可以使用变量,输入 / 即可弹出之前设置的变量。

高级设置,可以酌情使用,比如:

  • 指令:你可以在 高级设置-指令里补充附加指令,比如更丰富的分类依据,以增强问题分类器的分类能力。
  • 记忆:开启记忆后问题分类器的每次输入将包含对话中的聊天历史,以帮助 LLM 理解上文,提高对话交互中的问题理解能力。
  • 图片分析:仅适用于具备图片识别能力的 LLM,允许输入图片变量。
知识检索

从知识库中检索与用户问题相关的文本内容,可作为下游 LLM 节点的上下文来使用。比如工作流下一步节点:

DeepSeek+Dify 高级应用,构建工作流DeepSeek+Dify 高级应用,构建工作流

这里有两个知识检索节点,分别引用不同的知识库。点击召回设置可以设置知识库的召回策略:

DeepSeek+Dify 高级应用,构建工作流
  • TopK代表按相似分数倒排时召回分段的最大个数。TopK 值调小,将会召回更少分段,可能导致召回的相关文本不全;TopK 值调大,将召回更多分段,可能导致召回语义相关性较低的分段使得 LLM 回复质量降低。
  • 召回阈值(Score)代表允许召回分段的最低相似分数。 召回分数调小,将会召回更多分段,可能导致召回相关度较低的分段;召回分数阈值调大,将会召回更少分段,过大时将会导致丢失相关分段。

这里先使用默认值。

LLM 节点

调用大语言模型的能力,处理用户在 “开始” 节点中输入的信息(自然语言、上传的文件或图片),给出有效的回应信息。

这里测试工作流的 LLM 节点配置成硅基流动的 DeepSeek:

DeepSeek+Dify 高级应用,构建工作流

该测试工作流主要使用的节点就是以上这些,还有一些比较常用的节点,这里也介绍一下:

条件分支

主要用于流程节点中的逻辑判断。功能也很丰富,自主性特别高。

DeepSeek+Dify 高级应用,构建工作流

可以设置 IF ELIF ELSE 的条件变量,这里的意思就是 if sys.user_id == 1,else if sys.user_id == 2, else 这三种条件满足,分别会走到不同的节点。

HTTP 请求

允许通过 HTTP 协议发送服务器请求,适用于获取外部数据、webhook、生成图片、下载文件等情景。它让你能够向指定的网络地址发送定制化的 HTTP 请求,实现与各种外部服务的互联互通。

DeepSeek+Dify 高级应用,构建工作流

这里可以暴露接口给工作流使用,比如到了某一步调用一个接口设置状态或者插入数据库等。

直接回复

定义一个 Chatflow 流程中的回复内容。

这个就很简单了,我们工作流最后的节点就是这个,不需要设置,直接使用默认的即可。

DeepSeek+Dify 高级应用,构建工作流测试工作流

现在我们完整的工作流已经构建完成,现在来预览测试一下:

DeepSeek+Dify 高级应用,构建工作流

问一个简单的问题:

DeepSeek+Dify 高级应用,构建工作流DeepSeek+Dify 高级应用,构建工作流DeepSeek+Dify 高级应用,构建工作流

可以看出工作流正常完成,且通过知识库检索完成且引用到了知识库。

然后点击发布,就可以直接使用啦。

转载请注明出处: CHATWEB

本文的链接地址: https://chatweb.com.cn/post-49.html

评论列表:
评论本文(0)
empty

暂无评论