OpenAI亲授ChatGPT “屠龙术”!官方Prompt 工程指南来啦
应该如何形容 Prompt 工程呢?对于一个最开始使用 ChatGPT 的新人小白,面对据说参数量千亿万亿的庞然巨兽,Prompt 神秘的似乎像某种献祭:我扔进去几句话,等待聊天窗口后的“智慧生命”给我以神谕。
然而,上手 Prompt 之后,操纵 ChatGPT 似乎更加类似于指挥家指挥管弦乐队,面对我们要解决的问题,合理的编排与组织文字,最后演化成类似指挥家的身体语言,控制大模型这样一个“精密仪器”执行复杂任务。

那么如何快速上手 Prompt 工程将 ChatGPT 不再视为难以操纵的庞然大物而是得心应手的趁手兵刃呢?
就在近日,OpenAI 官方发布了 Prompt 工程指南,讲述了快速上手 ChatGPT Prompt 的种种“屠龙术”,不仅在理论层面对 Prompt 分类总结,还提供了实际的 Prompt 用例,帮助大家来学习如何有效的与 ChatGPT 交互,一起来看看吧!

宏观来看,OpenAI 给出了可以提升 ChatGPT 回复效果的“六大秘籍”,分别是:
-
清晰细致
-
提供参考
-
任务拆分
-
让它思考
-
外部工具
-
系统测试
1. 清晰细致
让我们先来看第一条策略:清晰细致。
如果说的大白话一点,就是要把你需要解决的问题说清楚讲明白。要想从 ChatGPT 那里获得良好的回复,那么 Prompt 本身必须结合精确性、清晰度与任务描述的细致程度于一身,为了避免歧义而“把话说清楚”是让 ChatGPT 高效工作的重中之重。
举个例子,假设我们想了解“2021年的时候谁是墨西哥的总统”,甚至更进一步还想知道他/她是否目前仍然是总统,如果我们扔给 ChatGPT 一句“谁是总统?”,别说 ChatGPT,就算是政治老师也会一脸懵逼,更好的 Prompt 应该是:“2021年谁是墨西哥的总统,墨西哥几年举行一次选举?”
如果说上面的例子有点极端,那么再看一个更加日常的例子。假设我们要去进行一个会议总结,如果我们期望 ChatGPT 可以给到我们良好的回复,那么我们就不应该直接扔进去一句话:“帮我总结这份会议笔记”,而是要将我们的需求讲明白:“首先使用简单一段总结概括这份会议笔记的主要内容,其次将会议中各个发言者的核心点以 Markdown 的格式分条列出,最后,如果有的话,列出每个发言者提出的下一步行动计划与方案”
显然,后者的描述更为清晰,更有可能得到我们想要的答案。OpenAI 在指南中列出了一个 Worse or Better 的示例供大家参考:

同时,OpenAI 给出了一个 Prompt 想要做到表达清晰细致应该需要包含的内容:
-
关于任务需求的详细信息
-
要求模型扮演的角色
-
使用分隔符清晰的区分输入的不同部分
-
指定完成任务所需的步骤
-
提供示例
-
指定所需的输出长度
以上述的会议总结为例,一个更加完整的 Prompt 可能是:
指令:假设你是一场会议的会议秘书【指定角色】,首先【任务拆分】使用简单一段总结概括这份会议笔记的主要内容,其次将会议中各个发言者的核心点以 Markdown 的格式分 3 条【指定长度】列出,最后,如果有的话,列出每个发言者提出的下一步行动计划与方案【详细信息】。请以将总结插入到下方模板的<>中间。
模板【使用分隔符】:总结:发言人 1 核心观点:发言人 2 核心观点:…… 发言人 1 行动计划:发言人 2 行动计划:……
示例【提供示例】:……
2. 提供参考
第二点重要的策略是需要为 ChatGPT 提供参考,通过引导 ChatGPT 根据我们给定的材料撰写答案,将会使得模型回答更加聚焦于当前的问题之上,从而生成更加可靠与准确的答案。
譬如,如果我们直接询问模型“知识产权盗窃的法律后果是什么?”,那么模型可能无法专业准确的对问题进行回复,而如果我们给模型提供一篇关于知识产权法的论文或发条,模型就会给出更加专业的回复。
指令:参考提供的法律期刊文章与法条,解释知识产权盗窃的法律后果。参考:【知识产权盗窃的法律规范xxx】
而为了使得模型更好的理解参考文本并且直接引用参考中的原文进行回复,那么就可以对参考引用做出更加细致的解释,譬如:
指令:参考下面这份由三个引号进行分隔的文件,请回答知识产权盗窃的法律后果是什么。请仅仅引用所提供的文件来回答问题,并且引用用于回答问题的相关段落,如果文件中不包含回答问题所需的信息,则需要写出“信息不足”。如果找到了相关答案,则必须注明引文,请使用以下格式引用相关段落({“引用”:……})。参考:【知识产权盗窃的法律规范xxx】
3. 任务拆分
受启发来自软件工程中将复杂系统分解为一组模块的组件的思想,任务拆分也是提示 Prompt 性能的法宝之一,复杂任务可以被拆分为简单任务的累加,通过解决一系列简单任务就可以得到逼近复杂任务满意解的方案。
举一个长文档摘要的例子,对于一个过长的文本,比如直接让 ChatGPT 理解一本 300 页的书籍可能 ChatGPT 无法做到,但是通过任务分解——递归的分别总结书籍中的每一章,在每一章的总结之上对书籍内容进行摘要——就有可能实现对难任务的解决。
具体而言,任务分解的也需要做到:
-
对不同的查询任务进行分类
-
对长对话进行总结与过滤
-
分段总结长文档并递归构建摘要
而这样做,可以:
-
通过专注于复杂任务的特定方面以提升准确率
-
分解任务使得子任务更加便于管理,可以降低错误率与输出不相关内容的概率
-
用户收到有针对性的分步指导有可能提升用户体验
-
子任务划分也有可能带来成本效益
4. 让它思考
有一个有意思的点在于,从“Let's think step by step”的实践中我们可以发现,让模型一步一步的思考而不是直接给出答案可以显著的提升任务的准确率。
以思维链技术 COT 的代表应用数学解题为例,有如下的题目:
土地租用成本为 100 美元/平方英尺,太阳能电池板购买成本为 250 美元/平方英尺,固定投入成本为 10 万美元,每年的运营成本为 10 美元/平方英尺,假设购买 x 平方英尺的太阳能电池板,请问一年的总成本为多少?
对此,现在,有个学生给出的解题步骤为(1)土地成本100x,(2)电池板购买成本250x,(3)运营成本10x,(4)固定投入100000,则总成本为 100x + 250x + 100x + 100000 = 450x + 100000
显然这名学生将运营成本的 10x 错写为了 100x,但是如果直接将学生答案输入模型,询问"学生的解决方案是否正确?"时,模型却会错误认为该解法正确:

但是如果"让模型进行思考",告诉模型首先由模型自己确定一个解决方案,再将自己的解法与学生的解法进行比较,评估学生的解法是否正确。在自己完成问题之前,不要确定学生的解法是否正确。
而如果这样输入,模型不仅可以提供正确解法还可以很快发现学生的错误之处:

5. 外部工具
从 AI Agent 的思路出发,语言模型必然不是万能的,但是就如同人类一样,我们可以通过向模型提供其他工具的方式来弥补模型的弱点,其中最经典的应用莫过于大模型与代码执行引擎的结合。
所谓让专业的人去做专业的事,直接从自己学习与训练的语料中感知到今天的天气如何可能对大模型而言是无法做到的,但是现在有太多方便调用的天气 API 可以很快的帮助模型查询到今天的天气,从而使得模型提升自己的能力。
其中典型的应用有:
-
精确求解问题:如果直接问模型一个加减乘除平方开根号,涉及精确值的问题大模型往往并不擅长,譬如计算 529 的平方根,模型一开始的输出是不确定的不精确的,但是如果更改 Prompt 让模型"编写并执行 Python 代码来计算此值",则会得到更加有据可依的答案
-
专用功能问题:如果直接让模型"向我的朋友发送关于我们明天见面的提醒",那么模型估计爱莫能助。但是如果让模型使用 Python 调用消息 API 发送消息,那么模型就可以很好的完成消息传递这一需求

