碎碎念

2023 年,最火的可能就是 openAI 了,其组织代表的产品 chatGTP,相信大家已经有所耳闻。不少同学已经开始着手使用,并截图晒出 ChatGPT 是多么得智能与神奇。而有的同学在使用之后觉得有点差强人意,指出顶多算是一个比较聪明的聊天机器人而已。

其实,ChatGPT 的难点,在于 Prompt(提示词)的编写。从 ChatGPT 发布之后,如何写好 Prompt 已经成为了一个分水岭。熟练掌握 Prompt 编写的人,能够很快让 ChatGPT 理解需求,并很好的执行任务。

只要你的 Prompt 写的足够好,ChatGPT 可以帮你快速完成很多工作,包括写爬虫脚本、金融数据分析、文案润色与翻译等等,并且这些工作还做的比一般人出色。

总结

通过学习,我认为编写 prompt 是一个自我完善、优化的过程。最开始我们可以从简单开始,比如一句简单的指令。当我们得到 AI 的反馈后,我们可以逐步去调教优化迭代 prompt,直到 AI 给到我们满意的反馈为止。

在实际操作中我发现,只要通过一个好的迭代过程来不断改进 Prompt,那么就能够得到一个适合任务的 Prompt,最后 AI 会给到我期望的回答以完成任务。这个成就感是特别强烈的。

最终,一个优秀的 prompt,通常可以从这种通用性比较强的套路模板开始,然后逐步优化迭代:

指令:想要模型执行的特定任务或指令。

上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。

输入数据:用户输入的内容或问题。

输出指示:指定输出的类型或格式。

使用

编写 Prompt 的原则

  1. 编写清晰、具体的指令
  • 使用分隔符清晰地表示输入的不同部分,分隔符可以是:```,"",<>,"<tag></tag>"
  • 要求一个结构化的输出,可以是 Json、HTML 等格式
  • 要求模型检查是否满足条件
  • 提供少量示例
  1. 给模型时间去思考
  • 指定完成任务所需的步骤
  • 指导模型在下结论之前找出一个自己的解法

举例

编写清晰、具体的指令

1.使用分隔符清晰地表示输入的不同部分,分隔符可以是:```,"",<>,"<tag></tag>"

把用三个双引号括起来的文本总结成一句话:

"""
你应该提供尽可能清晰、具体的指示,以表达你希望模型执行的任务。这将引导模型朝向所需的输出,并降低收到无关或不正确响应的可能性。不要将写清晰的提示与写简短的提示混淆。在许多情况下,更长的提示可以为模型提供更多的清晰度和上下文信息,从而导致更详细和相关的输出。
"""

2.要求一个结构化的输出,可以是 Json、HTML 等格式

请生成包括书名、作者和类别的三本虚构书籍清单,并以 JSON 格式提供,其中包含以下键:book_id、title、author、genre。

3.要求模型检查是否满足条件

如果任务做出的假设不一定满足,我们可以告诉模型先检查这些假设,如果不满足,指示并停止执行。

您将获得由三个双引号括起来的文本。如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 - ...
第二步 - ...
...
第N步 - ... 如果文本中不包含一系列的指令,则直接写"未提供步骤"。
"""
今天阳光明媚,鸟儿在歌唱。这是一个去公园散步的美好日子。鲜花盛开,树枝在微风中轻轻摇曳。人们外出享受着这美好的天气,有些人在野餐,有些人在玩游戏或者在草地上放松。这是一个完美的日子,可以在户外度过并欣赏大自然的美景。
"""

4.要求模型检查是否满足条件

在要求模型执行实际任务之前,提供给它少量成功执行任务的示例,这样 AI 会变得更加聪明

你的任务是以一致的风格回答问题。

<孩子>: 耐心是什么

<祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。

<孩子>: 韧性是什么

给模型时间去思考

1.指定完成任务所需的步骤

当一句话不能准确描述出需求时,我们可以通过列举 1234 的方式来让 AI 逐步进行

步骤:
"""
1. 用一句话概括下面用<>括起来的文本。
2. 将摘要翻译成英语。
3. 在英语摘要中列出每个名称。
4. 输出一个 JSON 对象,其中包含以下键:English_summary,num_names。
"""
请使用以下格式输出:
"""
文本:<要总结的文本>
摘要:<摘要>
翻译:<摘要的翻译>
名称:<英语摘要中的名称列表>
输出 JSON:<带有 English_summary 和 num_names 的 JSON>
"""
文本:
<在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。他们一边唱着欢乐的歌,一边往上爬,然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。虽然略有些摔伤,但他们还是回到温馨的家中。尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。>

2.指导模型在下结论之前找出一个自己的解法

在判断正误时,可以让 AI 自己先思考解决方法,再进行对比,这样我们会得到更好的结果

