写在前面
本文是所有示例均为简要示范,重点是提示语的格式。
当你面对复杂任务的时候,良好格式可以帮你更快获得答案。
作为一个非程序员,参加开发者课程就像一名烹饪新手闯进了米其林三星厨房。然而,这并不能阻止你从吴恩达教授开设的ChatGPT提示语课程中汲取灵感。
课程官网是 DLAI - Learning Platform Prototype
课程大纲简明扼要:
Introduction(课程简介)
Guidelines(指引)
Iterative(迭代)
Summarizing(总结)
Inferring(推断)
Transforming(转换)
Expanding(扩充)
Chatbot(聊天机器人)
Conclusion(课程小结)
一个小白,如何从中获取自己想要的信息?你要目标明确——学习如何撰写高质量的提示语。 这篇文章不会让你成为AI大师,但会帮你建立信心,利用提示语撰写出惊人的作品。
提示语两大规则:指令清晰、留出思考时间
人人都会写提示语。
…… 吗?
答案是否定的。
课程里强调的两个关键点十分重要:指令清晰、留出思考时间。
描述要清晰
最近我“顿悟”了一件事:GPT这家伙,其实是个讲究机器语言的主。这就是说,遵循机器语言的规则,就更有机会获得想要的结果。
一个好的提示语应该具有明确的描述。这就像约会时候聊天,不能含糊其辞,不然对方可能会一头雾水。尝试使用简练而直接的语言,避免冗长复杂的句子。好的提示语就像是给司机的行驶路线,简单明了,让AI不会“开错车”。
与其说,
我现在需要你帮我写一个段落,主题是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。
如果你需要给出样例,可以增加一步。
- 文本:
- 样例:用"""来包裹。如果有多个样本,用```来包裹。
- 需求:用"""来包裹。
我简称为TEN结构——Text-Example-Need。
当然,这两个结构可以灵活应用,关键在于分清组块,使用分隔符分割内容。课程中提到了常用的分隔符:
- """
- ```
- < >
- :
这些分隔符对厘清自己的提示语有很大助益。
小结
以上,我重点介绍了提示语两大原则(指令要清晰、为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在看
