Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions en/use-dify/nodes/ifelse.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ Configure conditions to test variables using various comparison operators:

<Tabs>
<Tab title="Text Operations">
**Contains** / **Not contains** - Check if text includes specific words or phrases
**Contains** / **Not contains** - Check if the value includes specific words or phrases

**Starts with** / **Ends with** - Test text beginnings or endings for pattern matching

**Is** / **Is not** - Exact value matching for precise text comparison
**Is** / **Is not** - Exact value matching
</Tab>

<Tab title="Value Checks">
Expand Down
12 changes: 2 additions & 10 deletions en/use-dify/nodes/list-operator.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ icon: "filter"

The List Operator node processes arrays by filtering, sorting, and selecting specific elements. Use it when you need to work with mixed file uploads, large datasets, or any array data that requires separation or organization before downstream processing.

Supported input data types include `array[string]`, `array[number]`, `array[file]`, and `array[boolean]`.

<Frame caption="List Operator node interface">
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/522a0c932aab93d4f3970168412f759e.png" alt="List Operator interface" />
</Frame>
Expand All @@ -20,16 +22,6 @@ The List Operator acts as an intelligent router, using filters to separate mixed
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/812d1b2f167065e17df8392b2cb3cc8a.png" alt="Array processing example" />
</Frame>

## Supported Data Types

The node handles different array types with appropriate filtering options:

**Array[string]** - Text lists, categories, names, or any string collections

**Array[number]** - Numeric data, scores, measurements, or calculations

**Array[file]** - Mixed file uploads with rich metadata filtering capabilities

## Operations

### Filtering
Expand Down
57 changes: 34 additions & 23 deletions en/use-dify/nodes/user-input.mdx
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
---
title: "User Input"
description: "Entry point for workflow and chatflow applications"
description: "Collects user inputs to start workflow and chatflow applications"
icon: "input-text"
---
## Introduction

The User Input node is a type of Start node where you can define what information to collect from end users when they run your application.
The User Input node allows you to define what to collect from end users as inputs for your applications.

Applications that start with this node run *on demand*, initiated by direct user interaction or API calls. You can also publish these applications as standalone web apps or MCP servers, expose them through backend service APIs, or use them as tools in other Dify applications.
Applications that start with this node run *on demand* and can be initiated by direct user interaction or API calls.

You can also publish these applications as standalone web apps or MCP servers, expose them through backend service APIs, or use them as tools in other Dify applications.

<Info>
Each application canvas can contain only one User Input node.
Expand All @@ -22,7 +24,7 @@ Preset input variables are system-defined and available by default.
- `userinput.files`: Files uploaded by end users when they run the application.

<Note>
For workflow applications, this preset variable has been considered *legacy* and maintained only for backward compatibility.
For workflow applications, this preset variable has been considered *legacy* and kept only for backward compatibility.

