GPT 中文提示词技巧:参照 OpenAI 官方教程

前言

搜了半天什么 prompt engineering 的课,最后会发现 gpt 官方其实是有 prompt 教程的。因此本文主要是学习这篇教程。

概述 - OpenAI API

部分案例是参考:根据吴恩达老师教程总结出中文版prompt教程_哔哩哔哩_bilibili up主的内容。

一、尽可能清晰的指示

指示越少,限定 GPT 输出范围越小,我们得到的答案越准确。

详细信息查询

这一点应该大多数同学不会犯错。比如“谁是总统?”和“谁是2021年的美国总统?” 我认为对于大多数同学来说这样的检索能力很简单。

定义AI角色

很经典的限定,让输出更专业化。

在 api 里,我们可以传输3种不同角色的消息类型。

  • system:用于定义背景,比如 AI 角色,输出格式。
  • user:我们的问题。
  • assistant:我们对回复的举例,用于给 gpt 提示。

比如,“When I ask for help to write something, you will reply with a document that contains at least one joke or playful comment in every paragraph."

这样,当 user 要求写东西时生效。

分隔符限定输入分区

给 gpt 明确不同部分输入文字分别是什么。

Summarize the text delimited by triple quotes with a haiku.

“”“insert text here”“”

用 delimited 限定俳句的参考文本。

指定处理步骤

多任务分步骤执行。以下示例为先总结后翻译。

Use the following step-by-step instructions to respond to user inputs.

Step 1 - The user will provide you with text in triple quotes. Summarize this text in one sentence with a prefix that says "Summary: ".

Step 2 - Translate the summary from Step 1 into Spanish, with a prefix that says "Translation: ".

利用 assistant 提供示例

我自己先输出一次给他看,让他看看我期望的效果。

1701448411897

限定输出长度

如:50个字以内,3个要点(3 bullet points)。

二、提供参考文本

指示参考文本

比如没找到输入信息回复”我没找到“,可以帮助我们判断 GPT 是否正常读取了我们的输入:

Use the provided articles delimited by triple quotes to answer questions. If the answer cannot be found in the articles, write “I could not find an answer.”

也可以自己加上一些限定,比如评论分为几种提示:

1701406526761

image-20231201141111365

指示使用引文

如阅读理解,参考我的文档回答我的问题,没找到答案回复“没找到”,找到了回复引用范围:

You will be provided with a document delimited by triple quotes and a question. Your task is to answer the question using only the provided document and to cite the passage(s) of the document used to answer the question. If the document does not contain the information needed to answer this question then simply write: “Insufficient information.” If an answer to the question is provided, it must be annotated with a citation. Use the following format for to cite relevant passages ({“citation”: …}).

三、把任务分成子任务

对查询类型分类

类似淘宝用户评价处理这一类应用。这也是能大幅节约 API 开销的 prompt 方法。

You will be provided with customer service queries. Classify each query into a primary category and a secondary category. Provide your output in json format with the keys: primary and secondary.

Primary categories: Billing, Technical Support, Account Management, or General Inquiry.

Billing secondary categories: - Unsubscribe or upgrade - Add a payment method - Explanation for charge - Dispute a charge

Technical Support secondary categories: - Troubleshooting - Device compatibility - Software updates

Account Management secondary categories: - Password reset - Update personal information - Close account - Account security

General Inquiry secondary categories: - Product information - Pricing - Feedback - Speak to a human

以上是将用户输入分类给不同部门的查询分类,比如我输入“买回来的电脑坏了”,分类结果是技术支持-故障排除。我说“我想升级一下电脑”分类结果是账单-取消订阅或升级。

将信息分类,这样更方便我们对信息的传输(比如分发给不同的部门)。

1701405996732

对于状态机的切换,我们可以设定输入一定特殊字符串时切换。比如用户中途突然想切换服务了。

突破长度限制1:触发总结查询

我们知道 GPT 允许输入文本长度有限,有以下几种方法:

  1. 到达长度限制后,先前内容的摘要和后面的部分内容合并作为输入。
  2. 动态选择与当前回答最相关的先前部分。

突破长度限制2:分段递归查询

把文章分几段,每段提取一下摘要,最后所有摘要总结生成摘要。

四、给模型思考的时间

有时候我们会发现,问一些简单问题(如计算加减法)不知道为什么 GPT 也会犯错。官方提示是可以不要立即寻求答案,给予其思考的时间。

