Zero-shot、Few-shot 和 One-shot Prompt 有什么区别?

🎯 博主简介

你好,我是安逸,CSDN「人工智能技术领域新星创作者」,码龄 6 年。博客总访问量 31万+,博客粉丝 1.2万+。

我长期关注人工智能技术与工程实践,主要研究和分享 AI Agent、RAG 系统、MCP 协议、OpenClaw、AI 编程工具以及大模型工程化落地。同时也持续输出 Java / Spring、Transformer、机器学习、深度学习与计算机视觉等方向的学习笔记和项目经验。

📚 推荐系列合集

目前已经整理了 生产级 RAG 系统实战Agent 记忆系统MCP 协议深度解析OpenClaw 系列Hermes Agent + Obsidian图解机器学习Claude Code 系列Agent 经典面试题等系列合集,涵盖 AI 应用开发、智能体实践、知识管理、机器学习与 AI 编程工具。

📱GZH:安逸Ai (科技前沿新闻,Github热门项目,最新免费资料...)

网页观看完整系列合集:🌐 Anyi AI 学习资源站


这道题考的是 Prompt Engineering 里面最基础也最重要的概念。

简单来说,三者的区别就在于:给不给示例、给几个示例。Zero-shot 不给示例,One-shot 给 1 个示例,Few-shot 给 2 个及以上示例。但背后的原理比这复杂一点------这涉及到模型是怎么"看示例学习"的。

下面我把这个知识点掰开讲。

什么是 Shot 提示技术

先把这三个概念说清楚。

Zero-shot Prompt 就是只给指令,不给任何示例。比如你让模型翻译一句话,直接说"把下面这句话翻译成英文:今天天气真好"。模型靠自己的预训练知识直接回答。

One-shot Prompt 是给 1 个示例。比如先给一个例子:"苹果→Apple,香蕉→Banana",然后再问"猫→?"。让模型从这一个示例里找规律。

Few-shot Prompt 就是给 2 个及以上的示例。继续翻译的例子,给 3-5 个词对示例,然后让模型翻译新的词。

这三个技术有个共同的核心:示例不是用来训练模型的,而是用来激活模型已有的知识。模型早就"见过"这些知识了,示例只是告诉它:该用哪部分知识、以什么格式输出。

三种Shot技术的提示结构对比,展示指令+示例数量+新输入的差异

为什么说是"激活"而不是"训练"?这里要引入一个关键概念------In-Context Learning(上下文学习),也叫情境学习。

In-Context Learning 原理

这是理解 Shot 提示技术的关键。

当你给模型一个示例:

复制代码
  输入:我今天很开心
输出:Positive

模型并不是"记住"了这个对应关系。它的处理过程是:

  1. 看到示例后,在自己的预训练知识里搜索类似的任务模式
  2. 找到"判断情感倾向"这类任务的处理方式
  3. 把你新输入的内容套用这个模式输出

打个比方。你做数学应用题时,翻开教材看了两道例题。看例题不是为了背住例题的答案,而是回忆这类应用题该用什么方法、什么步骤去解。然后遇到新题,用同样的方法去套。

这就是 In-Context Learning 的本质:示例提供上下文,模型从上下文中匹配任务模式,激活相关知识

重要的事情说三遍:示例不更新模型权重!示例不更新模型权重!示例不更新模型权重!你给 100 个示例和 1 个示例,模型本身的参数没有任何变化。变化的只是这次推理时的"思考方式"。

示例数量影响的是模式匹配的清晰度。一个示例,模型只能猜大概的方向;三个示例,模型能更确定地找到正确的模式;给太多示例,反而可能让模型困惑或者浪费 token。

In-Context Learning工作流程图,展示输入提示→示例嵌入→知识激活→模式匹配→输出的完整过程

什么时候用哪个

这是面试里经常被问到的问题。

Zero-shot 适用场景

  • 任务足够简单、通用。模型在预训练时见过大量这类任务,比如基础翻译、摘要生成、简单问答
  • 任务定义很明确,不需要额外解释格式
  • 需要节省 token、提高响应速度

One-shot 适用场景

  • 想轻量级地"教"模型理解任务格式
  • 任务稍微复杂一点,但模型应该能快速理解
  • 作为 Zero-shot 和 Few-shot 之间的过渡

Few-shot 适用场景

  • 任务涉及领域知识特定格式。比如医学术语分类、代码生成、特定文风写作
  • 任务模式不明显,需要多个示例让模型"悟"出规律
  • 需要确保输出格式高度一致

