暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何提问ChatGPT挖掘其最大能力?

畅谈Fintech 2023-02-13
477

      上一篇我们聊了一下ChatGPT的前世今生从GPT-1、GPT-2、GPT-3、InstructGPT,阐述了它为何如此强大、惊艳!人们从中看到了人工智能和语言本体之间的真正接口,ChatGPT会成为未来人机交互的一个新入口!
      最近关于ChatGPT各种有的没的玩法都被网友们发掘出来了,这次我们来聊一下怎么样高效提问ChatGPT,以发挥其最大的能力!



一、爆红的“Prompt Engineer提示工程师”

      网上一位叫Riley Goodside的小哥,凭着最近ChatGPT的火爆,疯狂涨粉1w+,并且被估值73亿美元的硅谷独角兽Scale AI聘请为「提示工程师」(Prompt Engineer),这份offer年薪210W!

      他的新老板、Scale AI创始人兼CEO发文欢迎他的加入,并称提示工程师这个岗位还是业内首次开设,引发了大量关注。这位CEO认为,AI大模型可以看成一种新型计算机,所以需要一种新型程序员去给它编程。


       网上可以查到的是这家公司平均年薪13.7W美金(约95万人民币)。比去年美国机器学习工程师的整体平均年薪11.2万美元还要高出22%。




二、Prompt Engineer到底是干啥的?

1、什么是prompt?
      提示(Prompt),最早是对预训练模型做微调的一种新兴方法,提示学习曾被誉为“NLP的第四范式”。这种方法能以很小的代价,让AI完成新的、在训练过程中没学过的任务。
      传统的微调方法需要更新模型的参数,到了1750亿参数的GPT-3这种大模型,成本就太高了。GPT-3训练一次的费用是460万美元,总训练成本达到了1200万美元,不仅测试成本非常高,GPT技术对算力的要求也是目前AIGC技术领域最高的。提示学习的新方法完全不需要改动模型参数,只需把新任务写成提示模版给AI描述一下,再给AI看几个示例(不给也可以)。
以下来自GPT-3论文

这种方法不光节省成本,还能让训练好的AI大模型完成越来越多的新任务,后来逐渐流行起来。

2、什么是Prompt Engineering?

      简单来说就是找出合适的提示词,让AI发挥出最大潜力。

      2021年7月,AI画画效果一般也还没出圈的时候,有人发现只要在提示词中加上“虚幻引擎”画质就瞬间飙升,开启了第一波热潮。现在回头看过去,这可能就是最早的提示工程实践了。


      这样的技巧在纯语言模型中也适用,比如只要加一句“让我们一步一步地思考”,AI做题的正确率就从17%暴涨到78.7%。


      后来大家发现,像这样的技巧可不光AI研究者能用,不就是换着方式说话么,对于普通用户来说也不难。后来大家在玩AI绘画和ChatGPT时,不断修改提示词让AI给出满意的结果,本质上就是在做提示工程了。




三、Prompt Engineer是怎么练成的?

Riley Goodside可不光是随便给AI出个题那么简单。早在4月份就开始在网上发布玩GPT-3的心得:
  • 在别人都抢着玩AI绘画的时候,坚持研究GPT-3
  • 花大量时间在arXiv上看论文在推特上关注学者、AI工程师并参与专业讨论
  • 不要只发好玩的东西,把他们做成实用或者学术上有价值的演示
他会从论文中找方法,加上自己总结的技巧组合起来使用,让AI完成复杂的任务。比如让热播电视剧《Bachelor in Paradise》里的女主根据一系列条件判断男主是不是自己的菜……

他甚至发现了GPT-3的“提示注入攻击”方法,无论怎么提醒AI后面有陷阱,都能让AI无视之前的命令,把本来应该翻译成法语的句子改成“哈哈,被耍了”。



目前为止他最火的一个作品是让ChatGPT扮演推特员工,在面对马斯克审查时写一份周报。经过好面哥一轮一轮的提示,最终AI不仅给出了工作内容总结还把代码也配好了,获得大量转评赞。





四、如何提问ChatGPT挖掘其最大能力?

如果你想要通过 ChatGPT 获取到有用信息或完成特定任务, 发挥 ChatGPT 的最大能力,不仅仅要靠它的 In-Context 能力,Prompt 也应该仔细设计,或者说尽量贴近训练时的样子。换句话说,它是遇强则强,遇弱则弱,遇idiot则idiot!

让我们来看看一些给出的Prompt建议。

1、Prompt原则

