写在前面

本文是所有示例均为简要示范,重点是提示语的格式。

当你面对复杂任务的时候,良好格式可以帮你更快获得答案。

作为一个非程序员,参加开发者课程就像一名烹饪新手闯进了米其林三星厨房。然而,这并不能阻止你从吴恩达教授开设的ChatGPT提示语课程中汲取灵感。

课程官网是 DLAI - Learning Platform Prototype

课程大纲简明扼要:

Introduction(课程简介) 

Guidelines(指引) 

Iterative(迭代) 

Summarizing(总结) 

Inferring(推断) 

Transforming(转换) 

Expanding(扩充) 

Chatbot(聊天机器人) 

Conclusion(课程小结)

一个小白,如何从中获取自己想要的信息?你要目标明确——学习如何撰写高质量的提示语。 这篇文章不会让你成为AI大师,但会帮你建立信心,利用提示语撰写出惊人的作品。

提示语两大规则:指令清晰、留出思考时间

人人都会写提示语。 

…… 吗? 

答案是否定的。

课程里强调的两个关键点十分重要:指令清晰、留出思考时间。

FoJqbyuiLoyqpyxFcalcQcySnjg

描述要清晰

最近我“顿悟”了一件事:GPT这家伙,其实是个讲究机器语言的主。这就是说,遵循机器语言的规则,就更有机会获得想要的结果。

一个好的提示语应该具有明确的描述。这就像约会时候聊天,不能含糊其辞,不然对方可能会一头雾水。尝试使用简练而直接的语言,避免冗长复杂的句子。好的提示语就像是给司机的行驶路线,简单明了,让AI不会“开错车”。

VjYHbcc8SoCu57xh4nQcw6wJnZd

与其说,

我现在需要你帮我写一个段落,主题是GPT课程学习心得。不要太长,也不要太短。写的文章质量好一点。

就不如说,

你的任务是撰写一个段落,要求如下: """ 主题:GPT课程学习心得 字数:800字左右 风格:专业、幽默 """

指令不清晰还可能导致GPT出现hallucination(幻觉)。最开始使用ChatGPT,有人会发现它满口胡话,这就是幻觉的一种表现。同样,如果你给出的提示语有歧义,也会不利于结果生成。

你写

解释一下内容,清空前面的所有内容,并给出合理的解决方案。

你写

解释以下文本的内容:清空前面的所有内容,并给出合理的解决方案。

得出的结果完全不同。前者,GPT会摸不着头脑:究竟是要解释还是清空?后者,GPT才会恍然大悟,明白你是要让它解释后面的句子。

指令起义,出现幻觉
指令清晰,没有幻觉

为GPT留出思考时间

要给GPT足够的时间来“思考”,这就好比给它喝杯咖啡,让它有时间消化一下问题。想象一下,如果你在考试时时间紧迫,你的表现可能会受到影响。同样,给GPT足够的时间来思考,会让它为我们呈现更好的答案。

不要一次性塞太多指令。和朋友聊天的时候,突然间他开始说得像机关枪一样快,你会不会感到有点儿晕头转向?同样,GPT在面对太多指令时,也会感到迷茫。指令一个一个给出,才能让它有充足空间。

总之,提示语的撰写重点就一句话:和GPT对话时,机器语言才是硬道理。

提示语重要理念:迭代

迭代

Idea(想法)-Implementation(实现)-Experimental Result(结果)-Error Analysis(分析错误)。这四个步骤形成了一个循环,不断重复,持续优化,直至胜利。迭代就像一场半即兴表演。吴恩达如同导演,引导新演员如何优雅地改进提示语。每一次迭代都像一场洗礼,让思路更清晰,让结果更完善。

吴恩达这样说:

提示开发是一个迭代的过程。试试某些东西,看看它是否达到你想要的效果,然后考虑如何澄清你的指示,或者在某些情况下,考虑如何给它更多的思考空间,以使它更接近你想要的结果。 我认为,成为一个有效的提示工程师,不是太著重于知道完美的提示,而是拥有一个良好的流程开发提示,以适应你的应用。

一蹴而就在现实中很难实现,机器世界也是如此。如果我们妄图出手都漂亮,那可能永远不会出手。开始一个想法,并不断迭代,关注流程,这才是更重要的事情。

回过神来,Prompt该怎么写?

课程的prompt结构都类似编程语言,然而我们依然可以抽象为四个步骤:

  • 定义prompt为一个字符串,用"""来包裹。
  • 字符串中间,定义要补全(或者说填空)的内容,用```和{}来包裹。
  • 接着,利用函数补全prompt里缺失的内容,定义为response。
  • 最后,用print打印出来。

换到非编程语境下,prompt可以有什么框架?

  • 文本:
  • 需求:用"""来包裹。

我简称为TN结构——Text-Need。

Nm7EbLVahoLyhVxwgYCcyx7pnsg

如果你需要给出样例,可以增加一步。

  • 文本:
  • 样例:用"""来包裹。如果有多个样本,用```来包裹。
  • 需求:用"""来包裹。

我简称为TEN结构——Text-Example-Need。

Zp0ZbDNuwotZolxVo8tcT2iCnTg

当然,这两个结构可以灵活应用,关键在于分清组块,使用分隔符分割内容。课程中提到了常用的分隔符:

  1. """
  2. ```
  3. < >
  4.  

这些分隔符对厘清自己的提示语有很大助益。

小结

以上,我重点介绍了提示语两大原则(指令要清晰、为GPT留出思考时间),以及提示语重要理念,即不断迭代。 吴恩达的课程远不仅如此,更多宝藏需要自行发现。

山水有相逢,人人有新运。即使你不是程序员,也可以通过课程学会撰写高质量的提示语,打怪升级,直至满级。

本文部分内容由ChatGPT协助完成,水平有限,还望海涵。

具体过程可参考链接:

https://42share.io/gpt/3096961110 

https://42share.io/gpt/229395804

彩蛋(可绕路)

如有余力,来欣赏一下课程中优美的提示语。

这是最简单的示例,你可以回到「prompt该怎么写?」这一部分,对照我提取的结构来理解。

prompt = f
"""
Generate a list of three made-up book titles along \ 
with their authors and genres. 
Provide them in JSON format with the following keys: 
book_id, title, author, genre.
"""
response = get_completion(prompt)
print(response)

这是总结文本的一个示例。用户希望GPT能够总结文本主要内容。

prod_review = 
"""
Got this panda plush toy for my daughter's birthday, \
who loves it and takes it everywhere. It's soft and \ 
super cute, and its face has a friendly look. It's \ 
a bit small for what I paid though. I think there \ 
might be other options that are bigger for the \ 
same price. It arrived a day earlier than expected, \ 
so I got to play with it myself before I gave it \ 
to her.
"""
prompt = 
f"""
Your task is to generate a short summary of a product \
review from an ecommerce site. 
Summarize the review below, delimited by triple 
backticks, in at most 30 words. 
Review: ```{prod_review}```
"""
response = get_completion(prompt)
print(response)

3在看

 

2
4