Prompt engineering for text generation: Difference between revisions
No edit summary |
(→Roles) |
||
Line 63: | Line 63: | ||
==Roles== | ==Roles== | ||
Give [[ChatGPT]] a role it can emulate and roleplay as by starting with the text '''"Act as a..."'''. | |||
==Prompt Engineering for Code Generation Models== | ==Prompt Engineering for Code Generation Models== |
Revision as of 19:27, 2 April 2023
- See also: Prompt engineering, Prompts and Prompt engineering for image generation
Introduction
Prompt engineering is not limited to text-to-image generation and has found a fitting application in AI-generated art. Various templates and "recipes" have been created to optimize the process of providing the most effective textual inputs to the model. OpenAI has published such "recipes" for their language model that can be adapted to different downstream tasks, including grammar correction, text summarization, answering questions, generating product names, and functioning as a chatbot. [1]
In language models like GPT, the output quality is influenced by a combination of prompt design, sample data, and temperature (a parameter that controls the “creativity” of the responses). Furthermore, to properly design a prompt, the user has to have a good understanding of the problem, good grammar skill, and produce many iterations. [2]
Therefore, to create a good prompt, it’s necessary to be attentive to the following elements:
- The problem: the user needs to know clearly what he wants the generative model to do and its context. [2][3] For example, the AI can change the writing style of the output ("write a professional but friendly email" or "write a formal executive summary."). [3] Since the AI understands natural language, the user can think of the generative model as a human assistant. Therefore, thinking “how would I describe the problem to my assistant who haven’t done this task before?” may provide some help in defining clearly the problem and context. [2]
- Grammar check: simple and clear terms. Avoid subtle meaning and complex sentences with predicates. Write short sentences with specifics at the end of the prompt. Different conversation styles can be achieved with the use of adjectives. [2]
- Sample data: the AI may need information to perform the task that is being asked of it. This can be a text for paraphrasing or a copy of a resume or LinkedIn profile, for example. [3] It’s important that the data provided is coherent with the prompt. [2]
- Temperature: a parameter that influences how “creative” the response will be. For creative work, temperature should be high (e.g. .9) while for strict factual responses a temperature of zero is better. [2]
- Test and iterate: test different combinations of the elements of the prompt. [2]
Besides this, a prompt can also have other elements such as the desired length of the response, the output format (GPT-3 can output various code languages, charts, and CSVs), and specific phrases that users have discovered that work well to achieve specific outcomes (e.g. “Let's think step by step,” “thinking backwards,” or “in the style of [famous person]”). [3]
Prompt Engineering or ChatGPT should be avoided in certain scenarios. Firstly, when 100% reliability is required. Secondly, when the accuracy of the model's output cannot be evaluated. Finally, when generating content that is not in the model's training data, these techniques may not be the best approach to use. [4]
Building Prompts
In a text-to-text model, the user can insert diferent parameters in the prompt to modulate its response. The following parameter and prompt examples are taken from Matt Night's GitHub:
- Capacity and Role: "Act as an expert on software development on the topic of machine learning frameworks, and an expert blog writer."
- Insight: "The audience for this blog is technical professionals who are interested in learning about the latest advancements in machine learning."
- Statement: "Provide a comprehensive overview of the most popular machine learning frameworks, including their strengths and weaknesses. Include real-life examples and case studies to illustrate how these frameworks have been successfully used in various industries."
- Personality: "When responding, use a mix of the writing styles of Andrej Karpathy, Francois Chollet, Jeremy Howard, and Yann LeCun."
- Experiment: "Give me multiple different examples." [4]
The process of prompt refinement is a method to improve the quality of written content by transforming it into a compelling, imaginative, and relatable piece, fixing "soulless writing". The aim is to make the content engaging and impactful by focusing on storytelling, using persuasive language, emphasizing emotion and sensory details, making the content concise and highlighting key points. To create a sense of urgency and make the content relatable, the language can be personalized to the reader and potential objections can be addressed. [4]
To increase the readability, there are several strategies that can be employed in the prompt. First, it's important to request answers with a clear and concise language. Additionally, visual aids such as diagrams can be requested (e.g "Using mermaid.js you can include diagrams to illustrate complex concepts (low reliability)") Asking the AI to use of headings and subheadings is also recommended to divide the document into sections with clear organization. Important information should be emphasized using bold or italic text, and real-life examples such as case studies or real-world examples can be included to make concepts more relatable. Consistent formatting, including a consistent font, font size, and layout, should be used throughout the document. Analogies or comparisons can be employed to explain complex ideas, and asking for writing in active voice can make sentences more engaging and easier to follow. [4]
The model can also be asked to act as a technical advisor, mentor, quality assurance, code reviewer, debugging assistant, compliance checker, code optimization specialist, accessibility expert, search engine optimization specialist, and performance analyst. Examples of prompts for the use cases are available here.
Few-shot Standard Prompting
Few-shot Standard Prompts have a task description, a few examples and then a prompt.
For example
What are the 2-letter abbreviations for the following U.S. states?
New York is beautiful during autumn: NY
I went to school in California: CA
Vacationing in Florida is fun:
The task description:
- What are the 2-letter abbreviations for the following U.S. states?
The examples:
- New York is beautiful during autumn: NY
- I went to school in California: CA
The prompt:
- Vacationing in Florida is fun:
Example output
Vacationing in Florida is fun: FL
Roles
Give ChatGPT a role it can emulate and roleplay as by starting with the text "Act as a...".
Prompt Engineering for Code Generation Models
Genearte code using models like the OpenAI Codex.
- Describe the task - tell the coding model what you want it to do at a high level.
- Describe the context - describe background information like API hints and database schema to help the model understand the task.
- Show examples - show the model examples of what you want.
Task
Give the coding model a high-level task description. To improve the quality of the generated code, it's recommended to start the prompt with a broad description of the task at hand. For example, if you want to generate Python code to plot data from a standard dataset, you can provide a prompt like this:
# Load iris data from scikit-learn datasets and plot the training data.
However, sometimes the generated code may not be optimal, in which case you can provide more specific instructions such as importing libraries before using them. By combining a high-level task description with detailed user instructions, you can create a more effective prompt for coding model to generate code.
Examples
Gives the coding model examples. Imagine you prefer a unique style of writing Python code that differs from what model produces. Take, for instance, when adding two numbers, you prefer to label the arguments differently. The key to working with models like Codex is to clearly communicate what you want it to do. One effective way to do this is to provide examples for Codex to learn from and strive to match its output to your preferred style. If you give the model a longer prompt that includes the example mentioned, it will then name the arguments in the same manner as in the example.
See also zero shot, one shot and few shot learning
Context
If you want to use a library that the coding model is not familiar with, you can guide it by describing the API library beforehand.
For instance, the Minecraft Codex sample uses the Simulated Player API in TypeScript to control a character in the game. Since this is a newer API that the model does not know about yet, When given the prompt, the model attempts to make an educated guess based on the terms "bot" and "Simulated Player". However, the resulting code is not correct.
To correct this, you can show the model model the API definition, including function signatures and examples, so that it can generate code that follows the API correctly. As demonstrated in the example, by providing high-level context in the form of the API definition and examples, the model can understand what you want it to do and generate more accurate code.
How to Create Descriptive, Poetic Text
Tips
- Choose a topic and narrow down the scope.
- Select a point-of-view like third, second or first person.
- Directly or indirectly convey a mood. A subject or scene could evoke a particular feeling or you could give the chatbot a mood directly.
- Describe sensory details. Add details about the scene such as sounds, sights, smells, or textures. By pointing out an important detail, you can guide the output.
- Don't tell, Show. Ask the chatbot not to tell the user how to think or feel.
- Use figurative language. The chatbot should be encouraged to use metaphors, similes and descriptive phrases. Request a description that is evocative, lyrical, beautiful or poetic.
- Iterate and iterate. Your first prompt might not yield the desired result. Rework the prompt until you find an appealing answer. After you have created a prompt that is appealing, the chatbot can create many descriptions and you can pick the one you like.
- Edit and revise. Don't be afraid of revising and editing the generated text.
- You can ask the chatbot for assistance. The chatbot will explain why it selected a specific detail or phrase in a reply. The chatbot can also help you create a better prompt. You can point out individual phrases and ask the chatbot for alternatives or suggestions.
Template
Describe YOUR SCENE. Use sensory language and detail to describe the OBJECTS IN THE SCENE vividly. Describe SPECIFIC DETAILS and any other sensory details that come to mind. Vary the sentence structure and use figurative language as appropriate. Avoid telling the reader how to feel or think about the scene.
Overview of Tones
Suggested Tones
- Authoritative - confident, knowledgeable,
- Casual - relaxed, friendly, playful
- Conversational - conversational, engaging,
- Empathetic - understanding, caring
- Enthusiastic - enthusiastic, optimistic
- Expert - authoritative, respected
- Friendly - warm, approachable
- Funny - humorous, entertaining
- Humorous - entertaining, playful,
- Informal - relaxed, conversational
- Informative - informative, helpful
- Persuasive - persuasive, convincing
- Positive - positive, upbeat
- Professional - knowledgeable, competent, polished, professional, refined
- Serious - serious, sincere
- Straightforward - direct, concise
- Trustworthy - reliable, dependable
- Urgent - sense of urgency, importance
Tone Combinations and Use Cases
- Conversational and Casual - social media posts, blog content, internal communication
- Empathetic and Serious - crisis communication, customer service, sensitive topics
- Enthusiastic and Positive - sales pitches, customer service, motivational content
- Expert and Authoritative - thought leadership articles, industry reports, export opinions
- Funny and Casual - social media posts, branding, content marketing
- Informal and Humorous - social media posts, blog content, internal communication
- Informative and Authoritative - thought leadership articles, industry reports
- Persuasive and Urgent - limited-time offers, promotional campaigns
- Professional and Authoritative - executive communication, industry presentation, boarding meeting
- Professional and Friendly - sales emails, customer service, marketing copy
- Straightforward and Professional - business emails, formal communication, legal documents
- Trustworthy and Professional - business proposals, executive summaries, investor pitches
Parameters
Common Parameters
- Temperature
- Perplexity
- Burstiness
User-created Parameters
Introduction
These are user-created parameters. They serve to convey the intent of the users in a more concise way. These are not part of the model API but patterns the LLM has picked up through its training. These parameters are just a compact way to deliver what is usually expressed in natural language.
Example in ChatGPT
Prompt: Write a paragraph about how adorable a puppy is.
Temperature: 1.0
Sarcasm: 0.9
Vividness: 0.4
We add "Prompt: " to the start of our prompt to make sure ChatGPT knows where our prompt is. We add the GPT parameter temperature, which goes from 0 to 1 to indicate the following parameters also range from 0 to 1. Then we list our parameters along with their values which go from 0 to 1 (0 is the smallest, and 1 is the largest). Note that having too many or contradictory parameters may lower the quality of the response.
List of Parameters
- Professionalism -
- Randomness -
- Sentimentality -
- Sesquipedalianism -
- Sarcasm -
- Laconic -
- Asyndetic -
- Vividness -
- Ecclesiastical -
References
- ↑ Oppenlaender, J (2022). A Taxonomy of Prompt Modifiers for Text-To-Image Generation. arXiv:2204.13988v2
- ↑ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 Shynkarenka, V (2020). Hacking Hacker News frontpage with GPT-3. Vasili Shunkarenka. https://vasilishynkarenka.com/gpt-3/
- ↑ 3.0 3.1 3.2 3.3 Robinson, R (2023). How to Write an Effective GPT-3 or GPT-4 Prompt- Zapier. https://zapier.com/blog/gpt-prompt/
- ↑ 4.0 4.1 4.2 4.3 Matt Nigh. ChatGPT3 Prompt Engineering. GitHub. https://github.com/mattnigh/ChatGPT3-Free-Prompt-List