From 48c081b89203a4c009e805e42d5522dc564baa5a Mon Sep 17 00:00:00 2001 From: Elvis Saravia Date: Sun, 12 Mar 2023 13:14:15 -0600 Subject: [PATCH] organize pages --- img/introduction.png | Bin 0 -> 45906 bytes pages/_meta.json | 4 +- pages/about.mdx | 2 +- pages/applications.mdx | 21 ++++ pages/applications/_meta.json | 1 - pages/applications/introduction.mdx | 3 - pages/applications/pal.mdx | 104 ++++++++++++++++++++ pages/index.mdx | 52 +++++++++- pages/{introduction => }/introduction.mdx | 37 ++++++- pages/introduction/_meta.json | 3 +- pages/introduction/settings.mdx | 2 +- pages/models.mdx | 13 +++ pages/models/_meta.json | 1 - pages/models/introduction.mdx | 3 - pages/{risks/introduction.mdx => risks.mdx} | 20 ++++ pages/risks/_meta.json | 1 - pages/techniques.mdx | 70 +++++++++++++ pages/techniques/_meta.json | 1 - pages/techniques/introduction.mdx | 5 - theme.config.tsx | 21 +++- 20 files changed, 336 insertions(+), 28 deletions(-) create mode 100644 img/introduction.png create mode 100644 pages/applications.mdx delete mode 100644 pages/applications/introduction.mdx rename pages/{introduction => }/introduction.mdx (56%) create mode 100644 pages/models.mdx delete mode 100644 pages/models/introduction.mdx rename pages/{risks/introduction.mdx => risks.mdx} (66%) create mode 100644 pages/techniques.mdx delete mode 100644 pages/techniques/introduction.mdx diff --git a/img/introduction.png b/img/introduction.png new file mode 100644 index 0000000000000000000000000000000000000000..6022d8aeaf6abe305338978d83cc64025472e762 GIT binary patch literal 45906 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 + + + + + \ No newline at end of file diff --git a/pages/applications/_meta.json b/pages/applications/_meta.json index b1a9993..8b6a913 100644 --- a/pages/applications/_meta.json +++ b/pages/applications/_meta.json @@ -1,5 +1,4 @@ { - "introduction": "Prompting Applications", "generating": "Generating Data", "pal": "Program-Aided Language Models" } \ No newline at end of file diff --git a/pages/applications/introduction.mdx b/pages/applications/introduction.mdx deleted file mode 100644 index 656d95d..0000000 --- a/pages/applications/introduction.mdx +++ /dev/null @@ -1,3 +0,0 @@ -In this guide we will cover some advanced and interesting ways we can use prompt engineering to perform useful and more advanced tasks. - -**Note that this section is under heavy development.** \ No newline at end of file diff --git a/pages/applications/pal.mdx b/pages/applications/pal.mdx index e69de29..479b957 100644 --- a/pages/applications/pal.mdx +++ b/pages/applications/pal.mdx @@ -0,0 +1,104 @@ +# PAL (Program-Aided Language Models) + +import { Callout, FileTree } from 'nextra-theme-docs' +import {Screenshot} from 'components/screenshot' +import PAL from '../../img/pal.png' + +[Gao et al., (2022)](https://arxiv.org/abs/2211.10435) presents a method that uses LLMs to read natural language problems and generate programs as the intermediate reasoning steps. Coined, program-aided language models (PAL), it differs from chain-of-thought prompting in that instead of using free-form text to obtain solution it offloads the solution step to a programmatic runtime such as a Python interpreter. + + + +Let's look at an example using LangChain and OpenAI GPT-3. We are interested to develop a simple application that's able to interpret the question being asked and provide an answer by leveraging the Python interpreter. + +Specifically, we are interested to create a functionality that allows the use of the LLM to answer questions that require date understanding. We will provide the LLM a prompt that includes a few exemplars which are adopted from [here](https://github.com/reasoning-machines/pal/blob/main/pal/prompt/date_understanding_prompt.py). + +These are the imports we need: + +```python +import openai +from datetime import datetime +from dateutil.relativedelta import relativedelta +import os +from langchain.llms import OpenAI +from dotenv import load_dotenv +``` + +Let's first configure a few things: + +```python +load_dotenv() + +# API configuration +openai.api_key = os.getenv("OPENAI_API_KEY") + +# for LangChain +os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") +``` + +Setup model instance: + +```python +llm = OpenAI(model_name='text-davinci-003', temperature=0) +``` + +Setup prompt + question: + +```python +question = "Today is 27 February 2023. I was born exactly 25 years ago. What is the date I was born in MM/DD/YYYY?" + +DATE_UNDERSTANDING_PROMPT = """ +# Q: 2015 is coming in 36 hours. What is the date one week from today in MM/DD/YYYY? +# If 2015 is coming in 36 hours, then today is 36 hours before. +today = datetime(2015, 1, 1) - relativedelta(hours=36) +# One week from today, +one_week_from_today = today + relativedelta(weeks=1) +# The answer formatted with %m/%d/%Y is +one_week_from_today.strftime('%m/%d/%Y') +# Q: The first day of 2019 is a Tuesday, and today is the first Monday of 2019. What is the date today in MM/DD/YYYY? +# If the first day of 2019 is a Tuesday, and today is the first Monday of 2019, then today is 6 days later. +today = datetime(2019, 1, 1) + relativedelta(days=6) +# The answer formatted with %m/%d/%Y is +today.strftime('%m/%d/%Y') +# Q: The concert was scheduled to be on 06/01/1943, but was delayed by one day to today. What is the date 10 days ago in MM/DD/YYYY? +# If the concert was scheduled to be on 06/01/1943, but was delayed by one day to today, then today is one day later. +today = datetime(1943, 6, 1) + relativedelta(days=1) +# 10 days ago, +ten_days_ago = today - relativedelta(days=10) +# The answer formatted with %m/%d/%Y is +ten_days_ago.strftime('%m/%d/%Y') +# Q: It is 4/19/1969 today. What is the date 24 hours later in MM/DD/YYYY? +# It is 4/19/1969 today. +today = datetime(1969, 4, 19) +# 24 hours later, +later = today + relativedelta(hours=24) +# The answer formatted with %m/%d/%Y is +today.strftime('%m/%d/%Y') +# Q: Jane thought today is 3/11/2002, but today is in fact Mar 12, which is 1 day later. What is the date 24 hours later in MM/DD/YYYY? +# If Jane thought today is 3/11/2002, but today is in fact Mar 12, then today is 3/1/2002. +today = datetime(2002, 3, 12) +# 24 hours later, +later = today + relativedelta(hours=24) +# The answer formatted with %m/%d/%Y is +later.strftime('%m/%d/%Y') +# Q: Jane was born on the last day of Feburary in 2001. Today is her 16-year-old birthday. What is the date yesterday in MM/DD/YYYY? +# If Jane was born on the last day of Feburary in 2001 and today is her 16-year-old birthday, then today is 16 years later. +today = datetime(2001, 2, 28) + relativedelta(years=16) +# Yesterday, +yesterday = today - relativedelta(days=1) +# The answer formatted with %m/%d/%Y is +yesterday.strftime('%m/%d/%Y') +# Q: {question} +""".strip() + '\n' +``` + +```python +llm_out = llm(DATE_UNDERSTANDING_PROMPT.format(question=question)) +print(llm_out) +``` + +```python +exec(llm_out) +print(born) +``` + +This will output the following: `02/27/1998` \ No newline at end of file diff --git a/pages/index.mdx b/pages/index.mdx index e8f41af..887c2f9 100644 --- a/pages/index.mdx +++ b/pages/index.mdx @@ -1,5 +1,55 @@ -# Preface +# Prompt Engineering Guide Prompt engineering is a relatively new discipline for developing and optimizing prompts to efficiently use language models (LMs) for a wide variety of applications and research topics. Prompt engineering skills help to better understand the capabilities and limitations of large language models (LLMs). Researchers use prompt engineering to improve the capacity of LLMs on a wide range of common and complex tasks such as question answering and arithmetic reasoning. Developers use prompt engineering to design robust and effective prompting techniques that interface with LLMs and other tools. Motivated by the high interest in developing with LLMs, we have created this new prompt engineering guide that contains all the latest papers, learning guides, lectures, references, and tools related to prompt engineering. + +import { Card, Cards } from 'nextra-theme-docs' + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/introduction/introduction.mdx b/pages/introduction.mdx similarity index 56% rename from pages/introduction/introduction.mdx rename to pages/introduction.mdx index 4715934..cc9eb40 100644 --- a/pages/introduction/introduction.mdx +++ b/pages/introduction.mdx @@ -4,4 +4,39 @@ Prompt engineering is a relatively new discipline for developing and optimizing This guide covers the basics of standard prompts to provide a rough idea on how to use prompts to interact and instruct large language models (LLMs). -All examples are tested with `text-davinci-003` (using OpenAI's playground) unless otherwise specified. It uses the default configurations, e.g., `temperature=0.7` and `top-p=1`. \ No newline at end of file +All examples are tested with `text-davinci-003` (using OpenAI's playground) unless otherwise specified. It uses the default configurations, e.g., `temperature=0.7` and `top-p=1`. + +import { Card, Cards } from 'nextra-theme-docs' + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/introduction/_meta.json b/pages/introduction/_meta.json index 2e37cb3..738e37f 100644 --- a/pages/introduction/_meta.json +++ b/pages/introduction/_meta.json @@ -1,7 +1,6 @@ { - "introduction": "Introduction", "basics": "Basic Prompts", - "settings": "A Word on LLM Settings", + "settings": "LLM Settings", "standard": "Standard Prompts", "elements": "Prompt Elements", "tips": "General Tips for Designing Prompts", diff --git a/pages/introduction/settings.mdx b/pages/introduction/settings.mdx index 16f73a8..83d4e50 100644 --- a/pages/introduction/settings.mdx +++ b/pages/introduction/settings.mdx @@ -1,4 +1,4 @@ -# A Word on LLM Settings +# LLM Settings When working with prompts, you will be interacting with the LLM via an API or directly. You can configure a few parameters to get different results for your prompts. diff --git a/pages/models.mdx b/pages/models.mdx new file mode 100644 index 0000000..c495239 --- /dev/null +++ b/pages/models.mdx @@ -0,0 +1,13 @@ +# Models + +In this section, we will cover some of the capabilities of language models by applying the latest and most advanced prompting engineering techniques. + +import { Card, Cards } from 'nextra-theme-docs' + + + + + \ No newline at end of file diff --git a/pages/models/_meta.json b/pages/models/_meta.json index ca2d8bd..6d981f4 100644 --- a/pages/models/_meta.json +++ b/pages/models/_meta.json @@ -1,5 +1,4 @@ { - "introduction": "Introduction", "chatgpt": "ChatGPT" } \ No newline at end of file diff --git a/pages/models/introduction.mdx b/pages/models/introduction.mdx deleted file mode 100644 index 3d8b183..0000000 --- a/pages/models/introduction.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Models - -In this section, we will cover some of the capabilities of language models by applying the latest and most advanced prompting engineering techniques. \ No newline at end of file diff --git a/pages/risks/introduction.mdx b/pages/risks.mdx similarity index 66% rename from pages/risks/introduction.mdx rename to pages/risks.mdx index 7769f4f..ba12eda 100644 --- a/pages/risks/introduction.mdx +++ b/pages/risks.mdx @@ -1,3 +1,23 @@ # Risks & Misuses We have seen already how effective well-crafted prompts can be for various tasks using techniques like few-shot learning. As we think about building real-world applications on top of LLMs, it becomes crucial to think about the misuses, risks, and safety involved with language models. This section focuses on highlighting some of the risks and misuses of LLMs via techniques like prompt injections. It also highlights harmful behaviors including how to mitigate via effective prompting techniques. Other topics of interest include generalizability, calibration, biases, social biases, and factuality to name a few. + +import { Card, Cards } from 'nextra-theme-docs' + + + + + + + + + \ No newline at end of file diff --git a/pages/risks/_meta.json b/pages/risks/_meta.json index 287594d..29a5ff4 100644 --- a/pages/risks/_meta.json +++ b/pages/risks/_meta.json @@ -1,5 +1,4 @@ { - "introduction": "Introduction", "adversarial": "Adversarial Prompting", "factuality": "Factuality", "biases": "Biases" diff --git a/pages/techniques.mdx b/pages/techniques.mdx new file mode 100644 index 0000000..36876c9 --- /dev/null +++ b/pages/techniques.mdx @@ -0,0 +1,70 @@ +# Prompting Techniques + +By this point, it should be obvious that it helps to improve prompts to get better results on different tasks. That's the whole idea behind prompt engineering. + +While those examples were fun, let's cover a few concepts more formally before we jump into more advanced concepts. + +import { Card, Cards } from 'nextra-theme-docs' + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/techniques/_meta.json b/pages/techniques/_meta.json index a5b343e..411c6f5 100644 --- a/pages/techniques/_meta.json +++ b/pages/techniques/_meta.json @@ -1,5 +1,4 @@ { - "introduction": "Introduction", "zeroshot": "Zero-shot Prompting", "fewshot": "Few-shot Prompting", "cot": "Chain-of-Thought Prompting", diff --git a/pages/techniques/introduction.mdx b/pages/techniques/introduction.mdx deleted file mode 100644 index ae8c2ac..0000000 --- a/pages/techniques/introduction.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Prompting Techniques - -By this point, it should be obvious that it helps to improve prompts to get better results on different tasks. That's the whole idea behind prompt engineering. - -While those examples were fun, let's cover a few concepts more formally before we jump into more advanced concepts. \ No newline at end of file diff --git a/theme.config.tsx b/theme.config.tsx index 268e1cc..a936f5d 100644 --- a/theme.config.tsx +++ b/theme.config.tsx @@ -2,16 +2,27 @@ import React from 'react' import { DocsThemeConfig } from 'nextra-theme-docs' const config: DocsThemeConfig = { - logo: Prompt Engineering Guide, + logo: ( + <> + + + + + + + Prompt Engineering Guide + + + ), project: { - link: 'https://github.com/shuding/nextra-docs-template', + link: 'https://github.com/dair-ai/Prompt-Engineering-Guide', }, chat: { - link: 'https://discord.com', + link: 'https://discord.gg/SKgkVT8BGJ', }, - docsRepositoryBase: 'https://github.com/shuding/nextra-docs-template', + docsRepositoryBase: 'https://github.com/dair-ai/Prompt-Engineering-Guide/tree/main/', footer: { - text: 'Nextra Docs Template', + text: 'Copyright © 2023 DAIR.AI', }, }