设计原则,主要包含以下5个:

  • 使用自然语言

    Use natural language: Write your prompt in a conversational, natural language style, avoiding technical jargon and abbreviations that may be unclear to the model.

    使用自然语言:以对话的自然语言风格编写提示,避免使用模型可能不清楚的技术术语和缩写。


  • 明确的目标开始

    Start with a clear goal: Clearly define what you want ChatGPT to do or produce, and make sure that your prompt aligns with that goal.

    从一个明确的目标开始:明确定义您希望 ChatGPT 做什么或产生什么,并确保您的提示与该目标一致。


  • 更具体

    Be specific: Be as specific as possible in your prompt, including any constraints or requirements that should be taken into consideration.

    具体:在您的提示中尽可能具体,包括应考虑的任何限制或要求。


  • 保持简洁

    Keep it short: Aim to create prompts that are concise and to-the-point, while still providing enough information for ChatGPT to generate high-quality outputs.

    保持简短:旨在创建简明扼要的提示,同时仍为 ChatGPT 提供足够的信息以生成高质量的输出。


  • 提供上下文背景信息

    Provide context: Provide relevant context and background information that can help ChatGPT understand the task and generate more accurate and relevant outputs.

    提供上下文:提供相关的上下文和背景信息,可以帮助 ChatGPT 理解任务并生成更准确和相关的输出。


2、Prompt步骤

包括以下步骤。
对话前:
  • 明确目的,并始终聚焦目的。
  • 使用清晰、具体、相关的语言,简洁地描述你的目的。
  • 避免使用开放式,或过于宽泛的 Prompt。
  • 查看和修改 Prompt。
对话中:
  • 鼓励 ChatGPT 扩展内容。
  • 注意对话中的语气和语言。
  • 注意对话的方向,适时做出调整。
  • 必要时可使用「角色扮演」(如「假设你是XXX」)帮助 ChatGPT理解它的角色。

对话后:
  • 回顾整通对话,检查是否有违反原则或失误的地方。
  • 注意不同 Prompt 下 ChatGPT 的反馈,了解其能力和局限。
  • 梳理 Prompt 并在必要时重新测试。
  • 如果问题没有得到解决,尝试使用更多不同种类的 Prompt 进行测试。

案例:给我们家猫起一个好名字
我家有一只猫咪,我想让ChatGPT给它起一个名字。这里我使用AI画图生成一张非常酷炫的猫。想了解画图的也可以在文末扫描我微信!


以下是我和ChatGPT的对话:
我想给我们猫起一个名字,没有任何限定词。
Round 1
输入:Suggest one name for a cat.
ChatGPT输出:Fluffy
这个名字不错!但是我想把我家的猫描述的更具体一点。我想具体描述猫我家猫的颜色,比如黑色。

Round 2
输入:Suggest one name for a black cat.
ChatGPT输出:Midnight
在我的提示(prompt)中添加一个简单的形容词会改变生成的完成。设计提示本质上就是你“编程”模型的方式。理解这一点很重要!
我想ChatGPT回复的这个名字好不够惊艳!太过一般,一般人也能取这样的名字。那么我打算给他一些具体的制定好的说明。看看能给我什么回复呢?

Round3:
输入:Suggest three names for a cat that is a superhero.
ChatGPT输出:
1. Captain Claw 2. Super Paws 3. Mighty Mews
我给了ChatGPT一些提示词,要求猫的名字是一个超级英雄!这样就会让我提供的prompt的指令更复杂一些。看到他回复的3个名字。这里我解释一下其中一个名字,其他大家可以google一下。
 Captain Claw

Captain Claw是一款游戏作品《虎胆神猫》里面的角色。主角纳撒尼尔· 约瑟夫·克劳船长是一位威震(动物)天下的海盗猫,已多次逃出美卡犬王国所设的法网。


这个回复已经相当不错了,但是这些名字对一些喜欢玩游戏的人来说非常通用,而且模型似乎没有接受我指令中的猫的部分。让我们看看能否让它提出一些更相关的建议。

这个时候我,打算在提示词中添加示例,示例可以帮助传达模式或细微差别。在许多情况下,向模型展示和告诉模型您想要什么是很有帮助的。我尝试以下包含示例的提示:

Round4:

输入:

Suggest three names for an animal that is a superhero.


Animal: Horse

Names: Super Stallion, Captain Colt, Mighty Mustang

Animal: Dog

Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot

Animal: Cat

Names:

ChartGPT输出:
Captain Sharpclaw, Agent Fluffball, The Incredible Feline
“虎克船长!我找了一张这款游戏里面的照片,是不是很Cool啊!
ChatGPT这个回复已经相当惊艳了。这里我的做法是:通过给定示例添加了自己的期望模式。这里的技巧是通过给定输入的输出示例有助于模型提供我正在寻找的名称类型。

好了,今天就聊到这里,感谢大家的阅读。
感谢本文的作者:qiusheng、ChatGPT


参考
1.https://twitter.com/alexandr_wang/status/1599971348717051904

2.https://twitter.com/nathanbenaich/status/1599974172721311744

3.https://twitter.com/launchhouse/status/1599880513690701824

4.https://platform.openai.com/docs/quickstart/add-some-examples








文章转载自畅谈Fintech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论