---
title: "Additional Features"
icon: "circle-plus"
---

Add features to make your apps more useful. Click **Features** in the top right to add functionality.

<iframe
  src="https://www.motionshot.app/walkthrough/6773d34ad27e58127b913945/embed?fullscreen=1&hideAsSteps=1&hideCopy=1&hideDownload=1&hideSteps=1"
  width="100%"
  height="400px"
  frameborder="0"
  allowfullscreen
></iframe>

## Workflow apps

<Info>
  File upload through Features is deprecated for Workflow apps. Use [file variables on the Start node](/en/guides/workflow/node/start) instead.
</Info>

Workflow apps only support **Image Upload** via Features:

<iframe
  src="https://www.motionshot.app/walkthrough/6773d3d86a0c3ed534f24da9/embed?fullscreen=1&hideAsSteps=1&hideCopy=1&hideDownload=1&hideSteps=1"
  width="100%"
  height="400px"
  frameborder="0"
  allowfullscreen
></iframe>

**How to set it up:**
1. Enable Image Upload in Features
2. Add LLM node with vision
3. Enable VISION and select `sys.files` variable
4. Connect to End node

## Chatflow apps

Chatflow apps get more features:

- **Conversation Opener** - AI says hello first
- **Follow-up** - Suggests next questions after responses
- **Text-to-Speech** - Reads responses out loud (needs TTS setup in Model Providers)
- **File Upload** - Users can upload files
- **Citation** - Shows sources when using Knowledge Retrieval
- **Content Moderation** - Filters inappropriate content

## File upload

Most features work automatically once enabled. File upload needs more setup.

**For users**: Click the paperclip icon to upload files

![Upload file](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/b18af11da3f339c496193d9732906849.png)

**For developers**: Files show up in the `sys.files` variable. Different file types need different handling:

### Documents

LLMs can't read files directly. Use Document Extractor first.

1. Enable "Documents" in file types
2. Add Document Extractor node with `sys.files` as input
3. Add LLM node using document extractor output
4. Add Answer node with LLM output

<Warning>
  This doesn't remember files between conversations. Users need to re-upload each time. For persistent files, use [Start node file variables](/en/guides/workflow/node/start).
</Warning>

### Images

Some LLMs can analyze images directly.

1. Enable "Images" in file types  
2. Add LLM node with VISION enabled
3. Select `sys.files` variable
4. Add Answer node with LLM output

![Enable vision](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/3a3582bd9bc8ea94bbdbfeefe6a78571.png)

### Mixed file types

Handle both documents and images:

1. Enable both "Images" and "Documents"
2. Add two List Operation nodes to filter file types
3. Send images to LLM with vision
4. Send documents to Document Extractor
5. Combine results in Answer node

![Mixed file types](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/66471e8e67b2ede0c94bfa1cffeab834.png)

### Audio and video

LLMs can't process these directly. You'll need [external tools](/en/guides/extension/api-based-extension/external-data-tool) for audio/video processing.

## Limits

- Max 15MB per file
- Max 10 files at once