> For the complete documentation index, see [llms.txt](https://docs.borndigital.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.borndigital.ai/for-advanced-users/prompting-cookbook/basics.md).

# Basics

Where the prompt lives in the AI node, how to write Instructions that work with today's reasoning models, and a template to start from.

A **prompt** is everything the model gets before it answers: your instructions, the conversation so far and the user's message. The quality of the answer depends more on the prompt than on anything else you set.

## Where the prompt lives in the AI node

| Part of the prompt                   | Where you set it                                                                                                                                                                                        |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Instructions** (the system prompt) | **Essential** tab › **Behaviour** – the role, rules and style of the assistant. See [Essential tab](/digital-agent/conversation-flow/nodes-explained/ai-node/essential-tab.md#behaviour).               |
| **Input messages**                   | **Configuration** tab › **Modifying input for AI response** – by default one **User** message with `{current_utterance}`. A chain of **User** and **Assistant** messages can show the model an example. |
| **Conversation history**             | **Configuration** tab › **Use History** and **History length**.                                                                                                                                         |
| **Tools and MCP servers**            | **Essential** tab – their descriptions are part of the prompt, too.                                                                                                                                     |
| **Response format, reasoning**       | **Configuration** tab › **Preparing the response** – **Text** or **Json**, reasoning **Effort**.                                                                                                        |

Variables are written as `{variable_name}` in both the Instructions and the input messages and are replaced with their values before every call.

## Crafting effective Instructions

<details>

<summary>Be clear and specific</summary>

Say exactly what the assistant should do, for whom and in what form. Modern models follow instructions literally – they do what you write, not what you meant.

<mark style="color:red;">Unclear:</mark>\
`Help customers.`

<mark style="color:green;">Clear:</mark>\
`You answer questions of existing customers about their electricity contract: invoices, payments and meter readings. Answer in two or three short sentences.`

</details>

<details>

<summary>Give context and the reason behind a rule</summary>

The model makes better decisions when it knows why a rule exists.

<mark style="color:red;">Without reason:</mark>\
`Never read out the account number.`

<mark style="color:green;">With reason:</mark>\
`Never read out the full account number – the call may be overheard. If the customer needs it, read out only the last four digits.`

</details>

<details>

<summary>Set the scope and the way out</summary>

Tell the model what it must not handle and what to do then – hand over to a human, move to another node or say a fixed sentence.

```
Talk only about our products and the customer's contract. If the customer asks about anything else, say that you can help only with their contract. If the customer wants to speak to a person, use the Redirect to human tool.
```

</details>

<details>

<summary>Tell the model when to use each tool</summary>

Tool descriptions alone are often not enough. Name the tool and the situation in the Instructions:

```
Before answering a question about tariffs, always search the knowledge base. If the answer is not there, say that you do not know – never guess prices.
```

</details>

<details>

<summary>Write for the channel</summary>

* **Voice:** short sentences, one question at the end, no Markdown, no lists, numbers written the way they should be spoken. See [Writing for voice](/for-advanced-users/conversation-design-tips/customizing-speech-synthesis/writing-for-voice.md).
* **Chat:** Markdown is allowed – lists, bold text and links. See [Customizing text output](/for-advanced-users/conversation-design-tips/customizing-text-output.md).

</details>

<details>

<summary>Show an example of the answer</summary>

When the form of the answer matters, show it. Put a short example in the Instructions, or use a **User**/**Assistant** pair in the input messages. More in [Prompting techniques](/for-advanced-users/prompting-cookbook/prompting-techniques.md).

</details>

## Reasoning models (GPT-5, GPT-6 and others)

Most current models are **reasoning models**: they think before they answer. This changes a few habits from older models:

* **No "think step by step".** The model already reasons. Control how much it thinks with **Reasoning › Effort** instead – and keep it low for voicebots, because every step up adds latency before the first word.
* **Temperature is fixed.** For GPT-5 and GPT-6 models the temperature is locked at 1. Make answers consistent with clear Instructions and examples, not with a lower temperature.
* **Be direct, avoid contradictions.** Reasoning models try hard to satisfy every rule. Two rules that conflict (for example "always be brief" and "always explain all the options") make them slow and unpredictable. Read your Instructions once more looking only for conflicts.
* **Less shouting.** Words like *ALWAYS*, *NEVER* and *CRITICAL* in capitals are rarely needed and can make the model overcautious. Use them only for the few rules that really must not be broken.
* **Structured output.** When another node works with the answer, set **Response format** to **Json** and describe the structure in the Instructions (the word *json* must appear in them).

The models available in your environment are listed in **Configuration** › **AI provider**.

## Instructions template

Start small, test, and add rules only when you see a problem.

{% code title="Instructions" overflow="wrap" %}

```
You are {role}, the virtual assistant of {company}. You help {who} with {what}.

Rules:
- Answer only questions about {scope}. For anything else, say that you can help only with {scope}.
- Before answering a question about {topic}, search the knowledge base. If the answer is not there, say that you do not know.
- If the customer wants to speak to a person, use the Redirect to human tool.

Style:
- Answer in {language}, in two or three short sentences.
- {voice: no lists, no Markdown, write numbers as words | chat: use Markdown lists for steps}

Known about the customer:
- Name: {customer_name}
- Contract: {contract_type}
```

{% endcode %}

Keep the default input message `{current_utterance}`. If you change it, keep `{current_utterance}` in it – the user's message is not added automatically.

## Field notes

* **Avoid "be helpful".** It invites the assistant to answer off-topic questions just to comply. Describe the scope instead.
* **"Respond" works better than "answer"** when you define the form of the output – it tends to produce shorter text:\
  `Respond with two or three sentences maximum.`\
  `Respond with "Sorry, I cannot help with that."`\
  `Respond just with a whole number.`
* **Use the prompt library.** Save Instructions that work in the **Organization** library so your colleagues start from them, and use **Improve the prompt** (the magic wand) – but read the suggestion before you accept it.
* **Test with real utterances.** Try the node with what customers really say, including short answers, typos and off-topic questions, and check the answer in **Test**.
