Skip to main content

Collect Node

Overview

The Collect Node is utilized to interactively collect data from users via configured slots, which capture necessary information within the workflow.

Configuration

Adding and Editing Slots

Users can define slots to collect specific data from user inputs. Each slot can be customized with the following attributes:

  • Label: A user-friendly name. (Also fallback for Description)
  • Key: A unique identifier used programmatically to reference the collected data.
  • Type (optional): Specifies the data type of the slot. Choices include:
    • String (default)
    • Number
    • Enum for predefined values
  • Pattern (Regex) (conditional): A regular expression for validating data, applicable if the slot type is not Enum.
  • Options (Enums) (conditional): Specifies allowed values for the slot, required if the type is Enum.
  • Description (optional): Provides a brief instruction for the LLM on how to handle the slot, aiding in generating appropriate user prompts.

Settings

Configurable settings include:

  • Connection: Selects the model connector for processing the data
  • Model (LLM): Specifies the large language model to use for processing the data. Model availability depends on the selected connection.
  • Assistant ID (conditional): Required if using a specific assistant configuration with models like gpt4-assistant.
  • Language (optional): Sets the default language for interactions. Not available in Custom Prompts
  • Custom Prompt (optional)

Custom Prompt

Provides a JavaScript function that customizes the System Prompt handed to the configured Model. It uses the following parameters:

  • items[]: An array of the configured slots within the node.
  • globalData: Contains all previously collected data from other nodes. (object)
  • tone: Can be impersonal, formal, or personal, directing the tone of the interaction.

Example of a custom prompt function:

(({items, globalData, tone}) => `Always format your response in JSON with the schema {slots: {[id]: value}, message, status}. 
Request the following slots from the user:
${JSON.stringify(items)} while keeping a ${tone ?? "formal"} tone.
If done, status is DONE.`)({items, globalData, tone})
note

It is generally advised to use the proven default prompt.

Output Schema

The custom JavaScript function should output an object adhering to this schema:

  • slots: Key-value pairs where keys are slot IDs, and values are the data collected for those slots.
  • message: Output to user.
  • status: Indicates whether the interaction is complete (DONE) or ongoing (IN_PROGRESS).

Example responses

The following displays valid responses, resulting from input handling.

Request name
{
"slots": {},
"message": "Please tell me you name.",
"status": "IN_PROGRESS"
}
Confirm input
{
"slots": {"name": "Jon Doe"},
"message": "Thank you!",
"status": "DONE"
}

Output

Emits the results from data collection to subsequent nodes.

Language

Language set within conversations will always be output to globalData slot _language