下定结论前,先得出 GPT 自己的答案,再比较判断用户答案

涉及到一点输出顺序影响结果的问题,因为 GPT 是根据前文内容生成后面的内容的。一个很有趣的例子:

1701411090510

GPT 的回答也不一定准确(比如视频演示中,对于问题7,回答是“矩形的面积”,驴唇不对马嘴)。我们可以让他拿自己的答案与学生答案作对比提高准确度。

1701411251189

还有一种误判情况:

1701411375691

原因在于让 GPT 先判断对错,再对比结果。

解决方案可以是:

1701411402859

第一是让他对比答案不用完全一样;

第二是先输出两个回答顺序,再判断正误,因为其生成内容的先后顺序。

隐藏中间步骤

这个推理过程并不一定是我们想要的,比如老板说我只要 TF 的结果。

我们可以做一定的输出格式限定:

1701488684841

只有 Hint 后面的部分是最终结果,‘’’ 中的都是中间步骤。

询问是否有遗漏

提示不要重复摘要,不要遗漏摘要:

image-20231202115434850

五、使用外部工具

嵌入文本搜索

比如先提供给 GPT 一定的信息供参考。

甚至可以使用外部数据库 API,地址如下:矢量数据库 |OpenAI 食谱

这里我就暂时不深入学习了~

执行代码或调用外部 API

比如计算,直接调 Python 库执行代码会更加准确。但是我试了一下,貌似 GPT3.5 是没法执行的。

1701489992626

不过要确保代码安全性。

六、系统地测试修改

阅读理解:能否从用户输入推出 answer

image-20231202121458003

我告诉 GPT,我会给你输入一些文本,你看看给定的这两条 answer 是否包含在其中。

步骤:

  1. 重写用户输入的要点。
  2. 重写一个比较接近用户输入要点的 answer 版本。
  3. 你觉得不知道这件事的人通过阅读 answer 能否得出用户输入要点的答案,并解释原因。
  4. 统计 YN 数量。

比如我输入了一段诗:

“”“In the summer of '69, a voyage grand, Apollo 11, bold as legend’s hand. Armstrong took a step, history unfurled, “One small step,” he said, for a new world.”“”

其实这里面都没提月球,所以是推不出答案的。

不过我的 GPT3.5 提示可以推出 answer1,无法推出 answer2. 还是有点笨笨的哈哈。

判题:给定用户答案和标准答案,判断用户答案是否正确

模型中的变量太多了,我们可以通过并交集判断用户答案和专家答案之间的集合关系进一步判断其正确性。

image-20231202122040210

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/209954.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用JavaScript的管道方法简化代码复杂性

用JavaScript的管道方法简化代码复杂性 在现代 web 开发中,维护干净有效的代码是必不可少的。随着项目的增加,我们功能的复杂性也在增加。然而,javaScript为我们提供了一个强大的工具,可以将这些复杂的函数分解为更小的、可管理的…

SSM志愿者系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 志愿者服务网站系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库 ,系统主要采用B…

Jmeter组件执行顺序与作用域

一、Jmeter重要组件 1)配置元件---Config Element: 用于初始化默认值和变量,以便后续采样器使用。配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同一个作用域的任何采样器…

shareMouse 使用中遇到的问题

一、shareMouse 使用中遇到的问题 1、鼠标不能移动到另一个显示器 明明是两个显示器,但是 只显示一个,鼠标也不能移到另一个显示器上 后来, 设置了 wrap mouse pointer around display就好了,虽然还是显示一个显示器&#xff0c…

基于SpringBoot的图书推荐系统的

摘 要 网络信息技术的高速发展,使得高校图书馆的服务空间日益扩大,依据个人特点的针对性服务逐渐成为新服务模式的主导趋势。对于大多数用户而言,很难在大量的学术图书馆中快速找到他们想要的材料。另外,随着时代的不断发展&…

RocketMQ阅读源码前的准备

本文将讲解如何在IDEA中导入 RocketMQ 源码,并运行 Broker 和 NameServer,编写一个消息发送与消息消费的示例。 一. 源码导入及调试 1.1 导入源码 RocketMQ 原先是阿里巴巴集团内部的消息中间件,于2016年提交至Apache基金会孵化&#xff0…

高压功率放大器的应用领域有哪些

