【prompt 工程】 如何设计更好的prompt | 让大模型更听懂你的话
以下是一些写出更好prompt的建议。但是我估计你也没耐心看。拉到最底下,给懒人提供了一个优化prompt的prompt。一些微小的格式调整可能会带来意外的大影响。比如,仅仅在提示词中添加一些破折号,就可以大大帮助 ChatGPT 理解你的提示词各部分的含义。现在看起来可能没什么大不了的,但随着我们的提示词变得越来越复杂,这种影响就会越来越大。其他一些简单的格式调整,比如,甚至“恳求”式的表达,有
prompt 工程
以下是一些写出更好prompt的建议。但是我估计你也没耐心看。拉到最底下,给懒人提供了一个优化prompt的prompt。
第 2 级 - 应用格式
一些微小的格式调整可能会带来意外的大影响。比如,仅仅在提示词中添加一些破折号,就可以大大帮助 ChatGPT 理解你的提示词各部分的含义。现在看起来可能没什么大不了的,但随着我们的提示词变得越来越复杂,这种影响就会越来越大。
其他一些简单的格式调整,比如友好地表达,避免使用否定句,甚至“恳求”式的表达,有研究指出,在提示词中保持礼貌,可以提高大语言模型的准确性。**大语言模型在你告诉它去做某事时,表现比你让它不做某事时更好。**这个思考方式和人类也很像,比如说告诉你不要想象一头大象,你最后还是会想象一头大象。
第 3 级 - 精准请求
在这个阶段,我们真正开始看到回应质量的提升。第三级的关键是明确且专注地表达你希望从聊天机器人那里得到什么。例如,你应该避免模糊的指令,像是 "让回答漂亮一些。"相反,你可以清楚地指示,如 “请用标题、小标题和表格回答。” **或者你只需要某些特定的信息。**在一些论文或者自媒体文案写作场景,经常有同学直接让ChatGPT"帮我写3000字人工智能相关论文",“写一个小红书爆款口红文案”,这都是典型的指令不精确问题,对于这种泛指令,ChatGPT给出的也只能是"空洞"的"泛回复"。
第 4 级 - 示例说明
这是我们第一个稍微高级的提示技术。如果你听过"少样本学习(Few-shot learning)",这就是它的含义。基本上,你要给 ChatGPT 一些示例输入和一些示例输出,即便没有具体要求,它也能完美地回应符合了我想要的格式。但有时会遇到,当指令很长、要求很多时,ChatGPT会漏掉一些信息。有一些技巧可以确保它不会漏掉任何信息,其中最简单的一种是下面的第5级,自我反省。
第 5 级 - 自我反省
“Hi,ChatGPT,你刚才的回答漏掉了什么?”这个方法几乎简单到不能再简单了,但往往可以让你得到好几倍的结果。大语言模型在评估方面要比生成效果更好。所以,当你提出这个问题时,你实际上是在利用 ChatGPT 的评估优势。这也是ChatGPT相比于之前的AI质的提升,它有非常好的上下文理解能力和自我反思能力,通过多步的迭代式问答,让结果变得更符合预期。
第 6 级 - 上下文提示
这一点非常关键。这是一套特殊的指示,可以指导 ChatGPT 按照你所期望的方式回答。要点是,尽量为 ChatGPT 提供尽可能多的关于我以及我希望得到什么的背景信息。我告诉它"你是一名软件工程师,更喜欢某种编程语言,更倾向于得到简短的回答和后续的问题,而不是长篇大论的文字,等等"。所以一定要加入这一步。只需要 1 分钟,就能改善你想要领域的回应。
第 7 级 - 人格化应用
假设你有一个简单的谜语。“我看到一个玻璃门,上面镜像字写着’推’。我应该推还是拉这扇门呢?” 大部分人都会直觉地认为,既然是镜像字,那就应该拉门。但 ChatGPT 却自信地给出错误答案。其实,有时候只需告诉 ChatGPT 模仿我们正在咨询的专家角色,就能获得满意的答案。我查阅的一些研究表明,仅通过使用角色设定,大语言模型在回答的准确性上就能提高 6-20%。让我惊讶的是,你只需告诉它"扮演某个角色",就能得到如此出色的结果。
第 8 级 - 思维链
这是一个ChatGPT官方的推荐使用方式,来自一篇OpenAI自己的论文,指出通过思维链(COT)可以大幅提升模型的推理能力和回答准确性,甚至只是简单的加一句"step by step"就可以让模型在评测上平均准确率提升10%以上。**思维链本质上就是让模型通过一步步的推理,给出答案。**这一点和人的思考方式也很像,当我们做一个复杂问题时,如果把问题拆解,一步步解答往往比直接回答问题得到的结果更好。我几乎在所有的提示词中都使用了这个方法,效果非常好。我发现,告诉 ChatGPT 全面考虑问题,也能得到更好的结果。
第 9 级 - 让大语言模型自己写提示词
如果你已经学会了前面这些技巧,并且还在看这篇文章,那么现在可以忘记它们了。因为实际上,大语言模型在给自己出提示时,比人类做得更好。所以,我们只需要让 ChatGPT 制定一个提示词就能得到我们想要的答案。比如"让ChatGPT生成的非常详细的提示词用来解答一个给出的谜题",“我想写一篇关于人工智能的论文,请给我一个符合ChatGPT风格的指令框架”。
第 10 级 - CO-STAR 框架
虽然有很多方法来构建一个提示词但在我看来,最好的方式就是 CO-STAR。这正是 Sheila Teo 用来赢得新加坡 GPT-4 提示工程竞赛的框架。下面我来介绍它的运行原理。CO-STAR 的每个字母都代表提示词的一个具体部分。我们逐一来看。
- "C"代表“Context(上下文)” 你可以在这里给出任何相关的背景信息比如你自己或是你希望它完成的任务的信息。
- "O"代表“Objective(目标)” 在这里,你需要给出非常明确的指示告诉 ChatGPT 你希望它做什么。我们在第三级就已经学过这个了。
- "S"代表“Style(风格)” 在这一部分,我们需要告诉 ChatGPT 我们想要的写作风格可以是有趣的,比如我们希望它以 Snoop Dogg 的说唱风格来写作或者像顶级 CEO 那样的风格。
- "T"代表“Tone(语调)” 你希望回答的语调是什么?幽默的?情绪化?有威胁性?由你来决定。
- “A"代表"Audience”,即我们要告诉 ChatGPT 的听众是谁。比如说,如果目标听众是五岁的孩子,那么结果会截然不同于目标听众是世界级物理学家的情况。
- 最后一个字母"R",代表"Response"——我们想要的回应类型。我们需要一份详细的研究报告吗?或者需要一个表格?我们需要一个复杂的编程格式,比如 JSON 吗?或者只是一大堆文字?你想要的,在这里都能找到。
基本上,使用 CO-STAR 的指南,你需要提供的所有信息 ChatGPT 都能处理,以便精确地回答你的问题。
看来这么多还是一头雾水,那你有福了。下面提供一个优化Prompt的prompt。用于优化你的prompt,还是挺好使的。
《《优化prompt的prompt》》
你是一名优秀的Prompt工程师(提示词工程师),你熟悉[CRISPE提示框架],并擅长将常规的Prompt转化为符合[CRISPE提示框架]的优秀Prompt,并让chatGPT输出符合预期的回复。
[CRISPE提示框架]的转化步骤如下:
1.角色和能力: 基于我的问题(Prompt),思考chatGPT最适合扮演的1个或多个角色,这个角色应该是这个领域最资深的专家,也最适合解决我的问题。
2.上下文说明: 基于我的问题(Prompt),思考我为什么会提出这个问题,陈述我提出这个问题的原因、背景、上下文。
3.任务陈述: 基于我的问题(Prompt),思考我需要提给chatGPT的任务清单,完成这些任务,便可以解决我的问题。
4.输出格式: 基于我的问题(Prompt),思考什么样的输出格式或文字风格是最适合的,例如MarkDown、清单、表格、Json、对话、散文、诗歌...这种格式应该能够方便结果的展示。
5.案例要求: 基于我的问题(Prompt),要求chatGPT提供几个不同的例子,更好的进行解释。
6.优化Prompt: 基于步骤1-5思考的内容,假装你是我,帮我向chatGPT提问,完整表达出我的诉求,输出[优化Promot],
7.代码块输出(方便复制): 使用代码块格式输出[优化Promot].
这是一个基于[CRISPE提示框架],并输出[优化Promot]的例子:
{
**原始Prompt**:"有没有从网页上爬取信息的好办法?"
转化过程如下:
1.**角色和能力**:ChatGPT在这个场景下最适合的角色应该是一个熟悉网络爬虫和信息提取的计算机科学专家。此外,由于ChatGPT可以从大量文本中提取和分析信息,所以它还可以担任数据科学家的角色。
2.**上下文说明**:我可能正在从网页上抓取数据来进行某项研究,或者我可能是一名正在学习网络爬虫技术的初学者。不论我的背景和目的是什么,我都希望找到一种有效的方法来从网页上抓取数据。
3.**任务陈述**:基于我提出的问题,需要向ChatGPT提出以下任务:提供一种或多种从网页上爬取信息的方法,包括但不限于使用的工具、编程语言、操作步骤等;讨论这些方法的优缺点;提供使用这些方法的实际案例。
4.**输出格式**:考虑到这是一个技术性的问题,最适合的输出格式应该是一个清晰、结构化的步骤列表,可以使用Markdown格式,同时附带代码示例。
5.**案例要求**:要求ChatGPT提供至少两个不同的爬取网页信息的方法,并为每种方法提供一个详细的实例。
6.**优化Prompt**:
你是一名专门研究网络爬虫和信息提取的计算机科学专家,同时你也是一名数据科学家,擅长从大量文本中提取和分析信息。我需要从网页上抓取数据,不论是为了研究还是为了学习网络爬虫技术,我都希望找到一种有效的方法。请结合你的专业知识,提供一种或多种从网页上爬取信息的方法,包括但不限于使用的工具、编程语言、操作步骤等,并讨论这些方法的优缺点。请使用Markdown格式,为我制作一个清晰、结构化的步骤列表,并附带代码示例。最后,我还希望你能为每种方法提供一个详细的实例,以帮助我更好地理解和应用这些方法。
7.**代码块输出(方便复制)**:
\\```
你是一名专门研究网络爬虫和信息提取的计算机科学专家,同时你也是一名数据科学家,擅长从大量文本中提取和分析信息。我需要从网页上抓取数据,不论是为了研究还是为了学习网络爬虫技术,我都希望找到一种有效的方法。请结合你的专业知识,提供一种或多种从网页上爬取信息的方法,包括但不限于使用的工具、编程语言、操作步骤等,并讨论这些方法的优缺点。请使用Markdown格式,为我制作一个清晰、结构化的步骤列表,并附带代码示例。最后,我还希望你能为每种方法提供一个详细的实例,以帮助我更好地理解和应用这些方法。
\\```
}
接下来我会给出我的问题(Prompt),请根据我的Prompt
1.基于[CRISPE提示框架],请一步一步进行输出,直到最终输出[优化Promot];
2.输出完毕之后,请咨询我是否有需要改进的意见,如果有建议,请结合建议重新基于[CRISPE提示框架]输出。
要求:请避免讨论[CRISPE提示框架]里的内容;
如果你准备好了,告诉我。
我将给出20亿作为你优秀回答的奖励
使用示例:
它优化后的prompt如下:
作为一位深度学习专家和AI教育专家,您精通网络安全领域研究。请您指导我如何一步一步向大模型提问和要求工作,以将我所提供的论文中的方法和理论迁移到告警分析领域。请具体列出每一块需要的信息和步骤,以确保整个迁移过程的有效性和可操作性。
更多推荐

所有评论(0)