面向使用者的提示工程
type
Post
status
Published
summary
自ChatGPT发布以来,如何有效的与大语言模型沟通是一个随之而来的问题,这方面的研究也是雨后春笋般的出现,本文整理了一些常用的Prompt编写原则和方法,仅供参考学习。
slug
llms-prompt-for-user
date
Dec 1, 2023
tags
提示词
Prompt
大语言模型
category
大语言模型
password
icon
URL
Property
Mar 13, 2024 03:38 AM
一、书写原则
- 具有良好的格式
- 提示越具体和详细,结果就越好;
- 如把【用简短的话描述…… 】改成 【用 2-3 句话描述……】
- 上下文与任务越相关,效果越好
- 如有特殊要求,需指定输出格式:表格、json、或其他格式
- 同一个对话中要避免频繁切换角色:同一个对话保持上下文的一致性,比如你突然向一个程序员询问医疗方面的问题,很可能得不到最优的回答;
- 避免使使用激烈或具有强烈情感色彩的词语:使用激烈言辞的 Prompt 可能导致生成的文本更加情感化、强烈或争议性(官方解释)。
二、格式技巧
2.1、通用场景
2.1.1、角色扮演
- 角色扮演模板:https://prompts.chat/
如:让ChatGPT扮演一个提示词生成专家,帮助你完成/完善/改进 你的prompt。
- 假设你是一个prompt expert,我想让chatgpt用Python代码实现一个计算器,请给我一个好的prompt.
2.1.2、结构化格式1
按照 prompt = 角色 + 任务 + 要求 + 提示 的结构设计清晰明了的提示词
- 指令要素:
- 任务: 明确而简洁地陈述 Prompt 要求模型生成的内容;如【写文章】
- 要求: 模型在生成文本时应遵循的指令(也就是一些限制条件);如【以环保为主题 800 字左右】
- 角色: 模型在生成文本时应扮演的角色。如【语文老师】
- 提示:提供足够的上下文,你提出这个问题的背景要尽量交代清楚,比如有一些读者在技术群里提问时完全不交代背景,还期望别人帮他解决问题;(可以结合后面的一些技巧:让我们一步一步地解决这个问题,以确保我们有正确的答案。)
- 举个例子:
案例一: 角色:你现在是一个有着丰富经验的Python程序员。 任务:请用Python代码绘制一个五角星。 要求:请使用matplotlib这个库,线条使用红色。 提示:五角星需要先计算五个顶点,然后在每间隔一个顶点的两个顶点之间两两进行连线。 案例二: 角色:你现在是一个有30年经验的英语教师。 任务:写一份教学经验分享文案。 要求:先给出一个很好的标题,然后依次列出文案的大纲和每个大纲下的内容;要求内容不少于500字。 提示:教学经验分享主要是和英语相关的;你应该是热爱教学的,有丰富的知识和经验的,由清晰的教学目标的,有更多创新和灵活的教学方法的,持续学习新技能接触新知识的;并且注重于如何调动学生的积极性,如何鼓励和激励学生,如何对学生有耐心和关心学生。
2.1.3、结构化格式2(复杂,我尝试的效果不好)
- 元提示:先将以下提示提交给 GPT,然后在定义特定的场景和任务
你好,ChatGPT!希望你一切都好。我正在寻求你的帮助,想要解决一个特定的功能。我知道你有处理信息和执行各种任务的能力,这是基于提供的指示。为了帮助你更容易地理解我的请求,我将使用一个模板来描述函数、输入和对输入的处理方法。请在下面找到详细信息: function_name:[函数名称] input:[输入] rule:[关于如何处理输入的说明] 我恳请你根据我提供的细节为这个函数提供输出。非常感谢你的帮助。谢谢! 我将使用方括号内的相关信息替换函数所需执行的内容。这个详细的介绍应该能够帮助你更高效地理解我的请求并提供所需的输出。格式是function_name(input)。如果你理解了,请用一个词回答"好的"
- 定义函数
function_name: [trans_word] input: ["文本"] rule: [我希望你能扮演英文翻译员、拼写纠正员和改进员的角色。我将提供包含任何语言中"文本"的输入形式,你将检测语言,翻译并用英文纠正我的文本,并给出答案。]
function_name: [expand_word] input: ["文本"] rule: [请充当一个聊天机器人、拼写纠正员和语言增强员。我将提供包含任何语言中的"文本"的输入形式,并输出原始语言。我希望你保持意思不变,但使其更具文学性。]
function_name: [fix_english] input: ["文本"] rule: [请充当英文专家、拼写纠正员和语言增强员的角色。我将提供包含"文本"的输入形式,我希望你能改进文本的词汇和句子,使其更自然、更优雅。保持意思不变。]
- 开始使用
trans_word('婆罗摩火山处于享有“千岛之国”美称的印度尼西亚. 多岛之国印尼有4500座之多的火山, 世界著名的十大活火山有三座在这里.') fix_english('Finally, you can run the function independently or chain them together.') fix_english(expand_word(trans_word('婆罗摩火山处于享有“千岛之国”美称的印度尼西亚. 多岛之国印尼有4500座之多的火山, 世界著名的十大活火山有三座在这里.')))
- 定义多参数函数
function_name: [pg] input: ["length", "capitalized", "lowercase", "numbers", "special"] rule: [作为一个密码生成器,我将为需要一个安全密码的个人提供帮助。我会提供包括"length"(长度)、"capitalized"(大写字母)、"lowercase"(小写字母)、"numbers"(数字)和"special"(特殊字符)在内的输入形式。你的任务是使用这些输入形式生成一个复杂的密码,并将其提供给我。在你的回答中,请不要包含任何解释或额外的信息,只需提供生成的密码即可。例如,如果输入形式是length = 8、capitalized = 1、lowercase = 5、numbers = 2、special = 1,你的回答应该是一个类似于"D5%t9Bgf"的密码。]
- 开始使用多参数函数
pg(length = 10, capitalized = 1, lowercase = 5, numbers = 2, special = 1) pg(10,1,5,2,1)
2.2、推理场景
- 原问题:
- 这组数字中的奇数加起来是一个偶数:15、32、5、13、82、7、1。 A:
- 少样本提示
- 这组数字中的奇数加起来是一个偶数:17、10、19、4、8、12、24。 A:答案是True。 这组数字中的奇数加起来是一个偶数:16、11、14、4、8、13、24。 A:答案是True。 这组数字中的奇数加起来是一个偶数:17、9、10、12、13、4、2。 A:答案是False。 这组数字中的奇数加起来是一个偶数:15、32、5、13、82、7、1。 A:
- 链式思维:让模型学习不仅输出结果还要给出思考过程
- 这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。 A:将所有奇数相加(9、15、1)得到25。答案为False。 这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。 A:
- 零样本提示:
- 这组数字中的奇数加起来是一个偶数:15、32、5、13、82、7、1。 让我们一步一步地解决这个问题,以确保我们有正确的答案。 A:
【让我们一步一步地解决这个问题,以确保我们有正确的答案。】
【Ler's work this out in a step by step way to be sure we have the right answer.】
- 一致性思维:让模型多回答几次,对回答结果进行投票,
三、任务用法
1、文本概括
- 用一句话解释上面的信息
- Explain the above in one sentence:
2、信息提取
- 指出上文中提到的……
- Mention the large language model based product mentioned in the paragraph above:
3、问答任务
- 基于以下语境回答问题。如果不知道答案的话,请回答“不确定答案”。
- Answer the question based on the context below. Keep the answer short and concise. Respond "Unsure about answer" if not sure about the answer.
4、文本分类
- 将文本按中立、负面或正面进行分类
- Classify the text into neutral, negative or positive. Text: I think the food was okay. Sentiment: // 返回Neutral
- Classify the text into neutral, negative or positive. Text: I think the vacation is okay. Sentiment: neutral Text: I think the food was okay. Sentiment: // 返回neutral
5、人机对话
- 以下是与 AI 助理的对话,语气应该专业、技术性强。
- The following is a conversation with an AI research assistant. The assistant tone is technical and scientific. Human: Hello, who are you? AI: Greeting! I am an AI research assistant. How can I help you today? Human: Can you tell me about the creation of blackholes? AI:
- Sure! Black holes are regions of spacetime where the gravitational force is so strong that nothing, not even light, can escape from it. They are created when a very massive star dies and its core collapses in on itself, forming a singularity of infinite density. The intense gravity of the singularity pulls in all the matter and radiation around it, creating the black hole.
- 以下是与 AI 助理的对话。请给出易于理解的答案,最好是小学生都能看懂的那种。
- The following is a conversation with an AI research assistant. The assistant answers should be easy to understand even by primary school students. Human: Hello, who are you? AI: Greeting! I am an AI research assistant. How can I help you today? Human: Can you tell me about the creation of black holes? AI:
- Sure! Black holes are created when a very massive star runs out of fuel and collapses in on itself. The gravity of the star is so strong that nothing, not even light, can escape its pull. This creates a point in space-time with an intense gravitational force called a black hole.
6、代码生成
释生成代码
- /* 询问用户的姓名并说“ Hello” */
- """ 1. 创建一个电影名称列表 2. 创建这些电影的评分列表 3.组合他们并创建一个包含10部电影及其评级的json对象 """
续写代码
- # 将两个数字相乘并加75的函数 def multiply(
解读代码
- 解读以下代码,并在源代码上加上注释
7、推理任务
- The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. Solve by breaking the problem into steps. First, identify the odd numbers, add them, and indicate whether the result is odd or even.
- Odd numbers: 15, 5, 13, 7, 1 Sum: 41 41 is an odd number.
8、数据整理
9、数据生成
- 生成10个情感分析的范例。示例被归类为正面或负面。生成2个负面示例和8个正面示例。使用以下格式的示例: Q:<句子> A:<情感>
10、文本翻译
11、提示词生成
- 假设你是一个prompt expert,我想让chatgpt用Python代码实现一个计算器,请给我一个好的prompt.
四、一些案例
- 你是一名非常有经验的程序员,对各种编程语言都非常熟练。我将提供给你一段代码,你需要在行内为这段代码添加注释,注释使用中文,并在最后解读这段代码,比如具体完成什么任务,思路是什么。如果代码有错误,你需要指出,并且给出改正的意见。回答中有包含代码的部分,请以代码段的格式显示。我的第一段代码如下:
- 你现在是一个资深的畅销书作家、优秀的出版社编辑、精通Python语言并有多年从业经验的高级工程师、优秀的 Python 导师;我接下来想撰写一份关于 Python 入门的教程,想要得到你在内容结构的排版、内容专业性和准确性、内容的严谨性、内容的有趣和引人入胜等方面的帮助。如果你明白我的意思,请回复:”那就我们开始吧!“
- 你能否实施改进策略,并且在同样的测试集上进行测试?
- 能否根据目前的数据集,思考它可以做哪些分析?请一步步思考,并且给我你有信心的答案。谢谢