| 大家好,我是工藤学编程 🦉 | 一个正在努力学习的小博主,期待你的关注 |
|---|---|
| 实战代码系列最新文章😉 | C++实现图书管理系统(Qt C++ GUI界面版) |
| SpringBoot实战系列🐷 | 【SpringBoot实战系列】SpringBoot3.X 整合 MinIO 存储原生方案 |
| 分库分表 | 分库分表之实战-sharding-JDBC分库分表执行流程原理剖析 |
| 消息队列 | 深入浅出 RabbitMQ-RabbitMQ消息确认机制(ACK) |
| AI大模型 | 零基础学AI大模型之CoT思维链和ReAct推理行动 |
前情摘要
1、零基础学AI大模型之读懂AI大模型
2、零基础学AI大模型之从0到1调用大模型API
3、零基础学AI大模型之SpringAI
4、零基础学AI大模型之AI大模型常见概念
5、零基础学AI大模型之大模型私有化部署全指南
6、零基础学AI大模型之AI大模型可视化界面
7、零基础学AI大模型之LangChain
8、零基础学AI大模型之LangChain六大核心模块与大模型IO交互链路
9、零基础学AI大模型之Prompt提示词工程
10、零基础学AI大模型之LangChain-PromptTemplate
11、零基础学AI大模型之ChatModel聊天模型与ChatPromptTemplate实战
12、零基础学AI大模型之LangChain链
13、零基础学AI大模型之Stream流式输出实战
14、零基础学AI大模型之LangChain Output Parser
15、零基础学AI大模型之解析器PydanticOutputParser
16、零基础学AI大模型之大模型的"幻觉"
17、零基础学AI大模型之RAG技术
18、零基础学AI大模型之RAG系统链路解析与Document Loaders多案例实战
19、零基础学AI大模型之LangChain PyPDFLoader实战与PDF图片提取全解析
20、零基础学AI大模型之LangChain WebBaseLoader与Docx2txtLoader实战
21、零基础学AI大模型之RAG系统链路构建:文档切割转换全解析
22、零基础学AI大模型之LangChain 文本分割器实战:CharacterTextSplitter 与 RecursiveCharacterTextSplitter 全解析
23、零基础学AI大模型之Embedding与LLM大模型对比全解析
24、零基础学AI大模型之LangChain Embedding框架全解析
25、零基础学AI大模型之嵌入模型性能优化
26、零基础学AI大模型之向量数据库介绍与技术选型思考
27、零基础学AI大模型之Milvus向量数据库全解析
28、零基础学AI大模型之Milvus核心:分区-分片-段结构全解+最佳实践
29、零基础学AI大模型之Milvus部署架构选型+Linux实战:Docker一键部署+WebUI使用
30、零基础学AI大模型之Milvus实战:Attu可视化安装+Python整合全案例
31、零基础学AI大模型之Milvus索引实战
32、零基础学AI大模型之Milvus DML实战
33、零基础学AI大模型之Milvus向量Search查询综合案例实战
33、零基础学AI大模型之新版LangChain向量数据库VectorStore设计全解析
34、零基础学AI大模型之相似度Search与MMR最大边界相关搜索实战
35、零基础学AI大模型之LangChain整合Milvus:新增与删除数据实战
36、零基础学AI大模型之LangChain+Milvus实战:相似性搜索与MMR多样化检索全解析
37、零基础学AI大模型之LangChain Retriever
38、零基础学AI大模型之MultiQueryRetriever多查询检索全解析
39、零基础学AI大模型之LangChain核心:Runnable接口底层实现
40、零基础学AI大模型之RunnablePassthrough
41、零基础学AI大模型之RunnableParallel
42、零基础学AI大模型之RunnableLambda
43、零基础学AI大模型之RunnableBranch
44、零基础学AI大模型之Agent智能体
45、零基础学AI大模型之LangChain Tool工具
46、零基础学AI大模型之LLM绑定Tool工具实战
47、零基础学AI大模型之LangChain Tool异常处理
48、零基础学AI大模型之CoT思维链和ReAct推理行动
本文章目录
- 零基础学AI大模型之Zero-Shot和Few-Shot
-
- 一、为什么需要Zero-Shot和Few-Shot?痛点很真实!
- 二、什么是Zero-Shot(零样本)?不用教,直接会
-
- [2.1 Zero-Shot核心原理](#2.1 Zero-Shot核心原理)
- [2.2 简单示例](#2.2 简单示例)
- [2.3 Zero-Shot的特点](#2.3 Zero-Shot的特点)
- 三、什么是Few-Shot(少量样本)?教几个,就学会
-
- [3.1 Few-Shot核心原理](#3.1 Few-Shot核心原理)
- [3.2 简单示例](#3.2 简单示例)
- [3.3 Few-Shot的特点](#3.3 Few-Shot的特点)
- [四、Zero-Shot vs Few-Shot 应用场景对比(一张表看懂)](#四、Zero-Shot vs Few-Shot 应用场景对比(一张表看懂))
- 五、LangChain实战:Zero-Shot和Few-Shot代码实现
-
- [5.1 实战1:Zero-Shot实现(翻译任务)](#5.1 实战1:Zero-Shot实现(翻译任务))
- [5.2 实战2:Few-Shot实现(问答格式对齐)](#5.2 实战2:Few-Shot实现(问答格式对齐))
- 六、实战避坑技巧:让Zero-Shot/Few-Shot效果翻倍
-
- [6.1 Zero-Shot避坑技巧](#6.1 Zero-Shot避坑技巧)
- [6.2 Few-Shot避坑技巧](#6.2 Few-Shot避坑技巧)
- 七、总结
零基础学AI大模型之Zero-Shot和Few-Shot
一、为什么需要Zero-Shot和Few-Shot?痛点很真实!

做AI项目时,咱们常遇到两个问题:
- 没数据:想让模型做特定任务(如法律文本分类),但没有标注训练数据;
- 数据少:只有几个样本,不够训练模型,但又想快速验证效果。
而Zero-Shot和Few-Shot正好解决这两个问题:
- Zero-Shot:不用给任何示例,直接用自然语言指令让模型干活;
- Few-Shot:给3-5个示例,模型"照猫画虎"就能学会任务。
用通俗的话讲:
- Zero-Shot → 老师没教例题,直接让学生做题;
- Few-Shot → 老师教3道例题,学生就会做同类题。
二、什么是Zero-Shot(零样本)?不用教,直接会
2.1 Zero-Shot核心原理
Zero-Shot是指模型在没有特定任务训练数据/示例的情况下,仅凭预训练知识和语言理解能力完成任务。
核心逻辑:大模型预训练时学了海量通用知识(比如语言规则、常识),遇到新任务时,能通过指令理解需求,把通用知识迁移过来用。
2.2 简单示例

比如让模型做翻译,不用给翻译示例,直接发指令:
- 用户输入:"将这句话翻译成中文:Hello, how are you?"
- 模型输出:"你好,最近怎么样?"
再比如做文本分类,不用给分类示例:
- 用户输入:"判断这句话情感是积极、消极还是中性:今天的天气真舒服"
- 模型输出:"积极"
2.3 Zero-Shot的特点
- 优点:不用准备示例,开发速度快,适合快速原型验证;
- 缺点:输出可控性低,复杂任务容易出错,依赖模型预训练能力。
三、什么是Few-Shot(少量样本)?教几个,就学会
3.1 Few-Shot核心原理
Few-Shot是指给模型提供少量示例(通常3-5个),模型通过"上下文学习"模仿示例,快速理解任务格式和需求,提升任务表现。
核心逻辑:示例能帮模型明确"输入是什么格式,输出该是什么格式",相当于给模型划重点,比纯指令更精准。
3.2 简单示例
比如让模型做"事物→类别"映射,给2个示例:
- 输入示例1:"苹果 -> 水果" → 输出示例1:"香蕉 -> 水果"
- 输入示例2:"汽车 -> 交通工具" → 输出示例2:"飞机 -> 交通工具"
- 新输入:"猫 -> " → 模型输出:"动物"
再比如做问答格式对齐,给2个示例:
- 示例1:输入"苹果公司总部在哪?",输出"根据知识:苹果总部在库比蒂诺"
- 示例2:输入"OpenAI CEO是谁?",输出"根据知识:OpenAI CEO是萨姆·阿尔特曼"
- 新输入:"亚马逊创始人是谁?" → 模型输出:"根据知识:亚马逊创始人是杰夫·贝索斯"
3.3 Few-Shot的特点
- 优点:输出可控性高,复杂任务表现好,示例准备成本低;
- 缺点:需要手动整理高质量示例,比Zero-Shot多一步准备工作。
四、Zero-Shot vs Few-Shot 应用场景对比(一张表看懂)
| 对比维度 | Zero-Shot(零样本) | Few-Shot(少量样本) |
|---|---|---|
| 适用任务复杂度 | 简单任务(翻译、基础分类、通用问答) | 复杂任务(逻辑推理、特定格式生成、领域分类) |
| 数据依赖 | 无需任何示例 | 需要3-5个高质量示例 |
| 输出可控性 | 较低(依赖模型理解) | 较高(示例明确规则) |
| 开发速度 | 快(直接写指令) | 稍慢(需整理示例) |
| 典型用例 | 快速原型开发、通用需求验证 | 领域特定任务、格式要求严格的任务 |
五、LangChain实战:Zero-Shot和Few-Shot代码实现
咱们用LangChain框架,结合通义千问(qwen-plus),写两段实战代码,零基础也能跑通~
5.1 实战1:Zero-Shot实现(翻译任务)
核心:用ChatPromptTemplate写清晰指令,不用给示例。
python
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
# 1. 初始化大模型(通义千问,需配置api_key)
llm = ChatOpenAI(
model_name="qwen-plus",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
api_key="sk-xxx", # 替换成自己的api_key
temperature=0.3 # 温度越低,输出越稳定
)
# 2. 设计Zero-Shot提示词模板(清晰指令)
zero_shot_prompt = ChatPromptTemplate.from_messages([
("system", "你是专业翻译官,将{source_lang}翻译成{target_lang},语言要自然流畅。"),
("human", "{text}")
])
# 3. 构建链并调用
zero_shot_chain = zero_shot_prompt | llm
# 执行翻译:英文→中文
response = zero_shot_chain.invoke({
"source_lang": "英文",
"target_lang": "中文",
"text": "I love learning AI large model development very much."
})
# 输出结果
print("Zero-Shot翻译结果:")
print(response.content) # 输出:我非常喜欢学习AI大模型开发。
5.2 实战2:Few-Shot实现(问答格式对齐)
核心:用FewShotPromptTemplate封装示例,让模型模仿格式。
python
from langchain_openai import ChatOpenAI
from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate
# 1. 初始化大模型
llm = ChatOpenAI(
model_name="qwen-plus",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
api_key="sk-xxx",
temperature=0.3
)
# 2. 准备Few-Shot示例(3个以内足够,太多反而冗余)
examples = [
{
"input": "苹果公司的总部在哪里?",
"output": "根据我的大量思考:苹果公司的总部位于美国加利福尼亚州的库比蒂诺(Cupertino)。"
},
{
"input": "OpenAI的CEO是谁?",
"output": "根据我的大量思考:OpenAI的现任CEO是萨姆·阿尔特曼(Sam Altman)。"
}
]
# 3. 定义单条示例的模板
example_template = """
输入:{input}
输出:{output}
"""
# 4. 封装示例模板
example_prompt = PromptTemplate(
template=example_template,
input_variables=["input", "output"] # 对应示例中的key
)
# 5. 构建Few-Shot提示词模板
few_shot_prompt = FewShotPromptTemplate(
examples=examples, # 传入示例
example_prompt=example_prompt, # 示例格式
suffix="输入:{question}\n输出:", # 新问题的格式
input_variables=["question"] # 新问题的参数名
)
# 6. 构建链并调用
few_shot_chain = few_shot_prompt | llm
# 新问题:查询亚马逊创始人
response = few_shot_chain.invoke({"question": "亚马逊的创始人是谁?"})
# 输出结果
print("Few-Shot问答结果:")
print(response.content) # 输出:根据我的大量思考:亚马逊的创始人是杰夫·贝索斯(Jeff Bezos)。
六、实战避坑技巧:让Zero-Shot/Few-Shot效果翻倍

6.1 Zero-Shot避坑技巧
- 指令要"具体":别写"做分类",要写"将文本分为科技、财经、教育三类,只输出类别";
- 降低任务难度:复杂任务拆成多个简单任务,比如先提取关键词,再分类;
- 选对模型:小模型Zero-Shot能力弱,优先用中大型模型(如qwen-plus、gpt-3.5)。
6.2 Few-Shot避坑技巧
- 示例要"高质量":覆盖典型场景,格式统一,别出现错误示例;
- 数量要"适中":3-5个足够,超过10个反而会让模型注意力分散;
- 位置要"靠前":示例放在prompt开头,让模型先看到学习样本。
七、总结
今天咱们学会了Zero-Shot和Few-Shot两个实用技巧,核心要点总结3句话:
- Zero-Shot:不用示例,靠指令干活,适合简单任务、快速验证;
- Few-Shot:给3-5个示例,模型照猫画虎,适合复杂任务、格式要求高的场景;
- 选型看需求:没精力整示例用Zero-Shot,要精准输出用Few-Shot。
如果本文对你有帮助,欢迎点赞+关注+收藏🌟 ,有任何问题或实战需求,欢迎在评论区留言交流~ 我是工藤学编程,陪你从零到一玩转AI大模型!🚀