ChatGPT Prompt工程课程

ChatGPT Prompt工程课程

By Shawn Lee

之前学的prompt信息都比较碎,最近吴恩达联合OpenAI推出免费的面向开发者的ChatGPT Prompt工程课程,学习后很受用,简单总结记录。

ChatGPT Prompt工程课程:course

一、第一课:提示的准则

1.1 两大原则

1.1.1 原则1:写出清晰而具体的指示
  • 策略a.使用分隔符来清楚地表明输入的不同部分

|-定界符可以是任何东西,比如: “, """, < >, <tag> </tag>, :

prompt:

将以三个重音符为界的文字概括为一句话。 
成为一个单一的句子。
```
你应该通过以下方式表达你希望模型做什么  
提供尽可能清楚和具体的指示  
你应该通过提供尽可能清晰和具体的指令来表达你希望模型做什么。 
这将引导模型走向期望的输出、并减少收到不相关的或不正确的反应的机会。
不要把写一个清晰的提示和写一个简短的提示混为一谈。 
清晰的提示和写短的提示。 
在许多情况下,较长的提示为模型提供更清晰的和背景,这可能会导致更加详细和相关的产出。
```
  • 策略b.要求提供结构化的输出

|-JSON, HTML

prompt:

生成一个由三本书名组成的清单。
以及他们的作者和流派。
以JSON格式提供给他们,键值如下: 
book_id, title, author, genre。
  • 策略c.要求模型检查条件是否得到满足

|-如果任务中的假设不一定被满足,那么可以告诉模型先检查这些假设,如果不被满足指出后并在完成任务的过程中停止;|-可以考虑边缘情况,以及模型如何处理不满足的假设避免意外的错误或结果

prompt1:

你将得到由三个重音符划定的文本。
如果它包含一连串的指令、   
以下列格式重写这些指令:

第1步 - ...
第2步 - ...
...
第N步 - ...

如果文本中不包含一系列的指令、   
那么只需写上 "没有提供步骤"。

```泡茶很简单! 首先,你需要把一些水烧开。在此过程中,拿起一个杯子,把一个茶包放进去。一旦水足够热,就把它倒在茶包上。 让它坐一会儿,让茶叶浸泡。几分钟后,取出茶包。如果你喜欢,你可以加入一些糖或牛奶来调味。 就这样 你就可以享受到一杯美味的茶了。```

prompt2:

你将得到由三个重音符划定的文本。
如果它包含一连串的指令、  
以下列格式重写这些指令:

第1步 - ...
第2步 - ...
...
第N步 - ...

如果文本中不包含一系列的指令、  
那么只需写上 "没有提供步骤"。

```今天阳光明媚,鸟儿在歌唱。这是一个美丽的日子,可以去公园散步。花朵在绽放,树木在微风中轻轻摇曳。人们都出来走动,享受这美好的天气。 一些人正在野餐,而另一些人正在玩游戏,或只是在草地上放松。这是一个完美的日子,可以花时间在户外,欣赏大自然的美丽。```
  • 策略d.举个例子提示

|-在要求模型做你想让它做的实际任务之前提供成功执行的例子,让模型按照成功例子执行

prompt:

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

<孩子>:教我忍耐。

<祖父>: 雕刻出最深的河流从一个小泉眼里流出来;最宏伟的交响乐源自一个音符;最伟大的交响乐源于一个音符;最复杂的织锦也是从一根线开始的。

<孩子>:教会我如何坚韧不拔。
1.1.2 原则2:给模型以 “思考 “的时间

|-模型因急于得出不正确的结论而出现推理错误,应该尝试重新设计询问,要求在模型输出前有连续一系列相关推理,然后再由模型提供它的答案 |-如果给模型一个太过复杂的任务,它就无法在短时间内或用更少的词来完成,可能会编造一个不正确的猜测 |-这种情况在人身上也会发生,要求某人完成一道复杂的数学题,而没有时间先相出答案也可能会犯错,所以在这种情况下需要指示模型对一个问题进行更长时间的思考,当然这会花费更多算力

  • 策略a.指定完成一项任务所需的步骤 prompt:
你的任务是执行以下行动: 
1 - 总结以下以<>为界的文字。
2 - 将摘要翻译成法语。
3 - 在法语摘要中列出每个名字。
4 - 输出一个json对象,其中包含以下键:french_summary, num_names.

使用以下格式:
文本: <要总结的文本>。
摘要: <摘要>
翻译: <翻译摘要>
名称: <意大利语摘要中的名字列表>。
输出JSON:<带有意大利语摘要和姓名数量的JSON>。

文本: <在一个迷人的村庄里,杰克和吉尔兄妹开始了从山顶水井中取水的征程。当他们欢快地唱着歌爬上山顶时,不幸发生了--杰克被一块石头绊倒,翻下山去,吉尔也跟着摔了下来。 虽然受了点伤,但两人还是在安慰的怀抱中回到了家。尽管发生了意外,但他们的冒险精神仍然没有受到影响,他们继续愉快地探索着。>
  • 策略b.在急于得出结论之前,指导模型自己找出解决方案

|-指示模型在急于得出结论之前找出自己的解决方案,如果我们需要得到更好的结果可以指示模型得出结论之前让模型推理它的解决方案,给模型想法与时间,并且说这个答案是否正确,就像一个人一样

prompt:

你的任务是确定该学生的解决方案是否正确。
要解决这个问题,请做以下工作:
- 首先,找出你自己的解决方案。
- 然后将你的方案与学生的方案进行比较  
并评估学生的解决方案是否正确。
在你自己做完这个问题之前,不要决定学生的解决方案是否正确。

使用以下格式:
实际的解决方案:
<>
解决问题的步骤和你的解决方案在这里
<>
学生的解决方案是否与刚才计算的实际解决方案相同:
<>
是或不是
<>
学生的成绩:
<>
正确或不正确
<>

问题:
```
我正在建造一个太阳能发电装置,我需要帮助解决财务问题。
- 土地成本为100美元/平方英尺
- 我可以以250美元/平方英尺的价格购买太阳能电池板。
- 我谈好了一份维护合同,每年的费用为10万美元,另外每平方英尺增加10美元。
运营第一年的总成本是多少,与平方英尺的数量成正比。
``` 
学生的解决方案:
```
设x为安装的面积,单位为平方英尺。
成本:
1. 土地成本:100x
2. 太阳能电池板成本:250x
3. 维护费用:100,000 + 100x
总成本:100x + 250x + 100,000 + 100x = 450x + 100,000
```
实际解决方案:

1.2 模型的局限性

|-幻视(Hallucinations)问题
|-AI公司需要解决的问题
|-使用额外的策略来减少幻视

a.如果想让模型基于文本生成答案,可以先要求模型从文本中找到相关的引用,然后要求它使用这些引用来回答问题
b.可以将答案追溯到源文件上,往往可以减少幻视

第二课:工程迭代

提示开发是一个迭代的过程,多尝试一些prompt直到能满足要求,然后再考虑如何更清晰的描述prompt,并给模型更多空间来思考,以使它更接近与提供你想要的结果。 有效的prompt工程师的关键在:他并不在于知道完美的prompt,但了解如何用一个更好的过程来开发prompt。

第三课:文本总结

使用文本总结来总结或提取大文本信息里的核心内容,以帮助人们快速了解文本中的内容。

第四课:模型推理

模型将一个文本作为输入并进行某种分析,可以提取标签、提取名字、文本的情感分析等。

第五课:文本翻译

5.1 翻译功能

  • a.可以翻译成百种语言
  • b.可以识别文字是哪种语言
  • c.可以一次翻译成多种语言
  • d.可以告诉模型说话人与听话人之间的关系,比如以正式和非正式的形式翻译
  • e.模型可以当作通用翻译机,可以把多种不同语言翻译成固定的某些语言(需要多次调用API)

5.2 语气转换

模型可以产生不同的语气,比如给老板或家人写的邮件语气是不同的

5.3 拼写检查/语法检查

第六课:文本扩写

|-扩写是将一篇较短的文本进行扩写的工作,如一套指示或一个主题列表让模型生成较长的文本;这方便有很好的用途,把模型作为头脑风暴的伙伴。

  • a.根据客户的评论并分析情感信息后回复一封定制邮件
  • c.Temperature的分析,该参数越高模型的输出更加随机,默认:0

第7课:聊天机器人

|-模型可以构建一个自定义的聊天机器人,可以扮演一个AI客户服务代理或者餐馆的AI接单员。