ChatGPT如何写好Prompt编程示例详解

目录
  • 引言
  • 好的 prompt 具有的设计原则
  • 编写良好prompt的四种基础模式
  • 编写一个合格的prompt的要点
  • 让AI扮演角色
  • 明确提供要执行的任务
  • 给出完成任务的步骤
  • 围绕任务提供上下文
  • 陈述具体目标,给出具体要求
  • 要求格式化输出
  • 明确指定语言风格
  • 让AI站在人物的角度,而非上帝视角
  • 马上给出具体的样例
  • 小结

引言

现在已经产生了一种新职业:Prompt Engineer(提示指令工程师),可见 Prompt 是多么重要,且编写不易。

ChatGPT的产出,一半决定于它的实力,一半决定于你给它的指令,即Prompt。如果你在试用ChatGPT时,发现它比较弱智,没有大家传诵的那么智能,多半原因是你比较”弱智“,不知道如何编写它能清晰理解的指令。

这篇文章一起探讨下,小白如何写好 Prompt。

好的 prompt 具有的设计原则

  • 清晰,切忌复杂或歧义,如果有术语,应定义清楚。
  • 具体,描述语言应尽量具体,不要抽象活模棱两可。
  • 聚焦,问题避免太泛或开放。
  • 简洁,避免不必要的描述。
  • 相关,主要指主题相关,而且是整个对话期间,不要东一瓢西一瓤。

但这些原则比较抽象,不具有具体的指导意义,只能先做为整体的要求了解。

好与坏的举例:

# 有效 Prompt
你能总结一下《锻炼的好处》一文的要点吗?  # 聚焦、相关
巴黎最好的素食餐厅有哪些?  # 具体、相关
# 无效 Prompt
你能告诉我关于这个世界的什么?  # 宽泛、开放
你能帮我做作业吗?  # 开放
你好  # 无目的、不聚焦

编写良好prompt的四种基础模式

四种基础模式:

  • By example (示例模式)

在这种模式下,我们给模型提供一些示例文本,模型需要生成与示例文本类似的文本。 这种模式通常用于生成类似于给定示例的文本,例如自动生成电子邮件、产品描述、新闻报道等。 示例文本可以是单个句子或多个段落,具体取决于任务的要求。

示例中有什么格式或规律,让AI自己发现。

  • By instruction template (指令模板)

在这种模式下,我们给模型提供一些明确的指令,模型需要根据这些指令生成文本。 这种模式通常用于生成类似于技术说明书、操作手册等需要明确指令的文本。 指令可以是单个句子或多个段落,具体取决于任务的要求。

在给出prompt的时候,同时给出指令模板,约束输入和输出的互动格式。

  • By specific (特定指令)

在这种模式下,我们给模型提供一些特定信息,例如问题或关键词,模型需要生成与这些信息相关的文本。 这种模式通常用于生成答案、解释或推荐等。 特定信息可以是单个问题或多个关键词,具体取决于任务的要求。

这些问题或关键词一定是AI可以理解和接受的,是预置的已经存在的。

  • By proxy(代理模式)

在这种模式下,可以充当了一个代理,代表某个实体(例如人、角色、机器人等)进行操作或交互。 代理模式的核心思想是引入一个中介对象来控制对实际对象的访问,从而实现一定程度上的隔离和保护。 诸如于在 ChatGPT 中,"act as xxx" 可以让 ChatGPT 充当一个代理,扮演某个角色或实体的身份,以此来处理与该角色或实体相关的任务或请求。

这4个基础模式都很历害,它们可以推导出很多东西,包括下面的prompt编写模板。

编写一个合格的prompt的要点

  • 让AI扮演角色
  • 提供要执行的任务
  • 给出完成任务的步骤
  • 围绕任务提供上下文
  • 陈述具体目标,给出具体要求
  • 要求格式化输出
  • 明确指定语言风格
  • 让AI站在角色的角度
  • 马上给出具体的样例

下面分别看,这些要点都指什么。

让AI扮演角色

你想让它扮演一个什么样的角色,它便站在这样的角色的立场思考。

举例:你是...

你是一家顶级市场研究公司的才华横溢的分析师...

我希望你充当...

我希望你充当 JavaScript Console...

这种角色扮演ChatGPT竟然也毫不示弱,估计让它扮演一只小狗也可以。

此外还有:

  • 我想让你扮演一个脱口秀喜剧演员...
  • 我想让你扮演讲故事的角色...
  • 我想让你扮演一个小说家...
  • 我想让你充当书面作品的标题生成器...

至于说,ChatGPT能扮演什么,不能扮演什么,没有人知道,或许你能想到的它都能扮演,或许它只能扮演好一部分角色,但至少上面提供的角色,它都能很好的扮演,且已经有人分享过相关的prompt。

