Prompt 用法大全!让 ChatGPT 更智能的六种策略(中)

news2024/11/19 16:35:14

如果遵循以下六种策略来构建 Prompt 提示词,在和 ChatGPT 对话中我们将获得更好、更符合我们要求的回答。

e22916764811659e7b8f5bfe5a6661e2.png

这些策略,后几种更适合在编程调用 ChatGPT API 时使用,不过也适用直接和 ChatGPT 对话,让它更好的理解我们的意图。

1、写清楚说明,

2、提供参考文本,

3、将复杂任务拆分为更简单的子任务,

4、给 ChatGPT 时间“思考”,

5、使用外部工具,

6、系统地测试更改。

点燃创作灵感:Prompt 实践指南揭秘!让 ChatGPT 更智能的六种策略(上)解释和举例了前两个策略和具体操作方法。‍‍‍‍‍‍‍‍‍

三、将复杂任务拆分为更简单的子任务‍‍‍‍

本策略适用于调用 API ,编写自己的特定类型的定制智能助手使用。

调用 API 示范如下‍‍‍

import openai


openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

主要输入是消息参数。消息必须是一组消息对象,其中每个对象都有一个角色(“系统”、“用户”或“助手”)和内容。对话可以短到一条消息,也可以来回多次。

通常,对话首先使用系统消息进行格式化,然后是交替的用户和助手消息。

系统消息有助于设置助手(即ChatGPT)的行为。例如,您可以修改助手的个性或提供有关它在整个对话过程中应如何表现的具体说明。但是请注意,系统消息是可选的,没有系统消息的模型行为可能类似于使用通用消息,例如“你是一个有帮助的助手”。

用户消息提供请求或评论以供助手响应。助手消息存储以前的助手响应,但也可以由开发人员编写以提供所需行为的示例。

当用户说明引用之前的消息时,包括对话历史记录很重要。比如:用户的最后一个问题是“它在哪里播放?” 仅在有关 2020 年世界职业棒球大赛的先前消息的上下文中才有意义。由于模型对过去的请求没有记忆,因此所有相关信息都必须作为每个请求中对话历史记录的一部分提供,因此,助手消息可以存放之前对话的响应回答。‍‍‍

理解了调用API 的消息格式和约定,我们来看后续的操作策略。

3.1 使用意图分类(即扮演特定类型的AI助手)来识别与用户查询最相关的指令

对于需要大量独立指令集来处理不同情况的任务,首先对查询类型进行分类并使用该分类来确定需要哪些指令可能是有益的。

可以通过定义与处理给定类别中的任务相关的固定类别和硬编码指令来实现。这个过程也可以递归地应用于将任务分解为一系列阶段。

这种方法的优点是每个查询将仅包含执行任务下一阶段所需的指令,与使用单个查询执行整个任务相比,这可以降低错误率。

例如,假设对于客户服务应用程序,可以将查询分类如下:

系统您将收到客户服务查询。将每个查询分为主要类别和次要类别。以 json 格式提供带有键的输出:primary 和 secondary。主要类别:计费、技术支持、账户管理或一般查询。计费次要类别: - 取消订阅或升级 - 添加付款方式 - 收费说明 - 对收费提出异议 技术支持次要类别: - 故障排除 - 设备兼容性 - 软件更新 账户管理次要类别: - 密码重置 - 更新个人信息 - 关闭帐户 -帐户安全 一般查询二级类别: - 产品信息 - 定价 - 反馈 - 与人交谈
用户我需要让我的互联网重新工作。

e7f5f89441b9352b504105d5197ce56f.png

基于这类技术支持客户查询的分类,可以向 ChatGPT 提供一组更具体的指令来处理后续步骤。例如,假设客户需要“故障排除”方面的帮助。

系统您将收到需要在技术支持环境中进行故障排除的客户服务查询。通过以下方式帮助用户: - 要求他们检查所有进出路由器的电缆是否已连接。请注意,电缆随时间松动是很常见的。- 如果所有电缆都已连接但问题仍然存在,请询问他们使用的是哪种路由器型号 - 现在您将建议他们如何重新启动他们的设备: -- 如果型号是 MTD-327J,建议他们按下红色按钮并按住它 5 秒钟,然后等待 5 分钟,然后再测试连接。-- 如果型号是 MTD-327S,建议他们拔下并重新插入,然后等待 5 分钟,然后再测试连接。- 如果客户的问题在重启设备并等待 5 分钟后仍然存在,请通过输出 {"IT support requested"} 将他们连接到 IT 支持。
用户我需要让我的互联网重新工作。

