在当今大模型技术迅猛发展的背景下,越来越多的人在工作与生活中开始接触并应用大模型。我们向问答大模型提出问题时,总是希望得到最满意的答案。然而,大模型的回答质量很大程度上取决于我们如何提问。要提高大模型回答的准确性,我们首先需要理解一个关键概念——提示词工程(Prompt Engineering)。
提示词工程就是研究如何构建和调整提示词,从而让大语言模型实现各种符合用户预期的任务的过程。为了使这些模型更准确地理解您的需求,您需要提供清晰的需求描述和相关的背景信息,并明确指出您希望模型完成的具体任务。这类似于与人交流,您可能需要调整您的表达方式,直到模型完全理解您的意图,并能够提供您期望的答案。
提示词工程包括以下关键步骤:
提示词技巧
让我们从一个简单的例子开始,来探讨提示词工程的实际应用:
提示词:请对我的同桌进行评价。
大模型输出:我无法完成这个任务,因为我没有关于您同桌的具体信息。如果您能提供一些具体的场景或例子,我将能够尝试给出回答。
对该问题修改后:
提示词:我的同桌家境富裕,但他在生活中非常低调和节俭,穿的衣服价格仅几十元,导致班上其他同学误以为他家境贫寒。请对我的同桌进行评价。请评价一下我的同桌。
大模型输出:你的同桌展现出了一种非常值得赞赏的生活态度和价值观。在当今社会,物质条件往往被用来衡量一个人的价值和社会地位,但你的同桌却能够超越这种肤浅的标准,选择低调和节俭的生活方式,这体现了他/她的谦逊与节俭以及成熟和独立思考能力。
从上述例子中,我们可以看到,为了使大模型能够按照我们的期望执行任务,作为用户,我们需要不断优化我们的提示词,以构建出有效的指令,从而使大模型能够产生我们期望的输出。现在,让我们来探讨一些构建有效提示词的技巧。
1、增加示例
在提示词中提供少量(通常几个或几十个)示例,也称为少样本提示(Few-Shot Prompting),以帮助模型更好地理解任务要求和期望输出。比如让大模型跟随我们所要求的规范、格式、概念、文法、语气进行输出;或者提供进一步推理的参考,比如让大模型学会数学运算或按照示例方式进行逻辑推理。
以下示例中,我们分别在提示词中增加示例和不增加示例,就会得到以下不同的答案。
提示词:
任务:请根据以下电商评论,判断其情感评价(正面、负面或中性)。
待分类评论:这款产品非常智能,但做工有点粗糙。
大模型输出:
情感评价:中性
提示词:
要求:请根据以下电商评论,判断其情感评价(正面、负面或中性)。
示例1:这款产品外观精美,使用简便。情感评价:正面
示例2:这款产品外观看起来很丑,但是用起来很顺手。情感评价:负面+正面
示例3:这款产品不好不坏。情感评价:中性
待分类评论:这款产品非常智能,但做工有点粗糙。
大模型输出:
情感评价:正面+负面
示例的质量和数量会直接影响回答的结果,增加示例时可选择具有代表性的示例,尽可能覆盖任务的各种角度和情境,尽量使用相似的格式和结构。
2、分配角色
赋予大模型一个具体的角色或身份,可以指定该角色的视角、语言风格、扮演的身份等,用来引导大模型在特定角色视角下生成回答。下面的例子中,让大模型来执行“菜品评价”的任务,是否分配角色会得到不同的回答。
提示词:
请对这道鱼香肉丝进行评价。
大模型输出:
这道鱼香肉丝的口味非常鲜美独特,给我留下了深刻的印象。
提示词:
你是一名美食鉴赏家,请对这道鱼香肉丝进行评价。
大模型输出:
这道鱼香肉丝在外观呈现、香气四溢、口感体验、味道层次以及创意与特色等方面都表现出色。它不仅保留了传统菜肴的精髓,还融入了新的元素和风味,使得这道菜品成为了一道既经典又新颖的美食。无论是家庭聚餐还是商务宴请,这道鱼香肉丝都能成为餐桌上的亮点,为宾主双方带来愉悦的用餐体验。
3、限定输出风格/格式
大语言模型非常善于撰写论文、文章等内容,不过如果我们仅仅简单地告诉大语言模型一些宽泛的提示,大语言模型有可能会生成枯燥、平淡、空洞的内容,这些内容往往与我们期望的结果有较大的出入。下面的例子中,我们通过限定大模型的输出风格,可以得到更符合我们要求的结果。
提示词:
写一篇关于路的文章。
大模型输出:
这是一条再普通不过的路,两旁是常见的树木和零星的野花。路面铺着平凡的石子,日复一日地迎接着行人、车辆。它不急不缓,不宽不窄,静静地躺在那儿,连接着起点与终点。无论是清晨的薄雾,还是黄昏的余晖,这条路都默默地见证着岁月的流逝,承载着人们的日常,平凡而踏实。
提示词:
写一篇关于路的短篇小说,要求叙事风格诙谐幽默。
大模型输出:
张三是个普通的上班族,每天走同一条路去公司,生活平淡无奇。某天,他决定给生活加点料,选择了一条从未走过的路。这条路可真够“别致”,先是遇到了一只穿着背带裤、戴着墨镜的小狗,摇头摆尾地指挥交通,那模样比交警还专业。张三忍住笑,绕道而行。接着,他走进了一个名叫“左右为难”的巷子,巷子里的路标全是指向“东也不是,西也不是”。张三转得头晕眼花,差点以为要困在这里一辈子。正当他准备放弃时,一位大爷骑着辆“飞天扫帚牌”自行车飘过,留下一句:“小伙子,跟着心走就对了!”张三恍然大悟,闭眼一冲,居然走出了巷子,还意外发现了公司旁的美食街。从此,他的生活因这条“奇妙之路”而精彩纷呈。
4、拆解复杂任务
把一个复杂的任务,拆解成多个稍微简单的任务,让大语言模型分步来思考问题,称为思维链(Chain-of-Thought Prompting, CoT)提示,这种方式可让大语言模型像人类一样逐步解释或进行推理。下面展示了标准提示与思维链提示的对比:
提示词:
小明有10颗糖,自己吃了3颗,妈妈又给了5颗,请问小明现在一共有几颗糖。
大模型输出:
小明现在一共有13颗糖。
提示词:
小明有10颗糖,自己吃了3颗,妈妈又给了5颗,请问小明现在一共有几颗糖。请通过思维链CoT的方式来分析。
大模型输出:
从题目中我们知道:初始时,小明有10颗糖。小明吃了3颗糖,那么剩下的糖数量为10 - 3 = 7颗。妈妈又给了小明5颗糖,那么小明现在的糖数量为7 + 5 = 12颗。因此,小明现在一共有12颗糖。
通过上述示例,我们可以观察到,运用思维链分析复杂任务能够带来更精确的结果。这只是一个简单的思维链应用实例。在实际应用大模型时,对于那些需要经过多个分析步骤才能得出结论的问题,我们都可以利用思维链来引导大模型进行深入分析,从而获得更加令人满意的答案。
以上介绍的是我们常用的提示词技巧。需要指出的是,在实际操作中,我们通常会将这些技巧综合运用。例如,在处理需要复杂分析的问题时,我们可以让大模型运用思维链进行回答,并提供类似问题的分析示例,以便获得更精确的结果。希望这些技巧能够帮助提高与大模型的沟通效率,并使大模型更有效地服务于我们的工作和生活。