大语言模型提示技巧(一)-指令要清晰、具体

在与大语言模型对话时,应该提供尽可能清晰和具体的指令来表达希望模型执行的操作,这将有助于模型给出接近你所期待的输出,并降低得到无关或不正确回复的可能性。但需要注意的是,编写清晰的指令不意味着编写简短的指令,事实上,更长的提示实际上更清晰且提供了更多的上下文,这会使得大语言模型输出更详细更相关的内容。

本文介绍了编写清晰、具体指令的几个策略。以下所有示例的实测,均使用文新大模型3.5。

策略1:使用分隔符清晰地表示输入的不同部分

通常指令中会包含表达用户目的“指令”本身及“指令”所在处理的“内容”,此时可以采用分隔符来标识文字的不同部分,以清晰分隔“指令”与“内容”。一般使用的分隔符可以是:”’,””,<>,<tag>,<\tag>等,其选用原则是避免与“内容”中使用到的符号相同。

例:

策略2:要求一个结构化的输出

如果你期待大模型的输出是结构化的形式,可以要求大模型直接输出标准格式化文本,比如Json、HTML 等格式,以便你可以清晰分辨出输出的各个部分,甚至可以复制后直接在你的文本或代码中使用。

例:

请生成包括类别、名称、作用和适用人群的五个虚构化妆品清单,并以 JSON 格式提供,其中包含以下键:类别、名称、作用、适用人群。

策略3:要求模型检查是否满足条件

有时候任务做出的假设可能是不成立的,此时我们可以告诉模型先检查假设,如果假设不成立,指示模型停止执行。我们还可以考虑潜在的边缘情况以及模型应该如何处理它们,以避免意外的错误或结果。

例:

您将获得由三个单引号括起来的文本。如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 – …

第二步 – …

第N步 – …

如果文本中不包含一系列的指令,则直接写“未提供步骤”。

”’五花肉切成均匀的方块。入开水中滚一下,捞出控干水分。把铁锅烧热,下入控干水的五花肉,用中火翻炒,炒出的油取出。待油基本控干,肉面呈黄色,下入冰糖,蒜姜、八角、切碎的红椒继续翻炒。待冰糖基本炒化,锅想冒烟之前,加入没过肉的开水炖。十分钟后转小火,加少许盐,炖至汤汁基本收干,开锅翻炒几下,表面色泽呈金黄,锅内吱吱拉拉作响,这时即刻出锅。”’

例:

您将获得由三个单引号括起来的文本。如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 – …

第二步 – …

第N步 – …

如果文本中不包含一系列的指令,则直接写“未提供步骤”。

”2024年元旦假期,全国文化和旅游市场平稳有序。经文化和旅游部数据中心测算,元旦假期3天,全国国内旅游出游1.35亿人次,同比增长155.3%;实现国内旅游收入797.3亿元,同比增长200.7%。”’

策略4:提供少量示例

即在要求模型执行实际任务之前,提供给它少量成功执行任务的示例。这使得大模型能够尽量按照示例的形式或风格回复你的问题。

例:

请以给出的对话风格继续回答问题。

<问>: 什么是耐心细致?

<答>: 做事耐心细致就像是一只蜜蜂采蜜。蜜蜂在采蜜的过程中,需要不断地飞到花朵上,用自己的嘴巴吸取花蜜,然后再飞到下一朵花上。这个过程需要非常耐心和细致,否则就无法采到足够的花蜜。同样地,做事也需要我们耐心地去完成每一个步骤,才能取得好的成果。

<问>: 什么是坚韧不拔?