4ffcad465c5ff6a000f3aee00dffde5c.png

3.2 对于需要很长对话的对话应用,总结或过滤之前的对话

由于 ChatGPT 具有固定的上下文长度,因此整个对话都包含在上下文窗口中的用户和助手之间的对话不能无限期地继续。

这个问题有多种解决方法,其中之一是总结对话中的先前回合。一旦输入的大小达到预定的阈值长度,这可能会触发一个查询,该查询总结了部分对话,并且先前对话的摘要可以作为系统消息的一部分包含在内。或者,可以在整个对话过程中在后台异步总结先前的对话。

另一种解决方案是动态选择与当前查询最相关的对话的先前部分。需要参考后面的例子:“5.1 使用基于嵌入的搜索来实现高效的知识检索”。‍

3.3 分段总结长文档并递归构建完整摘要

由于 ChatGPT 具有固定的上下文长度,上下文长度减去单个查询中生成的摘要长度是能处理的最大文本范围。

要总结一个很长的文档,比如一本书,我们可以使用一系列查询来总结文档的每个部分。

节摘要可以被连接和总结生成摘要的摘要。这个过程可以递归地进行,直到总结了整个文档。如果有必要使用有关前面部分的信息来理解后面的部分,我们可以在书中任何给定点之前包括文本的连续摘要,同时总结该点的内容。

四、给 GPT 时间“思考”

4.1 在匆忙下结论之前,指示模型自己制定解决方案

当我们明确指示模型在得出结论之前根据第一原则进行推理时,我们会得到更好的结果。例如,假设我们想要一个模型来评估学生对数学问题的解决方案。解决这个问题的最明显方法是简单地询问模型学生的解决方案是否正确。

系统判断学生的答案是否正确。

用户

问题陈述:我正在建造一个太阳能装置,我需要帮助来计算财务。- 土地成本 100 美元/平方英尺 - 我可以以 250 美元/平方英尺的价格购买太阳能电池板 - 我协商了一份维护合同,每年将花费我 10 万美元,外加 10 美元/平方英尺 的总成本是多少第一年的运营作为平方英尺数的函数。学生的解答:令 x 为以平方英尺为单位的安装尺寸。1.土地成本:100x 2.太阳能电池板成本:250x 3.维护成本:100,000 + 100x 总成本:100x + 250x + 100,000 + 100x = 450x + 100,000
助手这位同学的答案是正确的。

但是这位同学的解法其实是不正确的!我们可以通过提示模型首先生成自己的解决方案来让模型纠正这种错误回答。

系统首先想出你自己解决问题的方法。然后将您的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在您自己完成问题之前,不要判断学生的解决方案是否正确。
用户问题陈述:我正在建造一个太阳能装置,我需要帮助来计算财务。- 土地成本 100 美元/平方英尺 - 我可以以 250 美元/平方英尺的价格购买太阳能电池板 - 我协商了一份维护合同,每年将花费我 10 万美元,外加 10 美元/平方英尺 的总成本是多少第一年的运营作为平方英尺数的函数。学生的解答:令 x 为以平方英尺为单位的安装尺寸。1.土地成本:100x 2.太阳能电池板成本:250x 3.维护成本:100,000 + 100x 总成本:100x + 250x + 100,000 + 100x = 450x + 100,000
助手设 x 是以平方英尺为单位的安装尺寸。1.土地成本:100x 2.太阳能电池板成本:250x 3.维护成本:100,000 + 10x 总成本:100x + 250x + 100,000 + 10x = 360x + 100,000 学生的答案是错误的。他们在维护成本计算中犯了一个错误,使用 100x 而不是 10x。第一年运营的正确总成本是 360x + 100,000。

2a392b3df78d53892a3b9d4637c38f63.png