We recommend using a [custom file input field](#file-input) instead to collect user files.
</Note>
Expand All @@ -31,28 +33,28 @@ Preset input variables are system-defined and available by default.

### Custom

You can configure custom input fields in a User Input node to collect information from end users. Each field becomes a variable that can be referenced by downstream nodes. For example, if you add an input field with the variable name `user_name`, you can reference it as `{{user_name}}` throughout the workflow.

There are seven types of input fields you can choose from to handle different kinds of user input.
You can configure custom input fields in a User Input node to collect different kinds of user input. Each field becomes a variable that can be referenced by downstream nodes.
Copy link

Copilot AI Dec 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The original text mentioned that each field "becomes a variable that can be referenced by downstream nodes. For example, if you add an input field with the variable name user_name, you can reference it as {{user_name}} throughout the workflow." This helpful example showing how to reference variables using the {{variable_name}} syntax was removed. Consider keeping this practical example as it helps users understand how to use the variables in their workflows.

Suggested change
You can configure custom input fields in a User Input node to collect different kinds of user input. Each field becomes a variable that can be referenced by downstream nodes.
You can configure custom input fields in a User Input node to collect different kinds of user input. Each field becomes a variable that can be referenced by downstream nodes. For example, if you add an input field with the variable name `user_name`, you can reference it as `{{user_name}}` throughout the workflow.

Copilot uses AI. Check for mistakes.

<Info>
The **Label Name** is displayed to your end users.
**Label Name** is displayed to your end users.
</Info>

<Tip>
In a chatflow application, you can **Hide** any input variable to make it invisible to the end user while keeping it available for reference within the chatflow.
In a chatflow application, you can **Hide** any user input field to make it invisible to end users while keeping it available for reference within the chatflow.

Note that a **Required** field cannot be hidden.
</Tip>

#### Text Input

<Tabs>

<Tab title="Short Text">
The short-text field accepts up to 256 characters. Use it for names, email addresses, titles, or any brief text input that fits on a single line.
Accepts up to 256 characters. Use it for names, email addresses, titles, or any brief text input that fits on a single line.
</Tab>

<Tab title="Paragraph">
The paragraph field allows long-form text without length restrictions. It gives users a multi-line text area for detailed responses or descriptions.
Allows long-form text without length restrictions. It gives users a multi-line text area for detailed responses or descriptions.
</Tab>
</Tabs>

Expand All @@ -61,51 +63,60 @@ There are seven types of input fields you can choose from to handle different ki
<Tabs>

<Tab title="Select">
The select field displays a dropdown menu with predefined options. Users can choose only from the listed options, ensuring data consistency and preventing invalid inputs.
Displays a dropdown menu with predefined options. Users can choose only from listed options, ensuring data consistency and preventing invalid inputs.
</Tab>

<Tab title="Number">
The number field restricts input to numerical values only—ideal for quantities, ratings, IDs, or any data requiring mathematical processing.
Restricts input to numerical values only—ideal for quantities, ratings, IDs, or any data requiring mathematical processing.
</Tab>

<Tab title="Checkbox">
The checkbox field provides a simple yes/no option. When a user checks the box, the output is `true`; otherwise, it's `false`. Use it for confirmations or any case that requires a binary choice.
Provides a simple yes/no option. When a user checks the box, the output is `true`; otherwise, it's `false`. Use it for confirmations or any case that requires a binary choice.
</Tab>

<Tab title="JSON Code">
Accepts data in JSON object format, ideal for passing complex, nested data structures into your application.

You can optionally define a JSON schema to validate the input and guide users on the expected structure. This also allows you to reference individual properties of the object in other nodes.
</Tab>
</Tabs>

#### File Input

<Tabs>
<Tab title="Single File">
The single-file field allows users to upload one file of any supported type, either from their device or via a file URL. The uploaded file is available as a variable containing file metadata (name, size, type, etc.).
Allows users to upload one file of any supported type, either from their device or via a file URL. The uploaded file is available as a variable containing file metadata (name, size, type, etc.).
</Tab>

<Tab title="File List">
The file-list field works like single-file but supports multiple file uploads at once. It's useful for handling batches of documents, images, or other files together.
Supports multiple file uploads at once. It's useful for handling batches of documents, images, or other files together.

<Tip>
You can use a List Operator node to filter, sort, or extract specific files from the uploaded file list for further processing.
Use a List Operator node to filter, sort, or extract specific files from the uploaded file list for further processing.
</Tip>
</Tab>
</Tabs>

**File Processing**

Files uploaded through a User Input node must be processed appropriately by subsequent nodes. The User Input node only collects files; it does not read or parse their content.

Therefore, you need to connect specific nodes to extract and process the file content. For example:
Since the User Input node only collects files—it does not read or parse their content—uploaded files must be processed appropriately by subsequent nodes. For example:

- Document files can be routed to a Doc Extractor node for text extraction so that LLMs can understand their content.

- Images can be sent to LLM nodes with vision capabilities or specialized image processing tool nodes.

- Structured data files such as CSV or JSON can be processed with Code nodes to parse and transform the data.

<Tip>
When users upload multiple files with mixed types (e.g., images and documents), you can use a List Operator node to separate them by file type before routing them to appropriate processing branches.
When users upload multiple files with mixed types (e.g., images and documents), you can use a List Operator node to separate them by file type before routing them to different processing branches.
</Tip>

## What's Next

After setting up a User Input node, you can connect it to other nodes to process the collected data. Common patterns include:

- Send the input to an LLM node for processing.
- Use a Knowledge Retrieval node to find relevant information based on the input.
- Route the execution path to different branches with conditional logic based on the input.

- Use a Knowledge Retrieval node to find information relevant to the input.

- Create conditional branches based on the input with an If/Else node.
3 changes: 2 additions & 1 deletion en/use-dify/nodes/variable-aggregator.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,9 @@ Connect variables from different workflow branches that you want to combine. Eac

**Supported Types:**
- **String** - Text outputs from different processing branches
- **Number** - Numeric calculations, scores, or measurements
- **Number** - Numeric calculations, scores, or measurements
- **Object** - Structured data objects with similar schemas
- **Boolean** - True/false values
- **Array** - Lists, collections, or multiple results

### Output Behavior
Expand Down
52 changes: 32 additions & 20 deletions en/use-dify/nodes/variable-assigner.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,46 +37,58 @@ Configure which conversation variables to update and specify their source data.
Different variable types support different operations based on their data structure:

<Tabs>
<Tab title="String Variables">
**Overwrite** - Replace the entire string value with new content
<Tab title="String">
- **Overwrite** - Replace with another string variable

**Clear** - Empty the variable, setting it to null or blank
- **Clear** - Remove the current value

**Set** - Manually type in a fixed value
- **Set** - Manually assign a fixed value
</Tab>

<Tab title="Number Variables">
**Overwrite** - Replace the number value completely
<Tab title="Number">
- **Overwrite** - Replace with another number variable

**Clear** - Set to null or empty state
- **Clear** - Remove the current value

**Set** - Manually enter a specific number value
- **Set** - Manually assign a fixed value

**Arithmetic** - Add, subtract, multiply, or divide the current value
- **Arithmetic** - Add, subtract, multiply, or divide the current value by another number
</Tab>

<Tab title="Boolean">
- **Overwrite** - Replace with another boolean variable

- **Clear** - Remove the current value

- **Set** - Manually assign a fixed value
</Tab>

<Tab title="Object Variables">
**Overwrite** - Replace the entire object with new data
<Tab title="Object">
- **Overwrite** - Replace with another object variable

**Clear** - Empty the object, removing all properties
- **Clear** - Remove the current value

**Set** - Manually define object structure and values
- **Set** - Manually define the object structure and values
</Tab>

<Tab title="Array Variables">
**Overwrite** - Replace the entire array with new data
<Tab title="Array">
- **Overwrite** - Replace with another array variable of the same type

**Clear** - Empty the array, removing all elements
- **Clear** - Remove all elements from the array

**Append** - Add one item to the end of the array
- **Append** - Add a single element to the end of the array

**Extend** - Add multiple items from another array
- **Extend** - Add all elements from another array of the same type

**Remove** - Delete items from first or last position
- **Remove First/Last** - Remove the first or last element from the array

<Tip>
Array operations are particularly powerful for building memory systems, checklists, and conversation histories that grow over time.
</Tip>

</Tab>
</Tabs>

Array operations are particularly powerful for building memory systems, checklists, and conversation histories that grow over time.

## Common Implementation Patterns

Expand Down
Loading