1. 用户输入


用户输入节点定义了应用在运行前需要收集哪些信息,是工作流(Workflow)和聊天流(Chatflow)应用的起点。包含该节点的应用按需触发,触发方式可以是页面交互,也可以是 API 调用。这类应用还能发布为独立 Web 应用或 MCP 服务器,通过后端 API 对外暴露,或作为工具被其他 Dify 应用调用。

注意:一个应用画布中只能有一个用户输入节点。

输入变量

节点收集到的每一项信息都会成为一个变量,下游节点通过引用这些变量来获取输入内容。变量分为系统预置和自定义两类。

预置变量

image-20260604211540515

预置变量由系统自动提供,无需配置。

  • userinput.files:运行时上传的文件。在工作流应用中,该变量已是遗留设计,仅为兼容旧版保留;新建应用建议改用下文的自定义文件字段来收集文件。
  • userinput.query:仅聊天流可用,自动捕获最近一轮对话中输入的文本。

自定义变量

image-20260604211627100

自定义字段用于按需收集各类信息。每个字段都有一个显示名称(Label Name),这是展示在前端界面上的名称。字段类型分为三组:文本、结构化数据、文件。

字段类型解读

image-20260604212011427

文本输入

  • 文本:单行输入框,上限 256 字符,适合姓名、邮箱、标题这类简短内容。
  • 段落:多行文本框,无长度限制,适合较长的描述或正文。

结构化输入

  • 下拉选项(Select):从预设选项中单选,可避免随意输入导致的数据不一致。
  • 数字(Number):只接受数值,适合数量、评分、编号等需要参与计算的数据。
  • 复选框(Checkbox):勾选输出 true,不勾选输出 false,适合确认项或二选一的判断。
  • JSON 代码:接受 JSON 对象,适合传入嵌套的复杂数据。可选地配置 JSON Schema,用于校验输入、向填写方提示字段结构,配置后还能在其他节点中单独引用对象内的某个属性。

文件输入

  • 单文件:上传一个任意支持类型的文件,来源可以是本地设备或文件 URL。该字段输出的变量包含文件的名称、大小、类型等元信息。
  • 文件列表:一次上传多个文件,适合成批处理文档、图片等。后续可接列表操作(List Operator)节点,对文件做筛选、排序或按条件提取。

需要注意的是,用户输入节点只负责接收文件,并不读取或解析文件内容,实际处理要交给后续节点完成:

  • 文档类文件接 Doc Extractor 节点提取文本,供 LLM 理解。
  • 图片接具备视觉能力的 LLM 节点,或专门的图像处理工具节点。
  • CSV、JSON 等结构化文件接代码(Code)节点解析和转换。

当一次上传的文件类型混杂(比如图片和文档同时存在)时,可以先用列表操作节点按类型拆分,再分别送入不同的处理分支。

隐藏与预填字段

有些字段的值在搭建应用时就已经确定,比如某个产品的标识、某个调用方的租户 ID。这类值不来自访客,让访客手动填写既是多余步骤,也容易填错。把字段设为「隐藏并预填」(Hidden & Pre-Filled)后,搭建时直接把值填好,前端界面就不再显示这个字段,而工作流运行时照样能取到它。

典型场景

同一套聊天机器人要投放到多个产品的落地页上,各页面的对话逻辑完全相同,只有「当前是哪个产品」这一点不同。与其为每个产品复制一套工作流,不如只保留一套,在里面放一个隐藏的 productName字段,然后给每个落地页预填各自的产品名。这样,访客在每个页面看到的都像是该产品专属的机器人,实际背后跑的是同一套工作流。

安全提醒:隐藏字段只是“不在前端表单中显示”,并不等于加密或保密。通过分享链接预填时,字段值可能出现在 URL、浏览器历史记录或网络请求中。因此,不要把 API Key、数据库密码、访问令牌等敏感信息放在隐藏预填字段里。敏感信息应使用 Dify 的环境变量或模型供应商密钥配置来管理。

配置步骤:

image-20260604212854718

  1. 在「编辑输入字段」窗口中先取消勾选「必填」——必填与隐藏预填互斥,不能同时开启。
  2. 勾选「隐藏并预填」,也可以填一个默认值,作为运行时没有传入值时的兜底。

字段配好后发布应用。具体怎么把值预填进去,取决于访客是通过哪种方式打开应用的,分两种情况:

1. 分享链接

image-20260604214506242

适用于访客直接通过链接打开 Web 应用的情况。在发布面板的 Web 应用区域,点击左上角快捷设置「Web App」中的齿轮图标,在弹出的表单里填好各隐藏字段的值,再点击启动。此时打开的页面地址栏里,URL 末尾已经自动带上了这些值(以查询参数的形式),把这条 URL 复制出去分享即可。

如果需要一次生成大量链接、每条取值不同,可以不走界面、直接按下面的格式自己拼 URL:

{Web应用地址}?变量名=值&变量名=值

注意,如果字段值里包含空格、中文或特殊符号,需要先进行 URL 编码。

例如,产品名是:

Acme Corp

URL 中应写成:

Acme%20Corp

完整示例:

https://udify.app/chat/abc123?productName=Acme%20Corp

2. 站内嵌入

适用于把应用以 iframe 或脚本的形式嵌入自己网站的情况,按各访客拿到的值是否相同,又分两种做法。

如果所有访客拿到的值都一样(比如整站统一的地区、某个页面固定对应的产品),在发布面板的「嵌入」里选择「预填隐藏字段」,把值填好即可。填入的值会被直接写进生成的 iframe URL 和脚本片段的 inputs 对象中,对每位访客都一致。

如果每位访客拿到的值各不相同(比如当前登录者的 ID、访客正打开的页面),就不能在发布面板里写死,而要在嵌入脚本中处理:把每个隐藏字段作为 inputs 对象的一个键,对应的值不写固定内容,改由网站在渲染页面时根据当前上下文实时算出。这样每位访客打开页面时,拿到的都是属于自己的那份值。

后续连接

字段配置完成后,常见的下游接法有:把输入送进 LLM 节点处理,接知识检索(Knowledge Retrieval)节点查找相关资料,或用 If/Else 节点按输入内容分出条件分支。

评论

0
还没有评论,来写第一条吧