高压功率放大器是一种特殊的电子设备,用于放大低电压信号到较高的功率水平。它在许多应用领域中发挥着重要作用。下面西安安泰将详细介绍高压功率放大器的几个常见应用领域。 声学领域:高压功率放大器在声学领域中广泛应用。例如,在音响系统和…

第一节:认识微服务

一、微服务技术对比 Dubbo SpringCloudSpringCloudAlibaba注册中心zookeeper、Redis Eureka、ConsulNacos、Eureka服务远程调用Dubbo协议Feign(http协议)Dubbo、Feign配置中心无SpringCloudGateway、ZuulSpringCloudConfig、Nacos服务网…

VR 实现 Splash Screen 效果

文章目录 背景官方实现逆向分析 背景 手机 App 在实现 Splash Screen 的时候,目前都有成熟的方案可以参考,但是在做 VR 开发时,要如何实现一个 App 自己的 Splash Screen ,下面是我们基于 PICO & OCULUS 进行业务开发时经过探…

继承 和 多肽(超重点 ! ! !)

[本节目标] 1.继承 2.组合 3.多肽 1.继承 1.1 为什么要继承 Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联&#xff0…

Prometheus+Grafana搭建日志采集

介绍 一、什么是日志数据采集 日志数据采集是指通过各种手段获取应用程序运行时产生的各类日志信息,并将这些信息存储到特定的地方,以便后续分析和使用。通常情况下,这些日志信息包括系统运行状态、错误信息、用户操作记录等等。通过对这些…

网络基础:网络通信基础

目录 1.网络通信基本单位 2.网络通信基础 3.调制技术 4.解调技术 5.载波调制 6.编码技术 6.1基本编码 6.2应用型编码 1.曼彻斯特编码 2.差分曼彻斯特编码 3.MLT-3编码 4.mB/nB编码 1.网络通信基本单位 Byte(字节)是用于计量存储容量的一种…

【动手学深度学习】(八)数值稳定和模型初始化

文章目录 一、理论知识 一、理论知识 1.神经网络的梯度 考虑如下有d层的神经网络 计算损失l关于参数Wt的梯度(链式法则) 2.数值稳定性常见的两个问题 3.梯度爆炸 4.梯度爆炸的问题 值超出阈值 对于16位浮点数尤为严重 对学习率敏感 如果学习率太大…

游戏反Frida注入检测方案

在游戏安全对抗过程中,有不少外挂的实现基于对游戏内存模块进行修改,这类外挂通常会使用内存修改器,除此之外,还有一种门槛相对更高、也更难检测的「注入挂」。 据FairGuard游戏安全数据统计,在游戏面临的众多安全风险…

oops-framework框架 之 创建项目(二)

引擎: CocosCreator 3.8.0 环境: Mac Gitee: oops-game-kit 构建 本篇博客将使用oops-game-kit 构建一个新的开发项目, 关于 oops-framework 框架的了解,可参考上篇博客: oops-framework框架 之 初始了解(一) 大概…

11.2每日一题(函数定义域)

因为等式的左边是单调增的,所以右边的等式也需要单调增从而确定函数的定义域

【C语言】【字符串函数的模拟实现】strcpy,strcat,strcmp,strncpy,strncat,strstr

1.strcpy char* strcpy(char*destination,const char* source)源字符串必须以’\0’结尾会将原字符串中的‘\0’拷贝到目标字符串中目标空间必须足够大,能放得下源字符串 模拟实现: char *my_strcpy(char* des,const char *sour) {char* retdes;asser…

接口测试探索基础

接口基础知识理解: 接口一般来说有两种:程序接口和协议接口 程序接口:程序内部的接口、倾向于方法间的调通信方式 协议接口:系统对外的接口、其他应用通过授权或认证后获取数据的方式 常见的的接口: 1、webService接口…

海云安谢朝海:开发安全领域大模型新实践 人工智能助力高效安全左移

2023年11月29日,2023中国(深圳)金融科技大会成功举行,该会议是深圳连续举办的第七届金融科技主题年度会议,也是2023深圳国际金融科技节重要活动之一。做好金融工作,需要兼顾创新与安全,当智能体…

Adobe:真正持续突破需要更多增长

如果我们调出 Adobe(NASDAQ:ADBE )的长期图表,我们会发现自 2011 年以来,长期投资者尤其获得了非常丰厚的回报。此外,该股票在去年 9 月为投资者提供了绝佳的机会由于股票在过去 14 个月里的回报率远超 100…