4.2 策略:使用内心独白或一系列查询来隐藏模型的推理过程

前面的策略表明,模型在回答特定问题之前详细推理问题有时很重要。对于某些应用程序,模型用于得出最终答案的推理过程不适合与用户共享。例如,在辅导应用程序中,我们可能希望鼓励学生自己找出答案,但模型对学生答案的推理过程可能会向学生揭示答案。

内心独白是一种可以用来解决这种情况的策略。内心独白的想法是指示模型将本应对用户隐藏的输出部分放入结构化格式中,以便于解析它们。然后在将输出呈现给用户之前,对输出进行解析并有选择的部分输出。

系统按照以下步骤回答用户查询。第 1 步 - 首先找出您自己的问题解决方案。不要依赖学生的解决方案,因为它可能不正确。用三引号 (""") 将此步骤的所有作业括起来。第 2 步 - 将您的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。将此步骤的所有作业用三引号 ("") 括起来”)。第 3 步 - 如果学生犯了错误,请确定您可以在不给出答案的情况下给学生什么提示。将此步骤的所有工作用三重引号 (""") 括起来。第 4 步 - 如果学生犯了错误,请向学生提供上一步的提示(在三重引号之外)。而不是写“第 4 步 - ...”写“提示:”。
用户问题陈述:<插入问题陈述> 学生解决方案:<插入学生解决方案>

或者,也可以通过一系列查询来实现,除最后一个之外的所有查询都对最终用户隐藏。

系列查询的步骤如下:首先,我们可以让模型自己解决问题。由于此初始查询不需要学生的解决方案,因此可以省略系统设置。

0357f54158e4090772e78ac2e83954a0.png

接下来,让模型使用所有可用信息来评估学生解决方案的正确性。

系统将您的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。
用户问题陈述:"""<插入问题陈述>""" 您的解决方案:"""<插入模型生成的解决方案>""" 学生的解决方案:"""<插入学生的解决方案>"""

3bfdceaff70fd414bec43c24baf27c63.png

最后,让模型使用自己的分析来构建一个乐于助人导师角色的回复。

系统你是数学老师。如果学生犯了错误,请以不透露答案的方式向学生提供提示。如果学生没有犯错,只需给他们一个鼓励的评论。
学生问题陈述:"""<插入问题陈述>""" 您的解决方案:"""<插入模型生成的解决方案>""" 学生的解决方案:"""<插入学生的解决方案>""" 分析:"""<插入模型从上一步生成的分析 >"""

97a6bab309b1e6d5c9a40ac565e0447f.png

4.3 询问模型是否遗漏了之前传递的任何内容

假设我们正在使用一个模型来列出与特定问题相关的来源的摘录。在列出每个摘录后,模型需要确定是否应该开始编写另一个摘录或是否应该停止。如果源文档很大,模型通常会过早停止并且无法列出所有相关摘录。在这种情况下,通常使用后续查询提示模型来查找它在先前传递中遗漏的任何摘录。

系统您将获得一份由三重引号分隔的文件。你的任务是选择与以下问题相关的摘录:“人工智能历史上发生了哪些重大的范式转变。” 确保摘录包含解释它们所需的所有相关上下文——换句话说,不要提取缺少重要上下文的小片段。以 JSON 格式提供输出,如下所示:[{"excerpt": "..."}, ... {"excerpt": "..."}]
用户"""<在此处插入文档>"""
助手[{“摘录”:“模型在这里写了一个摘录”},... {“摘录”:“模型在这里写了另一个摘录”}]
用户有更多相关的摘录吗?注意不要重复摘录。还要确保摘录包含解释它们所需的所有相关上下文——换句话说,不要提取缺少重要上下文的小片段。

42a7acbe9948f4c600bc6bedacace549.png

下期预告:六种策略(下)


我写了一本小册子《AI 绘画零基础入门手册》,你可以学习如何使用 AI 绘图神器 Midjourney 来设计、绘画,并用它来为你赚钱。

看完全部内容,并且实践一遍,就可以上手做一个生成头像的 AI 变现项目。现在漫画头像,手机壁纸在小红书,闲鱼上都是很火的赚钱项目。

