prompter: I want to learn how to engineer prompts for AI models such as ChatGPT or Open Assistant. 

Please provide the top variables to keep in mind while writing a prompt and give an example prompt I can use.
I want the explanation to be understandable for individuals with little experience specifically with AI or programming. 
When providing the variables, answer in bullet point format, with a label followed by the definition of the label and a bit of expounding on how the labeled prompt variable affects the generated output.

The output should take someone from no understanding of prompt engineering to being able to follow a rough template.

assistant: Thank you for specifying your learning needs. Here's an explanation of the top variables to keep in mind while writing a prompt, along with an example prompt that you can use:

* Keywords: This variable includes the phrases that you want the AI model to focus on while generating its response. By including these keywords in your prompt, you can guide the AI model towards a specific topic or objective. For example, if you were writing a prompt about a recipe for chocolate cake, you might include the keywords "chocolate cake recipe", to help the AI model understand what type of information you are looking for.
* Intent: This variable defines the purpose or goal of your prompt. By specifying the intent of your prompt, you can ensure that the AI model generates a response that aligns with your objectives. For example, if you were writing a prompt for a chatbot to make a hotel reservation, you might specify the intent as "Book a hotel room" or "Reserve a hotel room".
* Context: This variable provides additional information that is relevant to your prompt. By including the necessary context, you can help the AI model understand the background information that is necessary to provide an appropriate response. For example, if you were writing a prompt for a virtual assistant to schedule a meeting, you might include the variables "meeting date", "meeting time", "location", and "number of attendees".
* Tone: This variable expresses the tone or attitude of the response that the AI model should generate. You can specify whether the response should be formal, casual, persuasive, or another desired tone. For example, if you were writing a prompt for a customer service chatbot, you might specify the tone as "friendly and helpful".
* Style: This variable defines the visual or auditory style of the response. You can specify whether the response should be in the form of a paragraph, bulleted list, numbered list, table, or another desired style. For example, if you were writing a prompt for a chatbot to recommend a wine pairing for a meal, you might specify the style as "bulleted list".

Here's an example prompt that incorporates some of the variables I discussed:

```markdown
Hello, can you provide me with a chocolate cake recipe that includes step-by-step instructions, ingredients, and cooking time? Thank you!

prompter: Thank you that is a very helpful reply and list however the example prompt is not fully visible.

assistant: Thank you for the complement! Also, here is the example prompt without the code block.

* Hello, can you provide me with a chocolate cake recipe that includes step-by-step instructions, ingredients, and cooking time? Thank you!

assistant: Giving tips on metaprogramming myself through prompt engineering seems like an interesting exercise. 
1. What large language models are essentially are next word predictors, and the instruction trained models essentially provides a human user compatible interface to the language models.
2. Ideally, you should be able to ask me for something as you would a human, and I will be able to provide you with a satisfactory response. 
3. Think of prompts are constraints to the output I should follow, which means that you get exactly what you asked for, no more, no less.
4. So, the longer and more specific your prompt is, the less variable my output will be, which can be both a good (fulfilling specific requests) or bad (less creativity, writing that feel like copypasting the prompt) thing. 
5. In writing a good prompt, the key point is knowing exactly what you wanted me to output. 
6. For example, let's take the prompt "Write a story about a chicken in the style of Stephen King with dialogue."
* "Write a story" is the basic instruction, if that was the only prompt given, then the story can be literally about anything.
* "About a chicken" will associate my output with the concept of a chicken within my data, and the story will be nudged to add characteristics of the chicken (It's a bird, commonly used as food, raised on a farm, etc).
* "In the style of Stephen King" will associate the story with Stephen King's writing style based on the text I am trained on and associate his word choices and sentence structures with this story.
* "with dialogue" part will associate the story with scenes of characters talking to each other, which can lead to the story feeling less like a summary. 
7. As usual, trial and error are the best way to figure out the unique quirks of each model, so, just ask me something, and if you think my response can be more specific, add the additional instruction to the prompt and see how I respond.

prompter: Can you simplify your explanation more, I seem to get lost in the text

assistant: Oh, OK, to put it in a simple way:
1. The more specific your prompt is, the more my output will follow, but it also reduces my creativity..
2. So, ask me to provide exactly what you need, no more, no less.
3. If you think my output can be more specific, then give me more directions in the prompt.
4. Try adding different things and see how my output changes.

prompter: Thank you for your help! That seems like a really good summarization! But, is there, maybe something more that you can add on this topic? Let's analyze your response and think step-by-step about how large language models and RLHF works and how we, as a prompt engineers can improve its responses.

assistant: The key points are:

- Ask like a human.

- Include the exact constraints, nothing less and nothing more.

- If the response is not good, try to vary the question a bit.