尽管清晰的指令对于与大型语言模型进行交流非常重要,但有时仅仅告诉模型该做什么是不够的。想象一下,你试图通过仅仅描述规则来教别人玩一个新游戏,与向他们演示几轮游戏的效果对比。通常,看到示例会使任务变得更加清晰。这就是少样本提示的用武之地。少样本提示不是仅仅依靠指令(有时这被称为零样本提示),而是将你希望大型语言模型执行的任务示例直接包含在你的提示中。你向模型展示你期望的模式、格式或响应类型。只提供一个示例被称为单样本提示,而提供多个(通常是2到5个)则被称为少样本提示。为什么要展示示例?在你的提示中提供示例有以下几个好处:清晰度: 示例可以消除指令中的模糊之处。你所说的“简要总结”或“提取姓名”可能被模型理解为你预想的不同含义。一个示例能使你的期望变得具体。格式规定: 如果你需要特定格式的输出(例如列表、JSON或特定的句子结构),展示示例通常是引导模型的最有效方法。任务演示: 对于一些略微不寻常或需要特定风格的任务(例如将文本分类到自定义类别或采用某种角色),示例比单纯的描述更能有效地表现出期望的行为。提高准确性: 通过查看正确的输入-输出对的示例,模型能更好地理解任务的细节,通常会产生更准确和相关的回应。少样本提示的结构一个典型的少样本提示包括:(可选但推荐)指令: 简要描述任务。示例: 提供一个或多个输入和期望输出的配对。你的最终输入: 你希望模型实际处理的查询或输入。重要的是要保持示例格式一致,以便模型能轻松识别模式。常见的格式包括使用输入:和输出:,或Q:和A:等标签,或者仅仅演示转换过程。让我们看一个简单的示例:对电影评论的情感进行分类。零样本提示(仅指令):将以下电影评论的情感分类为积极、消极或中立。 评论:这部电影非常棒,必看! 情感:模型可能会正确地将其识别为积极。但对于更详细的评论,或者如果你对什么是中立有特定的想法,示例会有所帮助。少样本提示(指令和示例):将以下电影评论的情感分类为积极、消极或中立。 评论:我喜欢表演,故事情节也很引人入胜。 情感:积极 评论:情节可预测,节奏感觉很慢。 情感:消极 评论:这是一部还算可以的电影,不好也不坏。 情感:中立 评论:这部电影非常棒,必看! 情感:通过提供示例,你为模型提供了更清晰的任务模板。它看到了输入格式(评论:)、期望的输出格式(情感:),以及根据你的定义输入如何映射到输出的示例。这是另一个示例:提取特定信息并将其格式化为JSON。任务:从句子中提取水果和颜色。少样本提示:从句子中提取水果及其颜色,并以JSON格式提供输出。 句子:我买了一个鲜红的苹果。 JSON: {"fruit": "apple", "color": "red"} 句子:食谱中需要一个绿色的青柠。 JSON: {"fruit": "lime", "color": "green"} 句子:他早餐吃了一根黄香蕉。 JSON:这些示例清晰地展示了提取任务以及所需的精确JSON结构({"fruit": "...", "color": "..."})。这使得模型为最终句子生成正确输出的可能性大大增加,而不仅仅是要求它“将水果和颜色提取为JSON”。少样本提示的有效技巧重质不重量: 使用清晰、准确且相关的示例。少数好的示例胜过许多差的或不一致的示例。一致性: 为所有示例以及你希望模型处理的最终输入保持相同的格式。如果示例使用输入:和输出:,那么你的最终查询也应使用输入:。相关性: 确保示例与你希望模型对最终输入执行的特定任务直接相关。从小处着手: 通常,1到3个示例(单样本或少样本)就足够了。添加过多示例有时会混淆模型,或者占用过多的允许输入长度(上下文窗口)。通过实验找到最有效的方法。少样本提示是提高大型语言模型回应可靠性和特异性的一种基本技术。通过向模型展示你想要什么,而不仅仅是告诉它,你提供了有价值的上下文,有助于弥合你的意图与模型输出之间的差距。随着练习,你将对何时以及如何恰当地使用示例形成直觉。