零基础学AI大模型之Zero-Shot和Few-Shot

大家好,我是工藤学编程 🦉 一个正在努力学习的小博主,期待你的关注
实战代码系列最新文章😉 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?痛点很真实!

做AI项目时,咱们常遇到两个问题:

  1. 没数据:想让模型做特定任务(如法律文本分类),但没有标注训练数据;
  2. 数据少:只有几个样本,不够训练模型,但又想快速验证效果。

而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避坑技巧

  1. 指令要"具体":别写"做分类",要写"将文本分为科技、财经、教育三类,只输出类别";
  2. 降低任务难度:复杂任务拆成多个简单任务,比如先提取关键词,再分类;
  3. 选对模型:小模型Zero-Shot能力弱,优先用中大型模型(如qwen-plus、gpt-3.5)。

6.2 Few-Shot避坑技巧

  1. 示例要"高质量":覆盖典型场景,格式统一,别出现错误示例;
  2. 数量要"适中":3-5个足够,超过10个反而会让模型注意力分散;
  3. 位置要"靠前":示例放在prompt开头,让模型先看到学习样本。

七、总结

今天咱们学会了Zero-Shot和Few-Shot两个实用技巧,核心要点总结3句话:

  1. Zero-Shot:不用示例,靠指令干活,适合简单任务、快速验证;
  2. Few-Shot:给3-5个示例,模型照猫画虎,适合复杂任务、格式要求高的场景;
  3. 选型看需求:没精力整示例用Zero-Shot,要精准输出用Few-Shot。

如果本文对你有帮助,欢迎点赞+关注+收藏🌟 ,有任何问题或实战需求,欢迎在评论区留言交流~ 我是工藤学编程,陪你从零到一玩转AI大模型!🚀

相关推荐
谁在黄金彼岸13 小时前
构建一个多Agent系统(Multi-Agent System, MAS)方法论
人工智能
pandafeeder13 小时前
Agent工具调用范式:ReAct 和Function Calling
人工智能
jinanwuhuaguo13 小时前
OpenClaw字节跳动的三只不同的claw龙虾飞书妙搭 OpenClaw、ArkClaw、扣子 OpenClaw 核心区别深度解析
人工智能·语言模型·自然语言处理·visual studio code·openclaw
咚咚王者13 小时前
人工智能之语言领域 自然语言处理 第十八章 Python NLP生态
人工智能·python·自然语言处理
yeflx13 小时前
三维空间坐标转换早期笔记
人工智能·算法·机器学习
zzh9407713 小时前
Gemini 3.1 Pro 2026年国内使用指南:技术解析与镜像站实测
人工智能
初学大模型13 小时前
基于三层架构的自动驾驶系统设计:环境建模、标准驾驶与风险调制
人工智能
●VON13 小时前
半小时从零开发鸿蒙记事本应用:AI辅助开发实战
人工智能·华为·harmonyos
特立独行的猫a13 小时前
ESP32小智AI的WebSocket 调试工具实现,小智AI后台交互过程揭秘(一、开篇介绍 )
人工智能·websocket·网络协议·esp32·小智ai
qq_3975623114 小时前
卷积神经网络 CNN
人工智能·神经网络·cnn