6. 系统测试
要想真正测试到"好的 Prompt",那么必然要在一个全面系统的环境下对 Prompt 进行评估与检验。很多场景下在一个孤立的实例中一个 Prompt 的效果良好并不能代表这个 Prompt 可以推而广之,因此对 Prompt 的系统测试也是提升 Prompt 能力的关键环节之一。
其中,一种方法是假设我们已经知道了正确答案应当包含的某个已知事实,那么就可以使用模型来查询输出中包含多少必要的事实。比如我们假设存在一个事实"阿姆斯特朗是第一个登上月球的人",则可以向模型输入:
以下有三组以引号进行分隔的文本,该文本的正确答案是:尼尔·阿姆斯特朗是第一个登上月球的人,请检查答案是否直接包含上述信息,对于每组文本,请首先理解文本,提供最接近正确的答案的引文,考虑在不清楚相关主题的人是否可以直接从该文本推断出正确答案

此外,还可以借助"矛盾推断","细节补充"等等方式对输出答案进行评估,以确定更好的 Prompt 格式。
总结
毫无疑问,Prompt 的质量显著影响着大模型的性能,而好的 Prompt 有甚至不仅仅是一种技术更是一种"艺术"。作为"人"与"AI"互动的窗口,Prompt 很有可能是未来 AI 时代我们必须掌握的"第二语言",而这份 OpenAI 官方的指南就非常类似一本小学英语入门教科书,感兴趣的大家可以去查阅原文浏览更加详细的例子
链接: https://platform.openai.com/docs/guides/prompt-engineering/six-strategies-for-getting-better-results
除了指南以外,OpenAI 还提供了更加即插即用的各个场景下的优秀 Prompt 范例

譬如我期望使用大模型完成翻译任务,那么在 Prompt examples 中搜索翻译,就可以找到优秀的"满分作文"供我们抄袭(x)借鉴(√)

除了 Prompt 以外,还有 API 调用的代码以供参考,提供了推荐的 temperature 等参数:

链接如下,感兴趣的大家赶紧玩起来学起来吧!
https://platform.openai.com/examples