结论:无论写什么Prompt,开头第一句先描述一下我们想让ChatGPT充当什么角色。如果没有这样的角色,就杜撰一个,次数多了它可能也猜到是什么了。

明确提供要执行的任务

可以查到已经支持的任务有:文本分类、实体标注、信息抽取、翻译、生成、摘要提取、阅读理解、推理、问答、纠错、关键词提取、相似度计算。

这些单词在Prompt中都可以光明正大地出现,它们都有人使用过,ChatGPT都会理解得很好。

它有十大类基本能力:

  • 文本生成:  ChatGPT 可以生成各种格式的文本,例如写故事、写新闻文章或诗歌、写代码等。
  • 自动摘要:  ChatGPT 可以将一段很长的文本摘要成一个较短的版本。
  • 自然语言理解 (NLU):  ChatGPT 可以理解文本的含义,可用于情感分析、命名实体识别和文本分类等任务。
  • 语言翻译:  ChatGPT 可以针对语言翻译任务进行微调,将文本从一种语言翻译成另一种语言。
  • 对话生成:  ChatGPT 可以生成类似人类的对话,使其适用于聊天机器人和虚拟助手应用程序。
  • 文本转语音:  ChatGPT 可以针对文本转语音任务进行微调,将文本转换为口语。
  • 图像字幕:  ChatGPT 可以针对图像字幕任务进行微调,它可以为图像和视频生成字幕。
  • 阅读理解:  ChatGPT 可以针对阅读理解任务进行微调,它可以根据给定的文本回答问题。
  • 问答:  ChatGPT 可以根据给定的上下文或知识库回答问题。
  • 文本补全:  ChatGPT 可以根据给定的上下文或提示来完成给定的文本。

这十大项,及它们的子项,都是它可以执行的任务。

例如第一项能力中的:写故事、想故事、编故事,字词可以稍有差别,但都可能作为任务使用。

每一个prompt,都应该至少有一个清晰的任务。 这很重要!

举例:

我希望你充当 JavaScript console。我将键入命令,您将回复 JavaScript console 应显示的内容...

在这里“您将回复 JavaScript console 应显示的内容”,“回复内容”便是给AI的明确的任务。

再举一个例子:

我想让你扮演一个小说家。您将想出富有创意且引人入胜的故事...

在这里“您将想出富有创意且引人入胜的故事”,“想故事”便是任务。

再举例:

我想让你扮演一个脱口秀喜剧演员。我将...,您将...,根据这些话题创建一个例程...

在这里,“创建例程”便是任务。什么是例程?别担心AI看不懂,多给它几个样例,它自然就懂了。它以于自己要完成的任务,一半靠理解,一半猜测,本质上都是基于概率的推测。

再举例:

我想让你扮演讲故事的角色。您将想出引人入胜、富有想象力和吸引观众的有趣故事...

这里的任务是什么?“想出故事”对不对?

给出完成任务的步骤

步骤是一个大于1的待办事项,且有先后依赖关系和前后次序。

举例:

我希望你充当 JavaScript console。我将键入命令,您将回复 JavaScript console 应显示的内容...

这里的步骤是:

  • 我将键入命令
  • 你将回复内容

这就是完成任务的步骤,是人类与AI共同协作完成的。

再举例:

请做一个实体抽取任务,从下面这段话中提取出人名和地名,并用json格式输出:
刘亦菲( Crystal Liu,1987 年 8 月 25 日-[1])为 华裔美籍的女演员...

在这里:

  • 提取出人名和地名
  • 用json格式输出

就是任务步骤。

再举例:

我想让你扮演一个脱口秀喜剧演员。我将为您提供一些与时事相关的话题,您将运用您的智慧、创造力和观察能力,根据这些话题创建一个例程...

在这里:

  • 你瘵为你提供..话题
  • 你运用..创建例程

就是一个任务步骤。

围绕任务提供上下文

描述上下文是为了让AI更加清晰地理解我们的意图,是代替多次互动效果的。

举例:

...根据目标受众,您可以为讲故事环节选择特定的主题或主题,例如,如果是儿童,则可以谈论动物;如果是成年人,那么基于历史的故事可能会更好地吸引他们等等...

在这里:

  • 如果是儿童,则可以..
  • 如果成年人,那么..

这便是一种上下文环境的描述,它代表的是一种文字的正则表达式。

陈述具体目标,给出具体要求

举例:

我想让你充当书面作品的标题生成器。我会给你提供一篇文章的主题和关键词,你会生成五个吸引眼球的标题。请保持标题简洁,不超过 20 个字,并确保保持原意...

在这里,“请保持标题简洁,不超过 20 个字,并确保保持原”就是具体的,对生成目录的要求。

再举例:

