# More on Prompts

Prompts are characterized by unique names that start with `prompt.`, such as `[prompt.generate_joke]` or `[prompt.write_recipe]`.

Each prompt section can have the following attributes:

**Core Attributes**

* **model\_name**: (Optional) Dictates the AI model used for the prompt. In its absence, the value from the `[default]` section or the built-in default model (identity) is chosen.
* **description**: (Optional) A brief overview of new user input fields used in the prompt. For every input field, provide a description in the first prompt where it appears. The format is:

  ```markdown
  description.{input_field} = Description text | input_data_type
  ```

  Specifying the data type is optional, with the default being `str`. Use the `|` delimiter only when pinpointing the data type. Typically `ask` section should be used for user input unless using a attribute supported only by prompt sections (currently `continue_if` and `break`).
* **display**: (Optional, defaults to `True`) If set to `True`, the model's response for that specific prompt is shown to the user. Otherwise, it remains hidden.&#x20;
* **display\_option**: (Optional) Denotes the mode of response display (e.g., "text", "image", "video", "markdown", "audio" etc.). In its absence, "text" is chosen.
* **output\_type**: (Optional) Stipulates the typecasting method for the response (e.g., "json", "csv", "ini", etc). Leveraging structured output epitomizes chatGPT's capabilities! Output type should not be specified unless you are type casting (treating raw LLM output as an "json", "ini" or other  structured outputs.
* **continue\_if**: (Optional, Boolean) Dictates the condition to continue with the subsequent prompt. If set to `True`, the workflow advances to the next step based on the defined condition.
* **break**: (Optional, Boolean) Represents a condition where the workflow should halt. If set to `True`, the workflow ceases based on the set condition.
* **change\_page** (Optional, Boolean) If set to `True`, a new page is started on the app. Typically, `next_page` section should be used for changing the page unless using a attribute supported only by prompt sections (currently `continue_if` and `break`).

**Model-Specific Attributes**

Models can bring in their unique attributes. For instance, chat models recognize attributes like `system_role`, `message`, and `priming`.

#### Example 1

An example prompt section that uses a user input called `topic` and sends a message to `gpt-3.5-turbo` to generate a hilarious joke on that topic.

```ini
[ask.topic]
description = Enter a topic which you find hilarious.

[prompt.joke_generator]
model_name = gpt-3.5-turbo
message = Tell me a hilarious joke about {{input.topic}}.
```

#### Example 2

An example of a prompt section that uses two user inputs `dish_name` and `number_of_people` and sends a message to `gpt-4` to generate a recipe based on inputs.

```ini
[ask.dish_name]
description = Please enter the dish you would like to cook:

[ask.number_of_people]
description = Please enter the number of people you would like to cook for:

[prompt.detailed_recipe]
model_name = gpt-4
display = True
display_option = text
message = Provide a detailed recipe for making {{input.dish_name}} that serves {{input.number_of_people}} people.
```

#### Example 3

An example of a prompt section that **takes** a user input `genre` and sends a message to StabilityAI's `stable-diffusion-xl-beta-v2-2-2` to create an image of Taj Mahal in that genre.

```ini
[prompt.generate_image_2]
continue_if = not {{input.want_second_image_of_tajmahal}}
model_name = stable-diffusion-xl-beta-v2-2-2
description.genre_2 = Provide a image genre (for example, impressionist) that you would like to use:
message = Taj Mahal image in genre: {{input.genre_2}}
display_option = image
```

In this section, taking of user input `genre_2` is conditional on whether user want the second image. In such a case, inline user input inside a prompt section is needed as `ask` section currently doesn't support conditional (this will change soon).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.promptspace.app/psl-docs/more-on-prompts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
