文章主题:
自ChatGPT横空出世以来,各行各业的工作者从一开始的完全怀疑,到将信将疑,再到热烈拥抱和强烈抵制的冰火两重天,我们在新闻中见证了好莱坞编剧大罢工,见证了压力、狂热和久违的“ALL In”像一颗兴奋的火种在国内各大公司迅速蔓延, 百团大战、千播大战之后还没过多少年头,万模大战就此拉开序幕。历史就是这样,不会简单重复,但总是惊人相似。
大模型,一定会经历大浪淘沙的过程,但无论谁胜出,都不会影响大局,我们真正进入了这个全新时代。人类社会发展规律就是先进生产力不断取代落后生产力的过程,如何利用大模型的能力,提升自己的生产力才是关键。而利用大模型,有些人觉得回答很惊艳,还有一部分人觉得just so so,其实关键在于会提问,也就是Prompt,ChatGPT 效果好不好完全取决于你的 Prompt。就像有人说的,提出正确的问题,往往等于解决了问题的大半。所以提问其实是一个技术活儿,这点无论是日常沟通,解决问题,还是利用搜索引擎,都是相通的。
本文写作的主要目的是简单介绍下 Prompt,方便大家更好地用 Prompt 和 ChatGPT进行交互,笔者也会给出一些不同任务类型的案例供大家参考。
Prompt和Prompt engineering
Prompt是指在使用ChatGPT这样的语言模型时,向模型提供的输入文本。它是一种用于引导和指导模型生成输出的文本片段或问题描述。目前大部分人使用ChatGPT用的都是简单的prompt,基本上没什么需要特别注意的东西,就像在使用搜索引擎一样。可是,随着使用深度不断提高,需求变得更加复杂,很可能要经历多次询问才能得到想要的结果。
就像我们通过提问的艺术来解决问题一样,Prompt的设计在很大程度上可以影响模型生成的结果和行为。得益于ChatGPT 强大的 In-Context 学习能力,通过合理构建Prompt,可以对模型的输出进行约束、引导模型关注特定的信息或任务,并提高对话的质量和准确性,也就是Prompt engineering。在对话生成任务中,我们可以提供对话的上下文信息、角色设定、目标或指令等,帮助模型更好地理解用户意图,生成更相关和连贯的回复。
Prompt有几个设计原则,如下:
● 清晰,切忌复杂或歧义,如果有术语,应定义清楚。
● 具体,描述语言应尽量具体,不要抽象和模棱两可。
● 聚焦,如果想要解决具体问题,避免太泛或开放。
● 简洁,避免不必要的描述。
● 相关,主要指主题相关,而且是整个对话期间,不要东一瓢西一瓤。所以,针对这个的最佳实践,就是每个对话只讨论特定的主题,如果需要问一个新主题,最好新开一个对话。
一个通用的prompt,可以包含角色 + 任务 + 指令。角色需要精确,指导模型在生成文本时扮演的角色;任务需要明确而简洁,指明所需生成的内容;指令需要明确,指导模型在生成文本时遵循的要求。也就是告诉ChatGPT,你是谁?要做什么?要做成什么样?
下文我们来看看通过设计良好的Prompt,ChatGPT到底能帮我们做哪些事情。
01
文本分类
文本分类可以用在很多方面,比如很多公司都在做的产品舆情监测、媒体监测、新闻分类、客户反馈分类支持、文件归档等。借助ChatGPT强大的理解能力,给定一段待分类文本,再结合具体的Prompt,能够满足我们的个性化要求,如图。通过开发程序,调用ChatGPT的API,就能够实现批量文本分类,满足实际工程需求。
上面例子中,如果我们不给ChatGPT指定“只需回答分类即可”的要求,它就会输出额外的解释。所以,更通用的做法是,在Prompt中增加“不要给解释。”这样的指令,能够实现简洁输出。
02
文本摘要
文本摘要尤其适合需要和大量长文打交道的场景,可以用于快速了解论文、文档的核心观点和结论、快速获取新闻关键信息等。
在进行文本摘要的时候,我们尝尝使用类似“总结下述内容”等Prompt,但这样的简单指令有时并不能实实现我们想要的精炼效果。可以通过指令对输出进行要求,比如需要生成多长、只关注某方面的信息等,比如“三句话总结下述内容”、“三句话总结下述内容,只关注数字人”等等。
当然,目前ChatGPT也有其局限性,暂时不支持文档上传、超长段文字处理,未来的新版Office办公套件可能会成为真正的办公神器。
03
角色扮演
你可以通过指令让ChatGPT充当历史、现实生活、电影、书籍等任何东西中的角色。当然,常用的其实还是让ChatGPT扮演行业专家,从而让ChatGPT从这个角色的角度来分析我们的问题,可以使得回答更专业,从而避免过于宽泛。
假设我们想让ChatGPT帮我们生成一份保密协议,以下示例分别展示了普通询问和增加角色扮演的询问:
可以看到,增加了角色扮演指示后,生成的内容更具备专业性,相比前面的普通询问增加了甲乙方信息和末尾签字栏(截图未给出),几乎可以拿来即用。专家角色可以帮助ChatGPT指定场景,清晰问题范围,以及补充问题所需的背景信息,在询问专业性较强的问题时,可以尽量采用此种方式。当然,以下几种Prompt在效果上是等同的,如“你现在是xxx”、“请你扮演xxx”、“假如你是xxx”、“请以xxx的角度/身份/语气”等。
04
充当终端/
语言解释器
在没有实际的环境时,让ChatGPT充当终端或者语言解释器,可以做一些学习和实验。下图是一个充当Linux终端的例子:
再来看一个ChatGPT充当Python解释器的例子:
05
定义输出格式并转换为文件
我们的测试用例通常是以xmind形式编写,但ChatGPT无法生成文件,怎么实现文本内容到xmind形式的转换呢?其实可以利用Prompt,将ChatGPT的输出定义为markdown形式,如下:
将代码块中的内容保存到.md文件,随后就可以导入xmind,形成我们常用的测试用例,如下。
当然,除了markdown,ChatGPT还能以表格形式输出,只要添加“使用表格形式呈现”指令即可。
06
自定义ChatGPT对话模式
大家如果用过BingChat,可以看到有三种对话模式:
ChatGPT并没有这样的选项,那是否有方法可以自定义呢?答案是使用Temperature参数。方法很简单,直接在你的指令末尾输入:Temperature=[数字](这个数字介于0-2之间),你就能体验到一个从严肃冷静、到平衡稳定、到脑洞大开的ChatGPT了,如下:
可以看到,当温度值为0时,ChatGPT倾向于最确定的答案,当提高温度值后,就出现了多样性。
07
ChatGPT调教
基于 AI 的思维链技术,我们可以通过不断的反馈及新增指令,对 AI 进行训练,通过引导,帮助我们获得更具体、更深度、更有价值的回答。当然,在追问的过程中,一定要明确对象,否则达不到效果,另外在ChatGPT回答过程中,我们也可以输入好或者不好的反馈,来校正之后的输出。
07
Prompt逆向工程
以上案例都是从自身角度直接构造Prompt,那我们有没有办法让ChatGPT直接给我们生成一份Prompt,供后续使用呢?我们知道,在软件工程中,逆向工程就是从结果反推过程,比如拿着.class文件、apk包去反编译为Java代码,那是否能尝试下让ChatGPT自己分析结果从而给出可以生成这个结果的Prompt?我们来看以下例子:
可以看到,ChatGPT生成了一段Prompt,接下来我们新开一个会话,测试下这段Prompt:
生成的内容还可以,当然,这个Prompt不一定完全符合我们的预设目标,可以在生成初版Prompt后时给予多轮调教,使之渐趋完善,甚至成为更通用的商品生成或者新闻生成Prompt。
总结
ChatGPT能够用于工作、学习、生活的场合实在太多,本文不再赘述它在我们日常工作中的很多使用场景,比如debug、代码生成和代码优化、语言翻译、文章润色和纠错等等,这些场景大家可以自行探索。希望通过本文对Prompt的的介绍,读者可以更好地理解如何通过优化Prompt,更好地向ChatGPT提问,从而获得更准确、有用的回答,使得ChatGPT真正成为我们得力的AI助手。
来源:微信公众号:360质量效能
出处
:https://mp.weixin.qq.com/s/-UbnRcbeReayTUK4wbFMsQ
AI时代,掌握AI大模型第一手资讯!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
扫码右边公众号,驾驭AI生产力!