...你可以选择任何类型,如奇幻、浪漫、历史小说等,但你的目标是写出具有出色情节、引人入胜的人物和意想不到的高潮的作品...

在这里:

  • “可以选择任何类型,如奇幻、浪漫、历史小说等”这是Option标准
  • “写出具有出色情节、引人入胜的人物和意想不到的高潮”是对目标提出的3个明确的要求

再举例:

写一篇简短的文章,说明为什么文案写作是 2023 年的一项基本技能。
使用这些策略:
- 使用具有说服力的语言
- 提出问题以在段落之间过渡
- 用证据和例子支持要点
- 直接与读者对话

对于多项要求,也可以使用任务的输入格式。不仅输出格式可以指定,输入格式也可以预先告知AI,方便AI理解。

要求格式化输出

举例:

创建关于使用 Notion 作为内容创建者保持井井有条的主题的思维导图,列出中心思想、主要分支和子分支。

在这里,列出“中心思想、主要分支和子分支”,就是人类指定的输出格式。

下面是一些较用通用的格式描述:

要求其改变输出:大纲;思维导图;要点;
有说服力的文章;
少于 280 个字符的文本块;
使用结构:1)什么,2)为什么,3)如何做。

这些字眼在Prompt中都可以出现。

明确指定语言风格

举例:

就如何使用 ChatGPT,创建更有效的内容,提供最讽刺、嘲讽的建议。

这里的“讽刺、嘲讽”便是语言风格,注意语言风格可以要求极致,例如使用“最”,但不能相互矛盾,例如在同一个prompt中,要求AI同时使用专业且诙谐的语言风格,虽然有时候它俩未必100%矛盾,但这种指定可能会让AI无视你指定的风格,因为它无法完成。

让AI站在人物的角度,而非上帝视角

举例:

主题:企业家的生产力
对于上述主题,从每个具有不同观点角色的角度编写多个观点。对于每个观点,用角色自己的声音写,使用那个人会使用的短语...

马上给出具体的样例

举例:

...我的第一个要求是“我需要一个关于毅力的有趣故事“...

在这里,“我需要一个关于毅力的有趣故事“,就是第一个输入的样例。样例是互动真正开始的地方,前面的内容都是为此准备的。

再举例:

...我的第一个要求是“我要写一部以未来为背景的科幻小说”...

在这里,“我要写一部以未来为背景的科幻小说”,就是一个样例。

小结

Prompt编写”博大精深“,看起来简单,其实没那么简单,要不为什么instagram上有人可以靠出售Prompt赚钱。能够交易的,尤其是可以复制的文本,它一定具有不扉的价值。但其实经过上面的研究,发现它也没有那么难,对于个人来讲,只需要研究某个垂直细分领域的Prompt如何编写就可以了,这其实又不难。

以上就是ChatGPT如何写好Prompt编程示例详解的详细内容,更多关于ChatGPT Prompt编程的资料请关注我们其它相关文章!

(0)