请判断学生的解决方案是否正确,请通过如下步骤解决这个问题。
步骤:
"""
1. 首先,根据学生的解决方案格式自己先解决问题。
2. 然后将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在自己完成问题之前,请勿决定学生的解决方案是否正确。
"""
使用以下格式输出:
"""
问题:问题文本
学生的解决方案:学生的解决方案文本
你的解决方案和步骤:你的解决方案文本和步骤文本
学生的解决方案和你的解决方案是否相同:是或否
学生的成绩:正确或不正确
"""
问题:
"""
我正在建造一个太阳能发电站,需要帮助计算财务:
- 土地费用为每平方英尺100美元
- 我可以以每平方英尺250美元的价格购买太阳能电池板
- 我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元 请计算首年运营的总费用是多少?
"""
学生的解决方案:
"""
设x为发电站的大小,单位为平方英尺。
费用:
1. 土地费用:100x
2. 太阳能电池板费用:250x
3. 维护费用:100,000+100x 总费用:100x+250x+100,000+100x=450x+100,000
"""

参考资料:《ChatGPT Prompt Engineering for Developers》

文章来自 Yongchin'blog yongchin.xyz

Open AI ChatGPT Prompt 学习之基础篇的更多相关文章

  1. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  2. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  3. Python3学习(1)-基础篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...

  4. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  5. Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作

    目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...

  6. java学习笔记-基础篇

    Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...

  7. Java学习路线-基础篇!

    下面以黑马程序员Java学院的学习路线为例,进行一次史无前例的剖析,我会采取连载的形式,细致的讲解零基础的人怎么学习Java.先看下Java在基础阶段的知识点路线图. 内容多吗?不要被吓到了,知识点剖 ...

  8. 一步步学习javascript基础篇(8):细说事件

    终于学到事件了,不知道为何听到“事件”就有一种莫名的兴奋.可能是之前的那些知识点过于枯燥无味吧,说起事件感觉顿时高大上了.今天我们就来好好分析下这个高大上的东西. 可以说,如果没有事件我们的页面就只能 ...

  9. 一步步学习javascript基础篇(5):面向对象设计之对象继承(原型链继承)

    上一篇介绍了对象创建的几种基本方式,今天我们看分析下对象的继承. 一.原型链继承 1.通过设置prototype指向“父类”的实例来实现继承. function Obj1() { this.name1 ...

  10. 一步步学习javascript基础篇(4):面向对象设计之创建对象(工厂、原型和构造函数等模式)

    前面我们介绍了可以通过Object构造函数或对象字面量都可以用来创建单个对象,但是如果需要创建多个对象的话,显然很多冗余代码. 接下来介绍几种模式来创建对象.不过在此之前,我们还是先来了解下 type ...

随机推荐

  1. React的组件化/工程化开发(脚手架)

    脚手架: create-react-app 安装脚手架: $ npm i create-react-app -g 检查安装: $ npm create-react-app --version 新建项目 ...

  2. SaaS、PaaS、IaaS区别

    SaaS SaaS 越久,觉得它个庞大的领域 SaaS 收入的"长江流域". 传统软件像买房:什么都得自己买,价格昂贵,一般人用不起.SaaS模式就像是租赁预先装修好的共享公寓,拎 ...

  3. Spring Boot 中的 ApplicationRunner 和 CommandLineRunner

    前言 一般项目中的初始化操作,初次遇见,妙不可言.如果你还有哪些方式可用于初始化操作,欢迎在评论中分享出来~ ApplicationRunner 和 CommandLineRunner Spring ...

  4. Rancher 系列文章-RHEL7.8 离线有代理条件下安装单节点 Rancher

    一 基础信息 1.1 前提 本次安装的为 20220129 最新版:Rancher v2.6.3 VM 版本为 RHEL 7.8, 7.9 或 8.2, 8.3, 8.4(Rancher 官网要求) ...

  5. github打不开或者打开慢方法

    github最近打不开,很久之前遇到过,但是忘记怎么解决了,查找相关资料后,今天记录在此,以备不时之需. 记住3个关键网址 github网址查询:The world's leading softwar ...

  6. 部署:Mysql8和Mysql5.7部署同一服务器

    问题描述:将Mysql8.0.22和Mysql5.7.32部署在同一环境下 操作系统:centos7.8 数据库:Mysql8.0.22.Mysql5.7.32 版本 占用端口 实例名 数据文件 端口 ...

  7. [Go] 递归获取目录下的文件

    操作示例: ./scan /Document/dir 代码: // 定义递归文件树结构体 type treeList struct { Path string `json:"path&quo ...

  8. ECharts 环形饼图配置

    官网文档:https://echarts.apache.org/zh/option.html#series-pie.type 使用案例指导:https://echarts.apache.org/zh/ ...

  9. 深度学习02-03(图像处理、OpenCV实验案例)

    OpenCV实验案例 文章目录 OpenCV实验案例 一.OpenCV安装 1. OpenCV介绍 2. 安装 二.OpenCV基本操作 1. 图像读取与保存 1)读取.图像.保存图像 2. 图像色彩 ...

  10. Win Pycharm + Airtest + 夜神模拟器 实现APP自动化

    前言: 前面已经讲过了Airtest的简单配置与使用了,相信大家已经对于操作Airtest没有什么问题了(#^.^#) 但是在Airtest IDE中编写代码是有局限性的,而且不能封装Airtest的 ...