微信扫码
添加专属顾问
我要投稿
我在以前的文章中详细讲述了有关于 Prompt 的语气、基调、节奏以及思维链提示(Chain of Thought Prompting)等提示技术,如果有兴趣了解,可以参考这些文章。
我将在本文中详细解析另外 2 种提示技术,它们分别是:
• 零样本提示(Zero-shot Prompting)
• 少样本提示(Few-shot Prompting)
shot 即代表示例
这两种技术利用 LLM 的强大预训练知识,通过最小化的示例输入,实现对复杂任务的快速适应和高效处理。
本文将深入探讨零样本与少样本提示相关的内容,介绍这两种技术的使用方式,区别,使用场景以及局限性。
以下这张图简要的概括了一些提示技术以及每种技术所适用的场景。
本文所有 AI 回答均来自于 Microsoft Copilot。
零样本提示的定义是直接向 AI 大模型提出任务,但是不提供如何执行的方法或者步骤。大模型必须使用其预训练的知识来生成答案。
一个简单的零样本提示示例是询问 LLM「中国的首都是什么」。
再比如以下这个例子:
Prompt:从下面的文本中提取技术规格,并以 JSON 格式表示:Google Pixel 7, 5G network, 8GB RAM, Tensor G2 processor, 128GB of storage, Lemongrass
以上都是很简单的例子,但是,麻雀虽小五脏俱全,有两点需要注意:
• Prompt 中不包含任何示例。
• LLM 完全依赖其预训练的知识来理解问题并回答它。
现在我将转向一个更复杂的例子。
想象这样一个场景,公司在招聘人员进来的时候,需要考虑人员的职位、技能、以往职称等因素,然后将其映射到每个公司里自身设置的职级序列和职称。
这种场景下,零样本提示就可以完成这个任务。
Prompt:
你的任务是将提供的职位名称标准化为以下列表中的一个:
“数据分析师”,“数据科学家”,“数据架构师”,“数据工程师”,“数据库管理员”,“数据库设计师”,“首席信息官”,“首席技术官”,“IT主管”,“开发经理”,“数据处理经理”,“安全经理”。
你的目的是确保标准化和准确性,必须用最接近匹配的职位名称来回应。
如果没有合适的匹配职位名称,你可以回应“其他”。
职位名称:“高级数据工程师”
与之前的 Prompt 类似,这里也没有提供任何示例,LLM 需要自己找出最佳匹配。
为了确保数据质量和可靠性,这个 Prompt 允许 LLM 在职称不符合预定义列表时选择“其他”。
少量样本提示同样只需要向 LLM 发送单个 Prompt。但与零样本提示的关键区别在于:少量示例被添加到了 Prompt 中,这些示例可以帮助 LLM 理解并完成任务。
我们以上文中,提取手机技术规格的 Prompt 为基础,然后加上示例:
Prompt:
请从下面的文本中提取技术规格,并以 JSON 格式展示。
示例
输入:Google Nest Wifi, network speed up to 1200Mpbs, 2.4GHz and 5GHz
输出:{ "product":"Google Nest Wifi", "speed":"1200Mpbs", "frequencies": ["2.4GHz", "5GHz"], "protocol":"WP3" }
输入:Google Pixel 7, 5G network, 8GB RAM, Tensor G2 processor, 128GB of storage, Lemongrass
再以上文中标准化职称的 Prompt 为基础,对其进行扩展,加入示例:
Prompt:
你需要把职称分类为两个类别之一:「IC(个人贡献者)」或「管理者」。
我会给你提供一个职称输入,你的任务是分析此输入并确定可能的类别。但是请记住,我提供的职称可能并不明确包含「管理者」或「IC」。
相反,它可能会暗示职位的性质或者技能。
例如,「软件开发人员」或「平面设计师」等职位头衔通常代表「IC」,而「项目负责人」或「运营主管」则可能表示管理职位。
职称存在的潜在歧义可能需要你进行创造性的语境解读。你只需要提供一个输出:「IC」或「管理者」。
职称:Senior Data Engineer
Prompt 包含了通用指令和具体示例,这可以帮助 LLM 生成更准确的分类。
如果示例能够让 LLM 给出准确回答的话,那是不是意味着给的示例越多,LLM 给出的回答就会越准确的?
事实证明,添加更多示例并不一定会提高准确性。
在某些情况下,添加更多示例上反而会降低准确性。
多篇研究论文指出,在提供 2 个示例后准确率会有显著提升,然后趋于平稳。提供超过 2 个示例可能会浪费资源,也就是浪费 Token。
那在编写 Prompt 的时候,提供示例的顺序重要吗?
顺序很重要,LLM 的预测会根据示例的顺序而发生巨大变化。。但是,这取决于你所使用的 LLM,不同的 LLM,顺序对输出结果的影响程度不一样。
其中一个策略就是将最关键的示例放在最后,LLM 会对它们处理的最后一部分信息给予重要的权重。
这个案例来自于 2024 年 4 月的一篇论文,由伦敦大学的研究人员发表。
该论文主要围绕「在开源项目中通过 Prompt 中的示例来解决 Bug」的话题。
1. 事实收集:研究人员收集了一组与 Bug 相关的示例。包括有 Bug 的代码、错误消息和一些未来用于解决 Bug 的文档;
2. Prompt 构建:在 Prompt 中加入示例;
3. 评估:评估这些示例的不同组合会如何影响 LLM 正确解决 Bug 的能力。
1. 每个示例都有独特的作用,突出了拥有多样化示例的重要性;
2. 更多的示例并不意味着更好的输出:添加更多的示例并不总是导致更好的结果,如果 Prompt 变得过于杂乱或复杂,有时甚至会降低性能。
尽管少样本提示很有用,但它依然存在很大的局限性。 其中,最大的局限性就是它依赖于所提供示例的质量和多样性,也就是说,垃圾进,垃圾出。
正如上文所提到的,示例还有可能会降低 LLM 的性能,或者将其引向错误的方向。
此外,还有过拟合的风险——LLM 可能不会泛化示例,从而创建出完全照搬模仿示例的回答,这样的回答有可能根本不符合逻辑。
如何选择这两种技术在一定程度上取决于你想要执行的任务的特定需求,以下是一些考虑因素。
• 零样本: 适合不需要领域特定知识的通用任务。
• 少量样本: 适用于特定领域的任务,比如法律、医学等领域。少样本提示允许没有大型数据集的情况下也能产生高质量、特定领域的输出。
• 零样本: 无需额外的示例,仅依赖模型的预训练。
• 少量样本: 依赖提示提供少量示例输入,引导模型朝正确的方向发展。
• 零样本: 由于缺乏特定上下文,有时可能会提供不太准确或更一般的答案。
• 少量样本: 由于示例提供了帮助模型细化输出的上下文,因此通常可以为具有高特异性的任务提供更准确的答案。
• 零样本: 可扩展性强,因为它不需要针对任务进行特定的准备。
• 少量样本: 可扩展性略差,因为每种新任务类型可能都需要创建新的提示示例。也可能容易受到语义模式漂移的影响,从而使示例响应的准确性和相关性降低。
总的来说,零样本和少样本提示各有优势和局限,选择使用哪一种方法取决于特定的任务和目标。
为了获得更可靠的响应,还可以考虑使用更高级的提示技术,比如思维链提示,或者对模型进行微调和进一步的提示工程实验,以达到更好的结果。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-26
MCP超市:百度上线AI开放计划
2025-04-26
从Function Call到MCP:大模型如何调用外部工具
2025-04-26
增量代码自动Review工具:洞窝在AI上的探索和实践
2025-04-25
OpenAI 白送 200 美元的深度研究功能?实测后发现这个「阉割版」不如不用
2025-04-25
为什么一定要做Agent智能体?
2025-04-25
哇!首个MCPBench来了,MCP竟然不比Function Calls更有优势? | 最新
2025-04-25
医疗大模型案例分析(一):Google Med-PaLM
2025-04-25
vLLM+Qwen-32B+Open Web UI构建本地私有大模型
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17