游乐游手机版
首页/AI热点日报/热点详情

Dify全面多媒体输入处理教程:图片与语音详解

类型:热点整理2026-07-19
在Dify中实现多模态能力,并非仅靠上传文件就能自动识别。您需要明确创建Workflow(工作流)并启用多模态输入,随后正确配置Image或File字段——变量名必须遵循小写下划线的命名规则。经过Document Extractor或Multimodal Processor节点的解析后,这些多媒体数

在Dify中实现多模态能力,并非仅靠上传文件就能自动识别。您需要明确创建Workflow(工作流)并启用多模态输入,随后正确配置Image或File字段——变量名必须遵循小写下划线的命名规则。经过Document Extractor或Multimodal Processor节点的解析后,这些多媒体数据才能被送入Qwen-VL等多模态模型进行理解。

Dify中的多媒体输入(图片/语音)处理教程

核心前提是:您必须显式配置支持多模态的节点和数据结构;否则系统只会将上传的图片或语音当作普通附件,直接忽略其内容。

确认工作流类型与基础设置

打开Dify Studio,从空白开始创建。这里有一个关键选择:务必选择Workflow,而非Chatflow。只有Workflow原生支持多模态输入节点和文件元信息的解析。Chatflow仅处理纯文本消息流,您上传的图片或语音,它只会保留文件名,内容会被丢弃。

创建完工作流后,立即点击画布空白处打开全局设置,在“Input Schema”中勾选【Enable multi-modal input】。这一步不可跳过,否则后续添加的任何文件输入字段都无法触发payload的解析流程。

添加用户输入节点并配置多媒体字段

从左侧节点栏拖入一个User Input节点,然后打开配置面板。根据您的业务需求,可以添加以下几种字段:

方法一:单图输入(推荐用于图像理解类任务)
字段类型选择Image,变量名设为,标签写“上传图片”,支持的格式勾选JPEG、PNG、WEBP。是否必填,视具体场景而定。

方法二:语音文件输入(适用于ASR转文字)
字段类型选择File list,变量名设为,标签写“上传语音(MP3/WA V)”。允许上传类型选Both,文件类型只勾选Audio,最大上传数量设为1,避免同时传入多个文件造成干扰。

方法三:图文混合输入(如图文问答)
同时添加两个字段:一个Image类型(变量名),一个File list类型且仅限Audio(变量名)。需要注意的是,这两个字段在运行时分别生成独立的payload结构,不会自动合并。

⚠️这里有一个关键提醒:变量名必须全小写加下划线,不能包含空格或中文,否则下游的LLM节点无法通过{{$input.img_input}}这样的语法正确引用。Dify对变量名大小写敏感,并且不识别驼峰命名。

配置文档提取器或专用处理器节点

多模态文件不能直接喂给LLM,必须先经过解析节点,将它们转换成结构化文本或特征向量。

第一步:拖入一个Document Extractor节点,输入参数选择刚才定义的变量。

第二步:在Document Extractor的配置中,关闭“Extract text only”开关。这个选项默认是开启的,容易被忽视。一旦开启,图片只会被OCR提取文字,语音只会被ASR转写,原始的图像像素和音频波形特征会彻底丢失。这样一来,视觉理解模型如CLIP、Qwen-VL就无法调用了。

第三步:如果您希望保留原始二进制数据供视觉模型使用,可以改用Multimodal Processor节点(需要提前从插件市场安装)。配置时选择对应的模态编码器,例如图片用“vision.clip-vit-base-patch32”,语音用“speech.whisper-large-v3”。

连接LLM节点并构造多模态提示词

拖入一个LLM节点,将上游Document Extractor或Multimodal Processor的输出连接到它的输入端口。

在LLM的系统提示词中,必须明确声明多模态能力。例如:

“你是一个多模态AI助手,能同时理解图像内容和语音转录文本。当前输入包含:
— 图像描述:{{$input.img_input.description}}
— 语音转录:{{$input.audio_input.transcript}}
请结合二者信息回答问题。”

⚠️需要特别注意:不要在提示词里直接使用{{$input.img_input}}作为变量,因为它返回的是Base64字符串或URI,LLM根本无法解析。必须依赖前序节点已经生成的description、transcript等语义字段。

模型选择方面,优先启用原生支持多模态的模型,比如Qwen-VL、LLaVA-1.6、deepseek-vl。像GPT-4-turbo这样的纯文本模型,即使收到了图像URL也无法理解画面内容。

调试与验证输出结构

在LLM节点后面加一个Direct Reply节点,然后运行测试。上传一张带明显文字的海报图,再加一段相关语音。

观察输出日志中的input部分,确认是否呈现类似这样的结构:

{
"img_input": {
"type": "image/jpeg",
"content": "data:image/jpeg;base64,/9jAB...",
"metadata": {"width": 1200, "height": 800}
},
"audio_input": {
"type": "audio/mpeg",
"content": "https://dify-storage/xxx.mp3",
"metadata": {"duration_sec": 42.7}
}
}

如果content字段为空或显示为null,说明Document Extractor没有正常解析。如果metadata中缺少width、height或duration,则文件上传时可能被截断,或者格式不被识别。

遇到这种情况,返回User Input节点,检查字段类型是否与实际上传文件严格匹配。Dify对MIME类型的校验非常严格,如果您上传的是PNG文件,但只设置了JPEG为可接受类型,payload就会被清空。

来源:https://www.php.cn/faq/2619811.html?uid=1589237

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。