在dify中实现多选字段需严格配置字段类型为“多选”、标识名仅含英文数字下划线(如selected_tags),引用路径为{{form.selected_tags}};支持三种安全使用方式:换行列表({{#each}})、逗号拼接({{join}})、json数组({{json}});下游节点须显式映射并用代码节点校验数组类型。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中让用户从多个预设选项中自由勾选若干项,并将所选内容以结构化数组形式准确传入后续节点参与逻辑判断或API调用,必须严格遵循字段类型、变量路径与类型转换三者的协同规则,否则会出现空值、字符串拼接错误或JSON解析失败。
配置多选表单字段
进入工作流编辑页→点击「开始」节点→在右侧「输入字段」区域点击「+ 添加字段」。
字段类型选择「多选」,填写字段标识名——【该名称仅支持英文、数字、下划线,且将直接成为变量路径中的关键部分】。例如填入selected_tags,后续所有引用都必须写作{{form.selected_tags}}。
勾选「必填」后,用户至少需勾选一项才能提交;若不勾选,则用户可跳过此字段,但下游节点若未做空值防护,流程会中断。
在提示词或API请求体中安全使用多选结果
方法一:直接展开为换行列表(适合生成自然语言)
在大模型提示词中写入:你关注的领域包括:{{#each form.selected_tags}}- {{this}}{{/each}}。Dify会自动遍历数组,每项前加短横并换行。
方法二:拼接为逗号分隔字符串(适合传给旧系统接口)
使用内置join函数:{{join form.selected_tags ", "}}。注意此处引号必须是英文双引号,空格不可省略,否则输出会粘连如AI,ML,DL而非AI, ML, DL。
方法三:转为JSON数组字符串(适合POST到需要array body的API)
写成:{{json form.selected_tags}}。该函数会把["python", "web"]原样转为合法JSON字符串["python","web"],而非被当作普通字符串处理。
将多选结果传递给下游节点并校验结构
第一步:确认目标节点支持数组输入
并非所有节点都能接收数组——例如「条件判断」节点默认只认布尔/字符串,若想用selected_tags做分支依据,必须先经「代码」节点做类型断言或长度判断。
第二步:在下游节点「输入」配置中显式映射
点击目标节点→展开「输入」设置→添加新输入项→键名设为tags,值设为{{form.selected_tags}}(不是{{node_start.selected_tags}},因为「开始」节点输出字段默认无需加节点ID前缀)。
第三步:在「代码」节点中强制校验并补默认值
插入一个「代码」节点,输入配置设为{"raw_input": "{{form.selected_tags}}"},执行脚本写:return {"tags": Array.isArray(raw_input) ? raw_input : []};。这一步能兜底拦截因前端异常导致的非数组输入,避免后续节点崩溃。











