PromptSpace
  • PromptSpace
  • PSL Docs
    • Why PSL?
    • How PSL Works?
    • PSL Format Overview
    • Getting Started
    • Hello World
    • More on Prompts
    • Priming a model
    • Chaining Sections
    • Form inputs
    • Structured outputs
    • Configuring the App
  • Features
  • Roadmap
  • Apps
    • Podcaster
    • Movie Guessing Game
  • Serverless Composability
Powered by GitBook
On this page

Was this helpful?

  1. PSL Docs

Form inputs

PreviousChaining SectionsNextStructured outputs

Last updated 1 year ago

Was this helpful?

PSL supports various types of user inputs. One can easily display a form in the UI by a simple specification in the PSL file and take user inputs. In PSL, forms closely follow specifications.

Example

[ask.name]
description = Please enter you name:

; Taking form input
; Forms support markdown in descriptions. Labels could use any of the supported `display_option`
[ask.user_info]
input_data_type = form
description = ### Please fill this form:
form_data =
    [
        {
            "name": "alias",
            "field_type": "textarea",
            "input_type": "str",
            "description": "Enter the alias that you would like to use",
            "type_params": {
            "maxlength": 30,
            "placeholder": "{{input.name}}"
            }
        },
        {
            "name": "age",
            "field_type": "number",
            "input_type": "int",
            "description": "{{input.name}}, you need to enter your age now! 🤯",
            "type_params": {
            "min": 0,
            "max": 120,
            "step": 1
            }
        },
        {
            "name": "temperature",
            "field_type": "number",
            "input_type": "float",
            "description": "Enter the temperature",
            "type_params": {
            "min": -273.15,
            "max": 500.0,
            "step": 0.1
            }
        },
        {
            "name": "is_adult",
            "field_type": "checkbox",
            "input_type": "bool",
            "description": "Are you an adult?",
            "type_params": {
            "options": {
                "label": "Yes",
                "value": "{{input.name}}",
                "display_option": "text"
            }
            }
        },
        {
            "name": "favourite_color",
            "field_type": "select",
            "input_type": "str",
            "description": "Select your favourite colour",
            "type_params": {
            "options": [
                {
                "label": "Red",
                "value": "Red",
                "display_option": "text"
                },
                {
                "label": "Blue",
                "value": "Blue",
                "display_option": "text"
                }
            ]
            }
        }
    ]

In subsequent prompts, you can access specific info provided by the user in the form via: input.user_info.<field_name>.

For example, alias can be access via input.user_info.alias and favourite_color can be accessed via input.user_info.favorite_color[0](for fields of type select, the output is stored as a list).

[display]
text = Hey {{input.user_info.alias}}! 
    My favorite color is also {{input.user_info.favorite_color[0]}}!!
Mozilla Developer Network