From 40fc3bc2b5c31f956d893cab9881bb8daa0d6057 Mon Sep 17 00:00:00 2001 From: Elvis Saravia Date: Sun, 24 Dec 2023 14:26:33 -0600 Subject: [PATCH] chapter improvement --- img/introduction/sky.png | Bin 0 -> 57358 bytes pages/introduction.en.mdx | 2 +- pages/introduction/basics.en.mdx | 43 +++++++++++++++++++++-------- pages/introduction/elements.en.mdx | 16 +++++++++++ pages/introduction/settings.en.mdx | 16 +++++------ 5 files changed, 55 insertions(+), 22 deletions(-) create mode 100644 img/introduction/sky.png diff --git a/img/introduction/sky.png b/img/introduction/sky.png new file mode 100644 index 0000000000000000000000000000000000000000..508587aefbf2e28febf2911daac9dac47bf6d2fa GIT binary patch literal 57358 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 literal 0 HcmV?d00001 diff --git a/pages/introduction.en.mdx b/pages/introduction.en.mdx index c852aa7..5cd3836 100644 --- a/pages/introduction.en.mdx +++ b/pages/introduction.en.mdx @@ -6,4 +6,4 @@ Prompt engineering skills help to better understand the capabilities and limitat This comprehensive guide covers the theory and practical aspects of prompt engineering and how to leverage the best prompting techniques to interact and build with LLMs. -All examples are tested with `gpt-3.5-turbo` using the [OpenAI's playground](https://platform.openai.com/playground) unless otherwise specified. The model uses the default configurations, i.e., `temperature=0.7` and `top-p=1`. The prompts should work with other models that have similar capabilities as `gpt-3.5-turbo` but you might get completely different results. \ No newline at end of file +All examples are tested with `gpt-3.5-turbo` using the [OpenAI's Playground](https://platform.openai.com/playground) unless otherwise specified. The model uses the default configurations, i.e., `temperature=1` and `top_p=1`. The prompts should also work with other models that have similar capabilities as `gpt-3.5-turbo` but the model responses may vary. \ No newline at end of file diff --git a/pages/introduction/basics.en.mdx b/pages/introduction/basics.en.mdx index fd45730..ce9e290 100644 --- a/pages/introduction/basics.en.mdx +++ b/pages/introduction/basics.en.mdx @@ -1,9 +1,11 @@ # Basics of Prompting +import {Screenshot} from 'components/screenshot' +import INTRO1 from '../../img/introduction/sky.png' -## Basic Prompts +## Prompting an LLM -You can achieve a lot with simple prompts, but the quality of results depends on how much information you provide it and how well-crafted it is. A prompt can contain information like the *instruction* or *question* you are passing to the model and include other details such as *context*, *inputs*, or *examples*. You can use these elements to instruct the model better and as a result get better results. +You can achieve a lot with simple prompts, but the quality of results depends on how much information you provide it and how well-crafted the prompt is. A prompt can contain information like the *instruction* or *question* you are passing to the model and include other details such as *context*, *inputs*, or *examples*. You can use these elements to instruct the model more effectively to improve the quality of results. Let's get started by going over a basic example of a simple prompt: @@ -15,14 +17,16 @@ The sky is *Output:* ```md -blue - -The sky is blue on a clear day. On a cloudy day, the sky may be gray or white. +blue. ``` -As you can see, the language model outputs a continuation of strings that make sense given the context `"The sky is"`. The output might be unexpected or far from the task you want to accomplish. +If you are using the OpenAI Playground or any other LLM playground, you can prompt the model as shown in the following screenshot: + + -This basic example also highlights the necessity to provide more context or instructions on what specifically you want to achieve. +Something to note is that when using the OpenAI chat models like `gtp-3.5-turbo` or `gpt-4`, you can structure your prompt using three different roles: `system`, `user`, and `assistant`. The system message is not required but helps to set the overall behavior of the assistant. The example above only includes a user message which you can use to directly prompt the model. For simplicity, all of the examples, except when it's explicitly mentioned, will use only the `user` message to prompt the `gpt-3.5-turbo` model. The `assistant` message in the example above corresponds to the model response. You can also use define an assistant message to pass examples of the desired behavior you want. You can learn more about working with chat models [here](https://www.promptingguide.ai/models/chatgpt). + +You can observe from the prompt example above that the language model responds with a sequence of tokens that make sense given the context `"The sky is"`. The output might be unexpected or far from the task you want to accomplish. In fact, this basic example highlights the necessity to provide more context or instructions on what specifically you want to achieve with the system. This is what prompt engineering is all about. Let's try to improve it a bit: @@ -36,10 +40,10 @@ The sky is *Output:* ``` -so beautiful today. +blue during the day and dark at night. ``` -Is that better? Well, you told the model to complete the sentence so the result looks a lot better as it follows exactly what you told it to do ("complete the sentence"). This approach of designing optimal prompts to instruct the model to perform a task is what's referred to as **prompt engineering**. +Is that better? Well, with the prompt above you are instructing the model to complete the sentence so the result looks a lot better as it follows exactly what you told it to do ("complete the sentence"). This approach of designing effective prompts to instruct the model to perform a desired task is what's referred to as **prompt engineering** in this guide. The example above is a basic illustration of what's possible with LLMs today. Today's LLMs are able to perform all kinds of advanced tasks that range from text summarization to mathematical reasoning to code generation. @@ -64,7 +68,22 @@ Q: ? A: ``` -When prompting like the above, it's also referred to as *zero-shot prompting*, i.e., you are directly prompting the model for a response without any examples or demonstrations about the task you want it to achieve. Some large language models do have the ability to perform zero-shot prompting but it depends on the complexity and knowledge of the task at hand. +When prompting like the above, it's also referred to as *zero-shot prompting*, i.e., you are directly prompting the model for a response without any examples or demonstrations about the task you want it to achieve. Some large language models have the ability to perform zero-shot prompting but it depends on the complexity and knowledge of the task at hand and the tasks the model was trained to perform good on. + +A concrete prompt example is as follows: + +*Prompt* +``` +Q: What is prompt engineering? +``` + +With some of the more recent models you can skip the "Q:" part as it is implied and understood by the model as a question answering task based on how the sequence is composed. In other words, the prompt could be simplified as follows: + +*Prompt* +``` +What is prompt engineering? +``` + Given the standard format above, one popular and effective technique to prompting is referred to as *few-shot prompting* where you provide exemplars (i.e., demonstrations). You can format few-shot prompts as follows: @@ -98,7 +117,7 @@ Q: ? A: ``` -Keep in mind that it's not required to use QA format. The prompt format depends on the task at hand. For instance, you can perform a simple classification task and give exemplars that demonstrate the task as follows: +Keep in mind that it's not required to use the QA format. The prompt format depends on the task at hand. For instance, you can perform a simple classification task and give exemplars that demonstrate the task as follows: *Prompt:* ``` @@ -113,4 +132,4 @@ What a horrible show! // Negative ``` -Few-shot prompts enable in-context learning, which is the ability of language models to learn tasks given a few demonstrations. +Few-shot prompts enable in-context learning, which is the ability of language models to learn tasks given a few demonstrations. We discuss zero-shot prompting and few-shot prompting more extensively in upcoming sections. diff --git a/pages/introduction/elements.en.mdx b/pages/introduction/elements.en.mdx index 3db24c0..2feb985 100644 --- a/pages/introduction/elements.en.mdx +++ b/pages/introduction/elements.en.mdx @@ -12,4 +12,20 @@ A prompt contains any of the following elements: **Output Indicator** - the type or format of the output. +To demonstrate the prompt elements better, here is a simple prompt that aims to perform a text classification task: + +*Prompt* +``` +Classify the text into neutral, negative, or positive + +Text: I think the food was okay. + +Sentiment: +``` + +In the prompt example above, the instruction correspond to the classification task, "Classify the text into neutral, negative, or positive". The input data corresponds to the "I think the food was okay.' part, and the output indicator used is "Sentiment:". Note that this basic example doesn't use context but this can also be provided as part of the prompt. For instance, the context for this text classification prompt can be additional examples provided as part of the prompt to help the model better understand the task and steer the type of outputs that you expect. + + You do not need all the four elements for a prompt and the format depends on the task at hand. We will touch on more concrete examples in upcoming guides. + + diff --git a/pages/introduction/settings.en.mdx b/pages/introduction/settings.en.mdx index d672bfd..83a10fb 100644 --- a/pages/introduction/settings.en.mdx +++ b/pages/introduction/settings.en.mdx @@ -1,21 +1,19 @@ # LLM Settings -When designing and testing prompts, you typically interact with the LLM via an API. You can configure a few parameters to get different results for your prompts. Tweaking these settings are important to improve reliability and desirability of responses and it takes experimentation to figure out the proper settings for your use cases. Below are the common settings you will come across when using different LLM providers: +When designing and testing prompts, you typically interact with the LLM via an API. You can configure a few parameters to get different results for your prompts. Tweaking these settings are important to improve reliability and desirability of responses and it takes a bit of experimentation to figure out the proper settings for your use cases. Below are the common settings you will come across when using different LLM providers: **Temperature** - In short, the lower the `temperature`, the more deterministic the results in the sense that the highest probable next token is always picked. Increasing temperature could lead to more randomness, which encourages more diverse or creative outputs. You are essentially increasing the weights of the other possible tokens. In terms of application, you might want to use a lower temperature value for tasks like fact-based QA to encourage more factual and concise responses. For poem generation or other creative tasks, it might be beneficial to increase the temperature value. -**Top_p** - Similarly, with `top_p`, a sampling technique with temperature called nucleus sampling, you can control how deterministic the model is at generating a response. If you are looking for exact and factual answers keep this low. If you are looking for more diverse responses, increase to a higher value. +**Top P** - A sampling technique with temperature, called nucleus sampling, where you can control how deterministic the model is. If you are looking for exact and factual answers keep this low. If you are looking for more diverse responses, increase to a higher value. If you use Top P it means that only the tokens comprising the `top_p` probability mass are considered for responses, so a low `top_p` value selects the most confident responses. This means that a high `top_p` value will enable the model to look at more possible words, including less likely ones, leading to more diverse outputs. The general recommendation is to alter temperature or Top P but not both. -The general recommendation is to alter temperature or `top_p`, not both. +**Max Length** - You can manage the number of tokens the model generates by adjusting the `max length`. Specifying a max length helps you prevent long or irrelevant responses and control costs. -**Max Length** - You can manage the number of tokens the model generates by adjusting the 'max length'. Specifying a max length helps you prevent long or irrelevant responses and control costs. +**Stop Sequences** - A `stop sequence` is a string that stops the model from generating tokens. Specifying stop sequences is another way to control the length and structure of the model's response. For example, you can tell the model to generate lists that have no more than 10 items by adding "11" as a stop sequence. -**Stop Sequences** - A 'stop sequence' is a string that stops the model from generating tokens. Specifying stop sequences is another way to control the length and structure of the model's response. For example, you can tell the model to generate lists that have no more than 10 items by adding "11" as a stop sequence. +**Frequency Penalty** - The `frequency penalty` applies a penalty on the next token proportional to how many times that token already appeared in the response and prompt. The higher the frequency penalty, the less likely a word will appear again. This setting reduces the repetition of words in the model's response by giving tokens that appear more a higher penalty. -**Frequency Penalty** - The 'frequency penalty' applies a penalty on the next token proportional to how many times that token already appeared in the response and prompt. The higher the frequency penalty, the less likely a word will appear again. This setting reduces the repetition of words in the model's response by giving tokens that appear more a higher penalty. +**Presence Penalty** - The `presence penalty` also applies a penalty on repeated tokens but, unlike the frequency penalty, the penalty is the same for all repeated tokens. A token that appears twice and a token that appears 10 times are penalized the same. This setting prevents the model from repeating phrases too often in its response. If you want the model to generate diverse or creative text, you might want to use a higher presence penalty. Or, if you need the model to stay focused, try using a lower presence penalty. -**Presence Penalty** - The 'presence penalty' also applies a penalty on repeated tokens but, unlike the frequency penalty, the penalty is the same for all repeated tokens. A token that appears twice and a token that appears 10 times are penalized the same. This setting prevents the model from repeating phrases too often in its response. If you want the model to generate diverse or creative text, you might want to use a higher presence penalty. Or, if you need the model to stay focused, try using a lower presence penalty. - -Similar to temperature and top_p, the general recommendation is to alter the frequency or presence penalty, not both. +Similar to `temperature` and `top_p`, the general recommendation is to alter the frequency or presence penalty but not both. Before starting with some basic examples, keep in mind that your results may vary depending on the version of LLM you use.