价格只需 19.9 元,买不了吃亏,买不了上当,并承诺无条件退款。

fe3d864e94db5e34f3d1aba68003e542.jpeg

点击上面图片,长按,选择“识别图中的二维码”,即可下单购买。

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

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

相关文章

8.DIY可视化-拖拽设计1天搞定主流小程序-小程序首页幻灯片显示

小程序首页幻灯片显示 本教程均在第一节中项目启动下操作 小程序首页幻灯片显示前言一、添加组件: 图片轮播公告图文菜单二. 绑定幻灯片数据接口三:首页绑定接口数据:1.绑定字段 四.导出源码,解压后,导入hbulider,运行查看效果1.导出源码:2.解压,导入hbuilder 五.运行查看效果对…

Ae:蒙版插值面板

Ae菜单&#xff1a;窗口/蒙版插值 Mask Interpolation 蒙版插值Mask Interpolation面板可用于自动创建蒙版路径 Mask Path属性的关键帧&#xff0c;从而实现更平滑逼真的路径动画。 至少选择 2 个连续的蒙版路径关键帧后&#xff0c;智能蒙版插值将基于面板上的选项设置创建中间…

Qt5.12.6配置Android Arm开发环境(Linux)

1.安装jdk 2.安装android studio 3.安装sdk 与ndk 设置代理 安装SDK工具 安装SDK Platform 安装QT 选择JDK 1.8安装路径,SDK与NDK路径 如出现Platform SDK或者Platform Build Tools未安装,点击Update Installed 配置成功后可看到ARMv7与AMD-v8a kits Qt Version也可看到ARM…

既然有了HTTP,为什么还要RPC?

文章目录 HTTP和RPC区别RPC&#xff08;Remote Procedure Call&#xff09;服务流行的RPC框架 HTTP服务Restful RPC接口和HTTP接口的区别与联系传输协议传输效率性能消耗负载均衡服务治理&#xff08;下游服务新增&#xff0c;重启&#xff0c;下线时如何不影响上游调用者&…

Java012——Java引用数据类型String的简单学习

回顾Java数据类型 本次要学习的是Java引用数据类型String 一、对String类简单说明 说明&#xff1a;String是Java中的一个类 二、String类的作用 作用&#xff1a;主要用来创建和操作字符串。 三、使用String类 3.1、创建字符串 注意&#xff1a; 1、字符串使用双引号&qu…

基于Springboot+vue+协同过滤+前后端分离+鲜花商城推荐系统(用户,多商户,管理员)+全套视频教程

基于Springbootvue协同过滤前后端分离鲜花商城推荐系统(用户,多商户,管理员)(毕业论文11000字以上,共33页,程序代码,MySQL数据库) 代码下载: 链接&#xff1a;https://pan.baidu.com/s/1mf2rsB_g1DutFEXH0bPCdA 提取码&#xff1a;8888 【运行环境】Idea JDK1.8 Maven MySQL…

【网络原理】TCP/IP协议五层模型

&#x1f94a;作者&#xff1a;一只爱打拳的程序猿&#xff0c;Java领域新星创作者&#xff0c;CSDN、阿里云社区优质创作者。 &#x1f93c;专栏收录于&#xff1a;计算机网络原理 本期讲解协议、OSI七层模型、TCP/IP五层模型、网络设备所在的分层、数据的封装和分佣。 目录 …

Linux基础内容(22)—— 信号

Linux基础内容&#xff08;21&#xff09;—— 进程消息队列和信号量_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130770830?spm1001.2014.3001.5501 目录 1.定义 1.介绍 2.解释 例子 操作系统信号 实现的大致思路 2.信号的产生方式 …

【C语言】计算含多种运算符的表达式

计算含多种运算符的表达式 引入运算符的优先级算术表达式的运算规则引例例题 引入 诸如下面这些表达式&#xff0c;它的计算过程&#xff0c;计算顺序是怎样的&#xff1f;计算结果为多少&#xff1f; 今天我们就一起来解决一下这个问题吧&#xff01; 运算符的优先级 解决…

6.数据结构期末复习之查找和排序1

