Dify工作流变量篇

Dify工作流变量篇
最新回答
仙蒂瑞拉

2023-01-24 13:08:52

Dify工作流变量详解

在Dify的工作流创建中,变量扮演着至关重要的角色,它们作为动态数据容器,能够存储和传递不固定的内容,在不同的节点内被相互引用,实现信息在节点间的灵活通信。本文将详细介绍Dify工作流中的变量类型,包括系统变量、环境变量和会话变量。

一、系统变量

系统变量是在应用内预设的系统级参数,可以被其它节点全局读取。系统级变量均以sys开头。根据应用类型的不同(Workflow类型或Chatflow类型),系统变量也有所区分。

1. Chatflow类型系统变量

  • sys.query:数据类型为String,表示用户在对话框中初始化输入的内容。
  • sys.files:数据类型为Array[File],表示用户在对话框内上传的图片。需要注意的是,图片上传功能需在应用编排页右上角的“功能”处开启。
  • sys.dialogue_count:数据类型为Number,表示用户在与Chatflow类型应用交互时的对话轮数。每轮对话后自动计数增加1,可以和if-else节点搭配出丰富的分支逻辑。
  • sys.conversation_id:数据类型为String,表示对话框交互会话的唯一标识符,将所有相关的消息分组到同一个对话中,确保LLM(大型语言模型)针对同一个主题和上下文持续对话。
  • sys.user_id:数据类型为String,表示分配给每个应用用户的唯一标识符,用以区分不同的对话用户。
  • sys.app_id:数据类型为String,表示应用ID,系统会向每个Workflow应用分配一个唯一的标识符,用以区分不同的应用,并通过此参数记录当前应用的基本信息。
  • sys.workflow_id:数据类型为String,表示Workflow ID,用于记录当前Workflow应用内所包含的所有节点信息。
  • sys.workflow_run_id:数据类型为String,表示Workflow应用运行ID,用于记录Workflow应用中的运行情况。

2. Workflow类型系统变量

  • sys.files[LEGACY]:数据类型为Array[File],表示文件参数,存储用户初始使用应用时上传的图片。同样,图片上传功能需在应用编排页右上角的“功能”处开启。
  • sys.user_id:数据类型为String,表示用户ID,每个用户在使用工作流应用时,系统会自动向用户分配唯一标识符,用以区分不同的对话用户。
  • sys.app_id:数据类型为Number(注意与Chatflow类型的String类型不同),表示应用ID,用于区分不同的Workflow应用。
  • sys.workflow_id:数据类型为String,表示Workflow ID,用于记录当前Workflow应用内所包含的所有节点信息。
  • sys.workflow_run_id:数据类型为String,表示Workflow应用运行ID,用于记录Workflow应用中的运行情况。

二、环境变量

环境变量用于保护工作流内所涉及的敏感信息,如API密钥、数据库密码等。它们被存储在工作流程中,而不是代码中,以便在不同环境中共享。环境变量主要支持String字符串、Number数字和Secret密钥这三种数据类型。

环境变量具有以下特性:

  • 安全性:环境变量能够保护工作流中的敏感信息,防止信息泄露。
  • 共享性:环境变量可以在不同的工作流节点之间共享,提高工作流的灵活性和可维护性。
  • 可配置性:用户可以根据需要在工作流中配置和管理环境变量。

三、会话变量

会话变量面向多轮对话场景,而Workflow类型应用的交互是线性而独立的,不存在多次对话交互的情况,因此会话变量仅适用于Chatflow类型应用。

会话变量允许应用开发者在同一个Chatflow会话内,指定需要被临时存储的特定信息,并确保在当前工作流内的多轮对话内都能够引用该信息。如上下文、上传至对话框的文件(即将上线)、用户在对话过程中所输入的偏好信息等。会话变量为LLM提供了一个可以被随时查看的“备忘录”,避免因LLM记忆出错而导致的信息偏差。

会话变量支持以下六种数据类型:

  • String:字符串类型。
  • Number:数字类型。
  • Boolean:布尔类型。
  • Array:数组类型。
  • Object:对象类型。
  • File:文件类型(即将上线)。

会话变量具有以下特性:

  • 临时性:会话变量只在当前Chatflow会话内有效,会话结束后变量将被清除。
  • 可编辑性:用户可以在会话过程中根据需要编辑和更新会话变量的值。
  • 引用性:会话变量可以在当前工作流内的多个节点中被引用,实现信息的灵活传递。

变量赋值节点的使用

在Dify工作流中,用户可以通过变量赋值节点为变量赋值。变量赋值节点的使用截图如下:

如果想要查看会话变量值在应用对话时的变化情况,可以点击Chatflow应用预览页上方的会话变量icon进行查看。

注意事项

  • 为避免变量名重复,节点命名不可重复。
  • 节点的输出变量一般为固定变量,不可编辑。

综上所述,Dify工作流中的变量类型丰富,功能强大,能够满足不同场景下的需求。通过合理使用系统变量、环境变量和会话变量,用户可以构建出更加灵活、高效的工作流应用。