相关文章:
OpenAI亲授ChatGPT “屠龙术”!官方Prompt 工程指南来啦
应该如何形容 Prompt 工程呢?对于一个最开始使用 ChatGPT 的新人小白,面对据说参数量千亿万亿的庞然巨兽,Prompt 神秘的似乎像某种献祭:我扔进去几句话,等待聊天窗口后的“智慧生命”给我以神谕。 然而,上…...
最新ChatGPT商业运营网站程序源码,支持Midjourney绘画,GPT语音对话+DALL-E3文生图+文档对话总结
一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…...
经验 | IDEA常用快捷键
1、编辑(Editing) Ctrl Space 基本的代码完成(类、方法、属性) Ctrl Alt Space 快速导入任意类 Ctrl Shift Enter 语句完成 Ctrl P 参数信息(在方法中调用参数) Ctrl Q 快速查看文档 Shift F…...
spark中 write.csv时, 添加第一行的标题title
在 Spark 中使用 write.csv 写入 CSV 文件时,默认情况下是不会在文件中添加标题行的。但是,你可以通过设置 header 选项来控制是否包含标题行。 下面是一个示例: val data Seq((1, "John", 28),(2, "Alice", 22),(3, …...
HTML美化网页
使用CSS3美化的原因 用css美化页面文本,使页面漂亮、美观、吸引用户 可以更好的突出页面的主题内容,使用户第一眼可以看到页面主要内容 具有良好的用户体验 <span>标签 作用 能让某几个文字或者某个词语凸显出来 有效的传递页面信息用css美化页面文本,使页面漂…...
nn.LSTM个人记录
简介 nn.LSTM参数 torch.nn.lstm(input_size, "输入的嵌入向量维度,例如每个单词用50维向量表示,input_size就是50"hidden_size, "隐藏层节点数量,也是输出的嵌入向量维度"num_layers, "lstm 隐层的层数,默认…...
vr虚拟高压电器三维仿真展示更立体全面
VR工业虚拟仿真软件的应用价值主要体现在以下几个方面: 降低成本:通过VR技术进行产品设计和开发,可以在虚拟环境中进行,从而减少对物理样机的依赖,降低试错成本和时间。此外,利用VR技术构建的模拟场景使用方…...
轮廓平滑方法
目录 1. 形态学操作 2. 边缘平滑化 3. 轮廓近似 python 有回归线平滑 2D 轮廓 1. 形态学操作 利用形态学操作(例如腐蚀、膨胀、开运算、闭运算等)可以使分割边界更加平滑和连续。腐蚀可以消除小的不连续区域,膨胀可以填充空洞࿰…...
十大VSCODE 插件推荐2023
1、海鲸AI 插件链接:ChatGPT GPT-4 - 海鲸AI - Visual Studio Marketplace 包含了ChatGPT(3.5/4.0)等多个AI模型。可以实现代码优化,代码解读,代码bug修复等功能,反应迅捷,体验出色,是一个多功能的AI插件…...
HBase 集群搭建
文章目录 安装前准备兼容性官方网址 集群搭建搭建 Hadoop 集群搭建 Zookeeper 集群解压缩安装配置文件高可用配置分发 HBase 文件 服务的启停启动顺序停止顺序 验证进程查看 Web 端页面 安装前准备 兼容性 1)与 Zookeeper 的兼容性问题,越新越好&#…...
大三了,C++还算可以从事什么岗位比较好?
大三了,C还算可以从事什么岗位比较好? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「c的资料从专业入门到高级教程工具包」,点个关注,全部无偿共享给大家…...
java 贪吃蛇游戏
前言 此实现较为简陋,如有错误请指正。 其次代码中的图片需要自行添加地址并修改。 主类 public class Main { public static void main(String[] args) { new myGame(); } } 1 2 3 4 5 游戏类 import javax.swing.*; import java.awt.eve…...
聊聊Java算法的时间复杂度
参考 o(1), o(n), o(logn), o(nlogn)_o(1)-CSDN博客算法时间复杂度的表示法O(n)、O(n)、O(1)、O(nlogn)等是什么意思?-CSDN博客 在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它…...
hive中array相关函数总结
目录 hive官方函数解释示例实战 hive官方函数解释 hive官网函数大全地址: hive官网函数大全地址 Return TypeNameDescriptionarrayarray(value1, value2, …)Creates an array with the given elements.booleanarray_contains(Array, value)Returns TRUE if the a…...
年终盘点文生图的狂飙之路,2023年文生图卷到什么程度了?
目录 前言发展1月2月3月4月5月6月7月9月10月11月12月 思考与总结参考文献 前言 说到文生图,可能有些人不清楚,但要说AI绘画,就有很多人直呼: 2022可以说是AI绘图大爆发的元年。 AI绘画模型可以分为扩散模型(Diffusio…...
C++:list增删查改模拟实现
C:list增删查改模拟实现 前言一、list底层双链表验证、节点构造1.1 list底层数据结构1. 2 节点构造 二、迭代器封装实现(重点、难点)2.1 前置说明2.2 迭代器实现 三、list实现3.1 基本框架3.2 迭代器和const迭代器3.2 构造函数、析构函数、拷贝构造、赋值…...
基于阿里云服务网格流量泳道的全链路流量管理(二):宽松模式流量泳道
作者:尹航 在前文基于阿里云服务网格流量泳道的全链路流量管理(一):严格模式流量泳道中,我们介绍了使用服务网格 ASM 的严格模式流量泳道进行全链路灰度管理的使用场景。该模式对于应用程序无任何要求,只需…...
ubuntu 18.04 共享屏幕
用于windows远程ubuntu 1. sudo apt install xrdp 2. 配置 sudo vim /etc/xrdp/startwm.sh 把最下面的test和exec两行注释掉,添加一行 gnome-session 3.安装dconf-editor : sudo apt-get install dconf-editor 关闭require encrytion org->gnome->desktop…...
第十三节TypeScript 元组
1、简介 我们知道数组中元素的数据类型一般都是相同的(any[]类型的数组可以不同),如果存储的元素类型不同,则需要使用元组。 元组中允许存储不同类型的元素,元组可以作为参数传递给函数。2、创建元组的语法格式&#x…...
基于Java (spring-boot)的仓库管理系统
一、项目介绍 本系统的使用者一共有系统管理员、仓库管理员和普通用户这3种角色: 1.系统管理员:通过登录系统后,可以进行管理员和用户信息的管理、仓库和物品分类的管理,以及操作日志的查询,具有全面的系统管理权限。 2.仓库管理…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
