Dify多图片输入处理:高效生成分析报告指南
要在Dify工作流中实现多张图片的批量接收,并驱动大模型根据图像内容自动生成结构化分析报告,必须突破默认的单图限制,主动开启多模态解析链路,并确保下游模型能同时处理多个图像特征。否则系统只会提取首张图片,甚至直接报错。
操作前需确认三个关键配置:工作流类型必须选Workflow,启用多模态输入并配置File list字段,同时关闭Document Extractor的“Extract text only”开关,再通过{{#each $input.img_list}}模板语法遍历多图描述,最终接入Qwen-VL模型生成结构化报告。以下逐步拆解具体实施方法。
搭建支持多图输入的工作流
进入Dify Studio,选择Create from blank创建空白工作流。关键步骤:必须选择Workflow类型,切勿选Chatflow。Chatflow不解析文件内容体,上传的多张图片仅保留文件名称,下游节点无法获取实际图像数据。
工作流创建完成后,立即点击画布空白区域,进入全局设置。在“Input Schema”中勾选【Enable multi-modal input】。若跳过此步,所有Image/File字段将被视为普通字符串处理,payload中缺少binary_data字段,后续流程全部失效。
多图输入节点的配置方案
方案一:单节点支持批量上传(适用于同场景多图分析)
从左侧面板拖入User Input节点,点击配置,添加字段,字段类型选择File list,变量名设置为img_list(全小写+下划线,禁止包含空格)。标签名称填写“上传多张图片”,允许上传类型选Both,支持文件类型仅勾选Image,最大上传数量设为20(Dify平台硬性限制)。
方案二:使用多个独立Image字段(适合分类明确的图文组合场景)
添加两个Image类型字段,变量名分别命名为front_img和back_img,标签设为“正面图”和“背面图”。注意运行时这两个字段会生成独立的{{$input.front_img}}和{{$input.back_img}}路径,无法通过{{$input.img_list.0}}索引访问。
重要提示:若变量名采用FrontImg或front-img格式,下游LLM节点将无法识别{{$input.front_img}}引用,导致undefined error。变量名必须使用全小写字母加下划线命名。
文档提取器接入与多图解析开启
第一步:拖入Document Extractor节点,输入参数选择img_list(对应File list字段),或分别连接front_img和back_img(需使用两个提取节点)。
第二步:在Document Extractor配置面板中,关闭“Extract text only”开关。该开关默认启用,极易被忽略——开启后所有图片仅经过OCR或ASR管道,Qwen-VL等视觉模型无法获取原始像素数据,导致物体识别、布局分析、跨图比对等核心功能失效。
第三步:确认输出变量类型。当输入为File list时,Document Extractor输出格式为array[string],每个元素对应单张图像的结构化描述文本。该数组可直接传递给多模态大模型节点。
多模态大模型连接与报告生成
拖入Multimodal LLM节点,模型选择Qwen-VL-7B或Qwen-VL-14B(需确认平台已部署)。在Prompt模板中采用以下结构:
“你是一名专业图像分析师。请基于以下{{#each $input.img_list}}第{{$index + 1}}张图:{{this}} {{/each}}内容,按照「对象识别→异常检测→关联推理」的三段式结构生成中文分析报告,总字数控制在800字以内。”
注意:禁止使用{{#each $input.img_list}}嵌套另一个{{#each}},Dify模板引擎不支持双重循环。必须通过单个{{#each}}一次性展开所有图像描述文本,让LLM自行分图理解。
最后连接Text Output节点,将LLM的输出直接返回给用户,至此完整链路配置完成。
