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

news2024/11/27 20:54:31

前言

搜了半天什么 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

批量AI创作文案的工具,批量AI创作文章的软件

人工智能(AI)的应用不断拓展,其中批量AI创作逐渐成为许多文本创作者和企业编辑的热门选择。面对海量的文章需求,批量AI创作工具能够高效、快速地生成大量文本内容,从而减轻创作者的工作负担。本文将专心分享批量AI创作…

一对一互相聊天

服务端 package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector;…

day14_java中的IO流(详解)

IO流 学习IO,我们必须要知道硬盘上的文件(文件夹)在java中的表现形式 一、File文件 Java中 提供了一个类 File 供我们使用; File : 文件和目录(文件夹)路径名的抽象表示 1、构造方法: File(File parent, String …

【环境搭建】ubuntu22安装ros2

基于某种特殊需求,从Ubuntu16到22目前都尝试过安装ros、ros2 参考1:http://t.csdnimg.cn/DzvSe 参考2:http://t.csdnimg.cn/sOzr1 1.设置locale sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 s…

Linux---逻辑卷管理

本章主要介绍逻辑卷的管理。 了解什么是逻辑卷创建和删除逻辑卷扩展逻辑卷缩小逻辑卷逻辑卷快照的使用 前面介绍了分区的使用,如果某个分区空间不够,想增加空间是非常困难的。所以,建议尽可能使用逻辑卷而非普通的分区,因为逻辑卷…

VideoAssembler 一种新颖的方法,生成具有多样化内容的视频的方法

文章目录 摘要方法代码 VideoAssembler: Identity-Consistent Video Generation with Reference Entities using Diffusion Model 本文提出了VideoAssembler,一种新颖的方法,生成具有多样化内容的视频。它可以保留实体的保真度,并生成可控的内…

从零开始的c语言日记day40——字符函数和字符串函数——内存函数

常用函数介绍 求字符串长度 strlen 长度不受限制的字符串函数 Strcpy Strcat strcmp 长度受限制的字符串函数介绍 strncpy strncat strncmp 字符串查找 Strstro strtok 错误信息报告 strerror 字符操作 内存操作函数 memcpy memmove memset Memcmp 使用Asser…

Mendix版的电商京东首页长什么样儿?

前言 世界需要大前端。大前端需要Mendix。 近日经常有企业IT侧的朋友反应,自家需要一个神奇的内容管理平台,来快速打造随需应变的公司官网,亦或企业官微,如果能在小程序里呈现产品营销类的功能更好。首先要肯定的是,…

nodejs+vue+微信小程序+python+PHP的Sd球鞋销售平台的设计与实现-计算机毕业设计推荐

此网站系统的开发方式和信息管理方式,借鉴前人设计的信息和研发。以网站商品信息为主,购物商品为核心功能来进行设计和研发,把网站信息和技术整合,开发出一套Sd球鞋销售平台。用目前现有的新技术进行系统开发,   目…

linux云服务器开启防火墙注意事件

重要的事情先说三遍: linux云服务器开启防火墙要先获取到云服务器的管理界面控制权!! linux云服务器开启防火墙要先获取到云服务器的管理界面控制权!! linux云服务器开启防火墙要先获取到云服务器的管理界面控制权!! 也就是能打开这个页面: 为什么这么说呢?如果你…

这个蓄电池监测技术,超硬核!

随着科技的飞速发展,蓄电池作为一种重要的能量储存装置,已经深刻地影响着我们的日常生活和各个行业。 因此,为了确保蓄电池系统的可靠性、安全性和效率,监控技术的应用变得尤为迫切。 客户案例 工业备用电源 在工业领域&#x…

Spring Boot 实战 | Spring Boot整合JPA常见问题解决方案

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…

中庸行者 - 华为机试真题题解

给定一个m * n的整数矩阵作为地图,短阵数值为地形高度; 中庸行者选择地图中的任意一点作为起点,尝试往上、下、左、右四个相邻格子移动; 移动时有如下约束: 中庸行者只能上坡或者下坡,不能走到高度相同的点不允许连续上坡或者连续下坡,需要交替进行,每个位置只能经过一次…

【Ajax】发送get请求获取接口数据

编写html实现通过Ajax发送get请求并获取数据 代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title…

冯·诺依曼的绝密程序,让世界上多了一个高薪职业!

1 一次偶遇 1944年春天&#xff0c;戈德斯坦上校在阿伯丁火车站台上偶遇大神冯诺依曼。 戈德斯坦壮起胆子&#xff0c;拘谨地和冯诺依曼聊起来。 幸运的是&#xff0c;冯诺依曼热情而友善&#xff0c;让戈德斯坦很放松。 当冯诺依曼得知戈德斯坦正在宾夕法尼亚大学研制电子计算…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion简介

Stable Diffusion是2022年发布的深度学习文本到图像生成模型,它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如

微信会员卡小程序 多门店系统 满足日常商家的收银功能 附带完整的搭建教程

大家好&#xff0c;今天罗峰来给大家分享一款微信会员卡小程序源码系统&#xff0c;多门店系统&#xff0c;附带完整的搭建教程。 以下是部分代码示例&#xff1a; 系统特色功能一览&#xff1a; 1.多门店管理&#xff1a;系统支持添加多个门店&#xff0c;每个门店可独立管理…

自动化定时发送天气提醒邮件

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;如喜欢麻烦您点个&#x1f44d;或者点个⭐&#xff01; &#x1f…

Redis和MySQL双写一致性实用解析

1、背景 先阐明一下Mysql和Redis的关系&#xff1a;Mysql是数据库&#xff0c;用来持久化数据&#xff0c;一定程度上保证数据的可靠性&#xff1b;Redis是用来当缓存&#xff0c;用来提升数据访问的性能。 关于如何保证Mysql和Redis中的数据一致&#xff08;即缓存一致性问题…

C#excel导入dategridview并保存到数据库/dategridview增加一行或几行一键保存数据库

excel导入到dategridview显示并保存到数据库 dategridview增加一行或几行一键保存数据库 ExcelHelper类(这个要导入NPOI包) using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using Syste…