概念 静态查找: 无插入和删除 动态查找: 边插入删除边查找静态和动态查找的实现方式 1.线性表: 静态查 2.树表(二叉排序树)动态查 3.散列表 静态动态都可以查找: 集合中查找满足条件的数据关键码 1.主关键码:可以表标识数据唯一性 2.次关键码: 不能标识查找效率: 比较次数决定的…

八、进程程序替换

文章目录 一、进程程序替换&#xff08;一&#xff09;概念&#xff08;二&#xff09;为什么程序替换&#xff08;三&#xff09;程序替换的原理&#xff08;四&#xff09;如何进行程序替换1. execl2. 引入进程创建——子进程执行程序替换&#xff0c;会不会影响父进程呢? &…

PDF 内容替换器软件工具 PDF Replacer Pro Crack

PDF 内容替换器软件工具 批量查找和替换 PDF 中的指定文本 PDF Replacer 是一款 Windows 软件程序&#xff0c;可在 PDF 文件中查找指定的单词或短语文本并替换为新文本&#xff0c;并保持 PDF 布局不变。 Windows 7/Win 8/Win 10 或更高版本&#xff08;32/64 位&#xff09; …

devart ADO.NET Data Providers 2023

ADO.NET Data Providers 2023 dotConnect 开发与数据相关的 .NET 应用程序的终极解决方案,具有 ORM 支持的快速灵活综合功能丰富的 ADO.NET 提供程序 ADO.NET 数据提供者 高性能 ADO.NET 数据提供程序 dotConnect 是一个增强的数据连接解决方​​案&#xff0c;它建立在 ADO.N…

为什么齐次线性方程组有非零解的充要条件是D=0

下面是对这两个定理的解释&#xff1a; 定理1&#xff1a;如果是齐次线性方程组&#xff08;方程个数未知量个数&#xff09;&#xff0c;且系数行列式D不等于0&#xff0c;则只有0解&#xff1b; 定理2&#xff1a;若齐次线性方程组&#xff08;方程个数未知量个数&#xff…

C语言---形参所导致的段错误

前言 今天刷B站&#xff0c;无意之间看到一个宣称90%人都会错的嵌入式面试题。感兴趣就看了一下。卡了十多分钟才想明白&#xff0c;只是一个小知识点&#xff0c;但还是分享一下。 题目 #include <stdio.h> #include <stdlib.h> #include <string.h>void g…

如何将bootloader和APP程序一次性烧录到单片机中

在做单片机的IAP升级时&#xff0c;通常需要两个程序&#xff0c;一个bootloader程序&#xff0c;一个app程序。首先将bootloader程序烧写到单片机中&#xff0c;然后通过串口将app程序写入到单片机内容&#xff0c;在平时学习和测试的时候这种方法没啥问题&#xff0c;但是如果…

K8S 生态周报| Ingress-NGINX v1.8 发布,升级前请先检查

“ 「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。 ” 大家好&#xff0c;我是张晋涛。 很抱歉&#xff0c;最近一段时间真的太忙了&#xff0c;写文章都断断续续的。主要在使用 Langchain 搭配 GPT-4 开发…

Nginx扩展篇之Location语法规则

1 Location语法规则 1.1 Location规则 语法规则&#xff1a; location [||*|^~] /uri/ {… } 首先匹配 &#xff0c;其次匹配^~,其次是按文件中顺序的正则匹配&#xff0c;最后是交给 /通用匹配。当有匹配成功时候&#xff0c;停止匹配&#xff0c;按当前匹配规则处理请求。 …

Nginx部署多个前端项目【Linux/Windows-详细操作】

需求:项目上线需要将前端的前台和后台部署在服务器上提供用户进行使用&#xff0c;部署在不同的服务器直接在服务器安装nginx即可。但是在内网安装还是有点麻烦&#xff0c;因为需要联网&#xff0c;如果是内网可以参考Linux安装Nginx并部署前端项目【内/外网-保姆级教程】_MXi…

将数组s中的每个元素的内容在原来的位置上重复n次numpy.char.multiply(s,n)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将数组s中的每个元素的内容 在原来的位置上重复n次 numpy.char.multiply(s,n) 下列代码最后输出的结果是&#xff1f; import numpy as np x np.array([I, have, 2, cats]) print(&qu…