dify多图视觉分析流需构建workflow应用,集成万物识别与json校验插件,通过图意解析器定性任务,branch节点按图像数量分流:双图走差分分析(定位坐标/状态/数量变化),多图走聚类或api归因,最终llm生成带字段引用的逻辑结论。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify智能体能同时接收多张图片,自动识别各自内容,再进行跨图比对(如物品增减、位置变化、状态差异),最后输出带逻辑链条的分析结论——这不是单图OCR或描述任务,而是要求视觉理解+关系建模+推理生成三者协同。
准备多模态运行环境
登录 Dify 控制台(https://cloud.dify.ai 或你的私有部署地址)→ 创建新应用 → 选择 “Workflow” 类型 → 命名为“多图视觉分析流”。【必须选Workflow而非Chatbot,否则无法接入图像节点与分支逻辑】
在左侧“工具库”中搜索并启用两个关键插件:「万物识别(Qwen-VL 或 LLaVA-1.6)」和「JSON Schema 校验器」。前者负责图文联合解析,后者用于强制后续节点接收结构化输出,避免自由文本导致流程断裂。
构建主控意图识别节点
添加第一个节点:类型选“LLM”,命名为“图意解析器”。
在提示词中明确约束输入格式:“你是一个多图视觉分析Agent的首层控制器。用户将上传2–4张图片,每张附带简短标签(如‘入库前’‘入库后’)。请仅输出JSON,字段为:{‘image_count’: int, ‘analysis_type’: ‘对比类’|‘变化类’|‘一致性类’, ‘key_objects’: [string], ‘required_relations’: [string]}”。
勾选“强制JSON输出”,并填写Schema示例:{"image_count":2,"analysis_type":"变化类","key_objects":["纸箱","托盘"],"required_relations":["位置偏移","堆叠层数变化"]}。这一步不处理图像本身,只做任务定性,为后续分支提供路由依据。
按图像数量动态分发处理路径
添加“Branch”节点,类型选“If/Else”,判断条件设为:{{ previous_node.output.image_count }} == 2。
分支A(True)→ 进入“双图差分分析流”;分支B(False)→ 进入“多图聚类归因流”。
注意:Dify 的 Branch 节点不支持大于/小于比较,必须用精确等值判断,否则会跳过整个分支。若需支持3张以上,需额外叠加 Branch 节点嵌套,不可写成 >2。
双图差分分析流:定位差异项并标注依据
第一步:添加两个并行“Image Recognition”节点,分别标记为“图A解析”和“图B解析”。配置相同:模型选 Qwen-VL,提示词统一为:“请逐项识别图中所有可定位物体,返回JSON数组,每项含字段:{‘name’: string, ‘bbox’: [x1,y1,x2,y2], ‘state’: string(如‘完好’‘破损’‘开启’), ‘count’: number}”。
第二步:添加“Code”节点,命名为“差异比对引擎”。Python代码逻辑如下:
输入变量:output_a(来自图A解析)、output_b(来自图B解析);输出变量:delta_report(dict)。
核心逻辑:遍历 output_a 和 output_b 中的 name 字段,对同名物体比对 bbox 偏移量(>15像素记为“位移”)、state 变化(如‘关闭’→‘开启’)、count 差值(±1以上记为“增减”);对未匹配 name 单独归入“新增项”或“消失项”。最终输出结构化差异字典,含“变化项列表”和“置信度评分”。
第三步:添加“LLM”节点,输入 delta_report + 用户原始问题,提示词强调:“用自然语言重述差异,每条结论必须引用具体坐标或状态字段,例如‘托盘右下角纸箱较图A右移23像素(原bbox[412,201,488,275]→现[435,201,511,275])’。”
多图聚类归因流:识别共性模式与异常点
方法一:使用“Embedding + 聚类”子流
添加“Image Recognition”节点,但提示词改为:“提取本图最稳定、最具区分度的3个视觉特征描述,用逗号分隔短语,如‘金属反光表面,规则网格纹理,顶部红色标签’”。此步规避坐标依赖,适配不同拍摄角度。
添加“Code”节点,调用 sklearn.cluster.KMeans 对全部图像的特征向量做聚类,输出:主流簇ID、各图所属簇、离群图索引。
方法二:调用外部多模态API(如阿里云Vision AI)
在“Code”节点中编写 requests.post 调用其 /multi-image-compare 接口,传入全部 base64 图片数组和参数 {"mode": "consistency_check"},直接获取官方返回的“一致元素占比”和“异常图报告”。
两种方法输出统一送入终局“LLM”节点,提示词限定:“先总结共性(例:4图中均有蓝色安全帽、固定角度俯拍),再指出异常(例:图3缺失右侧货架,图4安全帽颜色为黄色),最后推断可能原因(如‘图3拍摄时货架被遮挡,图4为不同作业班组’)。”











