> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# App Toolkit

> Optional features that make your Dify apps more useful

Dify apps come with optional features you can enable to improve the end-user experience. Open the **Features** panel of the builder to see what's available for your app type.

<Columns>
  <Column>
    <Frame caption="Features Panel in Chatbots, Agents, and Text Generators">
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/workflow/app-toolkit-chatbot.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=04cb562bd99fa9cf82b22e4a0cec59cd" alt="Features Panel in Chatbots, Agents, and Text Generators" width="1922" height="812" data-path="images/use-dify/workflow/app-toolkit-chatbot.png" />
    </Frame>
  </Column>

  <Column>
    <Frame caption="Features Panel in Chatflows">
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/workflow/app-toolkit-chatflow.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=dd280008cacdd3f0c337594c5bc4841c" alt="Features Panel in Chatflows" width="1078" height="486" data-path="images/use-dify/workflow/app-toolkit-chatflow.png" />
    </Frame>
  </Column>
</Columns>

## Conversation Opener

Set an opening message that greets users at the start of each conversation, with optional suggested questions to guide them toward what the app does well.

You can insert variables into the opening message and suggested questions to personalize the experience.

* In the opening message, type `{` or `/` to insert variables from the picker.

* In suggested questions, type variable names manually in `{{variable_name}}` format.

<Columns>
  <Column>
    <Frame caption="Configuration">
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/workflow/conversation-opener-configuration.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=7320375a1dbce84f2b369395928f349d" alt="Configuration" width="1266" height="846" data-path="images/use-dify/workflow/conversation-opener-configuration.png" />
    </Frame>
  </Column>

  <Column>
    <Frame caption="WebApp">
      <img src="https://mintcdn.com/dify-6c0370d8/gyesM3ime6gTaYSO/images/use-dify/workflow/conversation-opener-webapp.png?fit=max&auto=format&n=gyesM3ime6gTaYSO&q=85&s=281debc4017c54a94a26db64405f5dda" alt="WebApp" width="1550" height="408" data-path="images/use-dify/workflow/conversation-opener-webapp.png" />
    </Frame>
  </Column>
</Columns>

## Follow-up

When enabled, follow-up questions are generated after each response to help users continue the conversation.

Click **Settings** to pick the model that generates the questions, or write a custom prompt (up to 1,000 characters) to adjust the number, wording, or length of the questions.

## Text to Speech

Convert AI responses to audio. You can configure the language and voice to match your app's audience, and enable **Auto Play** to stream audio automatically as the AI responds.

<Info>
  **Text to Speech** uses your workspace's text-to-speech model (set in **Settings** > **Model Provider** > **Default Model Settings**).

  The feature only appears in the **Features** panel when a default TTS model is configured.
</Info>

## Speech to Text

Enable voice input for the chat interface. When enabled, your end users can dictate messages instead of typing by clicking the microphone button.

<Info>
  **Speech to Text** uses your workspace's speech-to-text model (set in **Settings** > **Model Provider** > **Default Model Settings**).

  The feature only appears in the **Features** panel when a default STT model is configured.
</Info>

## File Upload

Allow end users to send files at any point during a conversation. You can configure which file types to accept, the upload method, and the maximum number of files per message.

<Info>
  For self-hosted deployments, you can adjust file size limits via the following environment variables:

  * `UPLOAD_IMAGE_FILE_SIZE_LIMIT` (default: 10 MB)
  * `UPLOAD_FILE_SIZE_LIMIT` (default: 15 MB)
  * `UPLOAD_AUDIO_FILE_SIZE_LIMIT` (default: 50 MB)
  * `UPLOAD_VIDEO_FILE_SIZE_LIMIT` (default: 100 MB)

  See [Environment Variables](/en/self-host/configuration/environments) for details.
</Info>

## Citations and Attributions

Show the source documents behind AI responses. When enabled, responses that draw from a connected knowledge base display numbered citations linking back to the original documents and chunks.

<Frame>
  <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/workflow/citations-and-attributions.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=7de91bd811918b9e5cba6b2d481c1e6f" alt="Citations and Attributions" width="1578" height="904" data-path="images/use-dify/workflow/citations-and-attributions.png" />
</Frame>

## Content Moderation

Filter inappropriate content in user inputs, AI outputs, or both. Choose a moderation provider based on your needs:

* **OpenAI Moderation**: Use OpenAI's dedicated moderation model to detect harmful content across multiple categories.

* **Keywords**: Define a list of blocked terms. Any match triggers the preset response.

* **API Extension**: Connect a custom moderation endpoint for your own filtering logic.

When content is flagged, the app replaces it with a preset response that you define.

## Annotation Reply

Define curated Q\&A pairs that take priority over LLM responses. When a user's query **semantically** matches an annotation above the score threshold (how closely a query must match), the curated answer is returned directly without calling the LLM.

You can configure the score threshold and the embedding model used for semantic matching.

To create and manage your annotations:

* Convert existing conversations into annotations directly from **Debug & Preview** or **Logs** by clicking the **Add annotation** icon on any LLM response.

  Once a message is annotated, the icon changes to **Edit**, so you can modify the annotation in place.

  <Frame>
    <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/workflow/add-annotation-icon.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=b9806108498b38d0014fda5d7655d6a9" alt="Add Annotation Icon" width="1174" height="574" data-path="images/use-dify/workflow/add-annotation-icon.png" />
  </Frame>

* In the **Logs & Annotations** > **Annotations** tab, manually add new Q\&A pairs, manage existing annotations, and view hit history. Click `...` to bulk import or bulk export.

  <Frame>
    <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/workflow/bulk-annotation-operation.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=95eaa77560b8f1da38104cae46ce5239" alt="Bulk Annotation Operation" width="918" height="486" data-path="images/use-dify/workflow/bulk-annotation-operation.png" />
  </Frame>

## More Like This

Generate alternative outputs for the same input. Once enabled, each generated result includes a button to produce a variation, so you can explore different responses without re-entering your query.

<Frame>
  <img src="https://mintcdn.com/dify-6c0370d8/gyesM3ime6gTaYSO/images/use-dify/workflow/more-like-this.png?fit=max&auto=format&n=gyesM3ime6gTaYSO&q=85&s=31c5daf5c4a6463633a7d3c5ab555b98" alt="More Like This" width="404" height="144" data-path="images/use-dify/workflow/more-like-this.png" />
</Frame>

You can generate up to 2 variations per result. Each variation uses additional tokens.