相关推荐

  • sql编程工具Sql Prompt下载及安装破解图文教程

    Sql Prompt智能提示及其格式化用起来非常方便. 免费下载地址:http://www.jb51.net/database/201355.html 1. 下载SQL Prompt 5.3.4.1,是个压缩包,里面有三个文件 免登录免积分下载地址:http://www.jb51.net/database/201355.html 1) 下载完成后,解压得到下面三项.一个是注册教程doc,一个是注册机keygen,一个是官方原版安装包V5.3.4.1. 2. 安装SQL Prompt 5.3.4.

  • C语言如何与ARM汇编语言混合编程示例详解

    目录 一.ARM汇编语言简介 二.C语言调用汇编语言 1.无参数调用 2.有参数调用 三.汇编语言调用C语言 四.总结 五.参考文献 主要使用软件:keiL μVision5 一.ARM汇编语言简介 什么是汇编语言?汇编语言是任何一种适用于电子计算机.微处理器或其他可编程器件的低级语言.虽然被称为"低级语言",但是并不是说汇编语言真的"低级".特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植.汇编语言主要包括传送指令.逻辑运算.移位指令.位

  • Java实现BP神经网络MNIST手写数字识别的示例详解

    目录 一.神经网络的构建 二.系统架构 服务器 客户端 采用MVC架构 一.神经网络的构建 (1):构建神经网络层次结构 由训练集数据可知,手写输入的数据维数为784维,而对应的输出结果为分别为0-9的10个数字,所以根据训练集的数据可知,在构建的神经网络的输入层的神经元的节点个数为784个,而对应的输出层的神经元个数为10个.隐层可选择单层或多层. (2):确定隐层中的神经元的个数 因为对于隐层的神经元个数的确定目前还没有什么比较完美的解决方案,所以对此经过自己查阅书籍和上网查阅资料,有以下的

  • 适合面向ChatGPT编程的架构示例详解

    目录 新的需求 领域知识 架构设计 管道架构 分层架构 类分层神经网络的架构 总结一下 新的需求 我们前面爬虫的需求呢,有些平台说因为引起争议,所以不让发,好吧,那我们换个需求,本来那个例子也不好扩展了.最近AI画图也是比较火的,那么我们来试试做个程序帮我们生成AI画图的prompt. 首先讲一下AI话题的prompt的关键要素,大部分的AI画图都是有一个个由逗号分割的关键字,也叫subject,类似下面这样: a cute cat, smile, running, look_at_viewer

  • ChatGPT编程秀之最小元素的设计示例详解

    目录 膨胀的野心与现实的窘境 新时代,新思路 总结一下 膨胀的野心与现实的窘境 上一节随着我能抓openai的列表之后,我的野心开始膨胀,既然我们写了一个框架,可以开始写面向各网站的爬虫了,为什么只面向ChatGPT呢?几乎所有的平台都是这么个模式,一个列表,然后逐个抓取.那我能不能把这个能力泛化呢?可不可以设计一套机制,让所有的抓取功能都变得很简单呢?我抽取一系列的基础能力,而不管抓哪个网站只需要复用这些能力就可以快速的开发出爬虫.公司内的各种平台都是这么想的对吧? 那么我们就需要进行设计建模

  • C语言编程C++旋转字符操作串示例详解

    目录 旋转字符串 字符串左旋 题前认知: 暴力移位: 三步翻转: 判断字符串旋转 题前认知 字符串追加判断 旋转字符串 字符串左旋 实现一个函数,可以左旋字符串中的k个字符. 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 题前认知: 一个字符串如果就定死了.eg:char arr[]="dfdf"什么的那多没意思,一点都没有人机交互的感觉,(虽然现在人机交互适合个体,不适合集群,但也是比死板的定死字符串舒服) 所以字符串得是我们可输入的,才有可玩性,玩的不

  • C++编程析构函数拷贝构造函数使用示例详解

    目录 构造函数 析构函数 拷贝构造之深拷贝和浅拷贝 深浅拷贝区别 首先定义一个类进行操作. class MM { public: protected: int year; string name; } 构造函数在类中默认有一个无参的构造函数 默认的构造函数为 类名(){}:这个构造函数 如果直接写了构造函数那么这个构造函数将会没有 构造函数 class MM { public: //MM() {};//无参构造函数 MM(int year, string name) :year(year), n

  • java编程创建型设计模式工厂方法模式示例详解

    目录 1.什么是工厂方法模式? 2.案例实现 3.JDK中的工厂方法模式 1.什么是工厂方法模式? 工厂方法模式设计方案:  将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现. 工厂方法模式:  定义了一个创建对象的抽象方法,由子类决定要实例化的类.工厂方法模式将对象的实例化推迟到子类. 何时使用?  不同条件下创建不用实例时.方法是让子类实现工厂接口. 2.案例实现 假如说,我们现在有这样一个需求:客户在点披萨时,可以点不同口味的披萨,比如北京的奶酪pizza.北京的胡椒p

  • Kotlin编程循环控制示例详解

    目录 本文总览 1. While循环 2. For循环 3. break和continue 3.1 break语句 3.2 continue语句 总结 本文总览 本篇来学习Kotlin循环结构的知识 1. While循环 while循环用于重复迭代代码块,只要给定条件为 true就会执行一次循环代码块.若条件为 false,则直接跳过循环代码块执行后面代码. while (x > 0) { x-- } // 当条件 x>0 成立,x 就会减一 do-while循环 与 while循环相类似,也

  • go语言编程实现递归函数示例详解

    目录 前言 函数中的 return 递归的问题 总结 前言 本篇文章主要是记录一下在 GScript 中实现递归调用时所遇到的坑,类似的问题在中文互联网上我几乎没有找到相关的内容,所以还是很有必要记录一下. 在开始之前还是简单介绍下本次更新的 GScript v0.0.9 所包含的内容: 支持可变参数 优化 append 函数语义 优化编译错误信息 最后一个就是支持递归调用 先看第一个可变参数: //formats according to a format specifier and writ

  • 语言编程花絮内建构建顺序示例详解

    目录 1 构建 顺序 1.1 交叉编译 1.2 设置 2 构建测试支持 1 构建 顺序 依据词法名顺序 当导入一个包,且这个包 定义了 init(), 那么导入时init()将被执行. 具体执行顺序: 全局变量定义时的函数 import 执行导入 -> cont 执行常量 --> var 执行变量 --> 执行初始化 init() --> 执行 main() ----> main import pk1 ---> pk1 const ... import pk2 ---&

随机推荐