应用场景
- 文档分析: 上传学术研究报告文件,LLM 可以快速总结要点,根据文件内容回答相关问题。
- 代码审查: 开发者上传代码文件,获得优化建议与 bug 检测。
- 学习辅导: 学生上传作业或学习资料,获得个性化的解释和指导。
- 法律援助: 上传完整的合同文本,由 LLM 协助审查条款,指出潜在风险。
文件上传与知识库的区别
文件上传和知识库都是为 LLM 提供额外上下文信息的方式,但它们在使用场景和功能上有明显区别:- 信息来源:
- 文件上传:允许终端用户在对话过程中动态上传文件,提供即时的、个性化的上下文信息。
- 知识库:由应用开发者预先设置和管理,包含相对固定的信息集合。
- 使用灵活性:
- 文件上传:更加灵活,用户可以根据具体需求上传不同类型的文件。
- 知识库:内容相对固定,但可以被多个会话重复利用。
- 信息处理:
- 文件上传:需要通过文档提取器或其他工具将文件内容转换为 LLM 可理解的文本。
- 知识库:通常已经过预处理和索引,可以直接进行检索。
- 应用场景:
- 文件上传:适用于需要处理用户特定文档的场景,如文档分析、个性化学习辅导等。
- 知识库:适用于需要访问大量预设信息的场景,如客户服务、产品咨询等。
- 数据持久性:
- 文件上传:通常为临时使用,不会长期存储在系统中。
- 知识库:作为应用的一部分长期存在,可以持续更新和维护。
快速开始
Dify 支持在 ChatFlow 和 WorkFlow 类型应用中上传文件,并通过变量交由 LLM 处理。应用开发者可以参考以下方法为应用开启文件上传功能:- 在 Workflow 应用中:
- 在 “开始节点” 添加文件变量
- 在 ChatFlow 应用中:
File Types
file variables 和 array[file] variables 支持以下文件类型与格式:| 文件类型 | 支持格式 |
|---|---|
| 文档 | TXT, MARKDOWN, PDF, HTML, XLSX, XLS, DOCX, CSV, EML, MSG, PPTX, PPT, XML, EPUB. |
| 图片 | JPG, JPEG, PNG, GIF, WEBP, SVG. |
| 音频 | MP3, M4A, WAV, WEBM, AMR. |
| 视频 | MP4, MOV, MPEG, MPGA. |
| 其他 | 自定义后缀名支持 |
方法一:使用具备文件处理能力的 LLM
部分 LLMs(例如 Claude 3.5 Sonnet)已支持直接处理并分析文件内容,因此 LLM 节点的提示词已允许输入文件变量。为了避免潜在异常,应用开发者在使用该文件变量前需前往 LLM 官网确认 LLM 支持何种文件类型。
- 点击创建 Chatflow / Workflow 应用。
- 添加 LLM 节点,选择具备文件分析能力的 LLM。
- 在开始节点添加文件变量
- 在 LLM 的系统提示词内输入文件变量。
- 完成创建。

具备识别文件的 LLM
方法二:在应用聊天框中开启文件上传(仅适用于 Chatflow)
- 点击 Chatflow 应用右上角的 “功能” 按钮即可为应用添加更多功能。 开启此功能后,应用使用者可以在应用对话的过程中随时上传并更新文件。最多支持同时上传 10 个文件,每个文件的大小上限为 15MB。

文件上传功能
- 对于音频文件,可以使用
gpt-4o-audio-preview等支持多模态输入的模型直接处理音频,无需额外的提取器。 - 对于视频和其他文件类型,暂无对应的提取器,需要应用开发者接入外部工具进行处理
- 添加文档提取器节点,在输入变量中选中
sys.files变量。 - 添加 LLM 节点,在系统提示词中选中文档提取器节点的输出变量。
- 在末尾添加 “直接回复” 节点,填写 LLM 节点的输出变量。

文件上传工作流

对话框中的文件上传
方法三:通过添加文件变量开启文件上传功能
1. 在”开始”节点添加文件变量
在应用的”开始”节点内添加输入字段,选择 “单文件” 或 “文件列表” 字段类型的变量。- 单文件 仅允许应用使用者上传单个文件。
- 文件列表 允许应用使用者单词批量上传多个文件。
为了便于操作,将使用单文件变量作为示例。
文件解析
文件变量的使用方式主要分为两种:- 使用工具节点转换文件内容:
- 对于文档类型的文件,可以使用”文档提取器”节点将文件内容转换为文本形式。
- 这种方法适用于需要将文件内容解析为模型可理解的格式(如 string、array[string] 等)的情况。
- 直接在 LLM 节点中使用文件变量:
- 对于某些特定类型的文件(如图片),可以在 LLM 节点中直接使用文件变量。
- 例如,对于图片类型的 file variables,可以在 LLM 节点中启用 vision 功能,然后在变量选择器中直接引用对应的文件变量。
2. 添加文档提取器节点
上传文件后将存储至单文件变量内,LLM 暂不支持直接读取变量中的文件。因此需要先添加 “文档提取器”节点,从已上传的文档文件内提取内容并发送至 LLM 节点完成信息处理。 将”开始”节点内的文件变量作为 “文档提取器” 节点的输入变量。
添加输入变量

粘贴系统提示词

粘贴 URL 进行对话
- 在 LLM 节点中,启用 vision 功能。这允许模型处理图像输入(模型需要支持 vision)。
- 在 LLM 节点的变量选择器中,直接引用之前创建的文件变量如果是通过附加功能开启的文件上传,则选择
sys.files变量。 - 在系统提示词中,指导模型如何处理图像输入。例如,你可以要求模型描述图像内容或回答关于图像的问题。
需要注意的是,直接在 LLM 节点中使用文件变量时,我们需要确保文件变量仅包含图片文件,否则可能会导致错误。如果用户可能上传不同类型的文件,我们需要使用列表操作来进行过滤。
文件下载
将文件变量放置到 answer 节点或者 end 节点中,当应用运行到该节点都时候将会在会话框中提供文件下载卡片。点击卡片即可下载文件。
进阶使用
若希望应用能够支持上传多种文件,例如允许用户同时上传文档文件、图片和音视频文件,此时需要在 “开始节点” 中添加 “文件列表” 变量,并通过”列表操作”节点针对不同的文件类型进行处理。详细说明请参考列表操作节点。
多种文件类型处理