举几个具体例子:

任务类型 推荐方式 原因
"把'你好'翻译成英文" Zero-shot 太简单,模型直接会
生成符合特定JSON格式的报告 Few-shot 需要示例来明确格式
用中文写诗 One-shot 稍微复杂,给个示例帮助理解风格

选择的核心逻辑很简单:任务越复杂、越垂直,越需要示例;任务越通用、越简单,越不需要示例

就像老师出题:简单的口算题直接让学生做就行;复杂的应用题,得先讲几道例题学生才能理解。

场景选择决策图,根据任务复杂度从简单到复杂分支,展示何时选Zero/One/Few-shot的判断路径

好示例怎么写

Few-shot 用得多,但很多人用得不对。关键在于示例质量,而不是数量。

好示例的三个特征

  1. 代表性:覆盖任务的典型情况。别只给特例,否则模型会学到错误的模式。比如做情感分类,别全给强烈的情感示例,也得给中性句。

  2. 多样性:示例之间要有差异。如果做翻译,词性要有名词、动词、形容词;如果做分类,类别要尽量均衡。

  3. 格式一致:示例的输入输出格式必须和最终任务完全一致。示例用 JSON,任务也用 JSON;示例输出带引号,任务输出也带引号。

关于数量,这里有个反直觉 的点:不是越多越好

研究显示,2-5 个示例通常是最优区间。超过这个数量,边际效益急剧下降,反而可能带来负面影响:

  • 模型开始"记住"示例而不是理解模式
  • token 消耗大幅增加
  • 格式过于固定,缺乏灵活性

而且,如果你的示例质量差,10 个差示例只会让结果更差。宁可只有 2 个高质量示例,也不要 10 个凑数的。

好示例vs差示例对比图,展示格式统一和多样性的影响,好示例包含代表性、多样性、格式一致,差示例全是特例和格式混乱

还有个容易被忽略的概念:Test Instance 和 Demonstration。Few-shot 里的示例叫 Demonstration,就是你提供的那些例子。Test Instance 是你真正要模型回答的新问题。两者格式必须一致,否则模型会困惑。

面试怎么答

基础版(直接背)

Zero-shot、One-shot、Few-shot 的区别在于是否提供示例以及示例数量。Zero-shot 直接给指令不给示例,One-shot 给 1 个示例,Few-shot 给 2 个及以上示例。它们的原理是 In-Context Learning,即示例激活模型预训练知识中的相关模式,而非真正训练模型。选择上,简单通用任务用 Zero-shot,复杂或领域特定任务用 Few-shot,One-shot 作为轻量过渡。

加分版(在基础版上加这些)

需要补充几个关键点。第一,示例的作用是"激活"而非"训练",不更新模型参数。第二,示例质量比数量更重要,2-5 个高质量示例通常优于大量低质量示例。第三,好示例要具备代表性、多样性、格式一致性。第四,Few-shot 中的示例称为 Demonstration,Test Instance 是真正要回答的问题。

面试回答要点总结,核心区别、原理机制、选择建议三个维度的高亮展示

一句话总结

Zero/One/Few-shot 的核心区别是示例数量,背后通过 In-Context Learning 激活模型已有知识,选择依据是任务复杂度------简单任务直接答,复杂任务看例题。

相关推荐
王中阳Go1 小时前
用TRAE Work批量优化学员简历,原来2天的活现在2小时就干完了
后端·面试·agent
逻辑君1 小时前
认知思维导图生成器
人工智能·深度学习·机器学习
Bolt1 小时前
一个超级简单的 coding agent,100 行就可以做任何事
llm·agent·bun
Kari111 小时前
企业是否需要引入腾讯云 ADP 实施服务商,应从哪些项目条件判断?|实施问题解析
人工智能
AI08011 小时前
模型上线只是开始:AI可观测性如何成为企业AI治理的必选项
大数据·人工智能
于壮士hoho1 小时前
BA | 指标口径能统一只用财务口径吗?
人工智能·数据分析·指标体系·医药
这张生成的图像能检测吗1 小时前
(论文速读)多旋翼飞行器螺旋桨损伤的检测、分类和估计
人工智能·机器学习·无人机·故障诊断·缺陷识别·旋翼故障
Kari111 小时前
腾讯云 ADP 回答异常排查与支持协同的技术准备清单
人工智能
灵极海1 小时前
Claude Code 理论介绍:给新手看的 AI 编程智能体入门
人工智能·chatgpt