4.2 零样本与少样本学习:上下文学习提升推理能力
本节内容基于《大模型应用开发极简入门:基于GPT-4和ChatGPT(第2版)》第4章「提示工程」中的上下文学习编写,涵盖零样本、少样本、思维链(CoT)、自洽性等提升推理能力的核心技巧。
一、上下文学习概述(书4.1.2)
书中将**上下文学习(In-Context Learning)**作为提示工程的核心能力之一,包括:
- 零样本(Zero-shot):仅通过任务描述,模型即可执行
- 少样本(Few-shot):在提示中提供少量示例,模型通过模仿完成新任务
- 思维链(Chain-of-Thought, CoT):引导模型分步推理,提升复杂任务正确率
- 自洽性(Self-Consistency):多次生成取多数答案,提升稳定性
本节聚焦零样本与少样本,下一节将深入CoT与自洽性。这些技巧均无需微调,仅通过优化提示即可显著提升效果。
二、零样本(Zero-shot)
2.1 定义
零样本指不提供任何示例,仅通过自然语言描述任务,模型即可执行。例如:
将以下英文翻译为中文:
Artificial intelligence is transforming industries.
模型可直接输出"人工智能正在改变各行各业",无需额外示例。
2.2 适用场景
| 场景 | 说明 |
|---|---|
| 简单任务 | 翻译、摘要、分类等模型已充分学习的任务 |
| 快速验证 | 快速测试模型是否能完成某任务 |
| 通用能力 | 依赖模型预训练阶段学到的通用能力 |
2.3 零样本的局限
- 对格式、风格有严格要求时,零样本可能不稳定
- 领域专业术语、特殊格式需少样本或微调补充
- 复杂推理任务零样本正确率有限,需CoT等技巧
2.4 与书中提示结构的对应
书中提示工程模板包含角色、上下文、任务、要求。零样本时,通过清晰的任务描述与要求即可,无需示例部分。例如:
角色:你是翻译专家
任务:将用户输入的英文翻译为中文
要求:准确、流畅,保持专业术语
三、少样本(Few-shot)
3.1 定义
少样本指在提示中提供少量示例,模型通过模仿完成新任务。例如书中示例:
翻译成中文:
apple -> 苹果
computer -> 电脑
artificial intelligence ->
模型可根据前两例,正确输出"人工智能"。
3.2 为什么有效
大语言模型在预训练时学习了大量"输入-输出"模式。在提示中提供示例,相当于激活了相关的模式,使模型更容易生成符合格式与风格的输出。
3.3 少样本设计要点(书4.1.2)
| 要点 | 说明 |
|---|---|
| 示例典型 | 选择能代表任务核心的示例,覆盖常见与边界情况 |
| 格式一致 | 输入输出格式统一,便于模型模仿 |
| 数量适中 | 通常3-5个示例即可,过多增加Token成本且可能过拟合 |
| 多样性 | 示例间应有差异,避免重复模式 |
3.4 情感分类示例(基于书中思路)
将情感分类为正面/负面/中性:
输入:这个产品非常好用。 输出:正面
输入:服务态度太差了。 输出:负面
输入:性价比一般,可以考虑。 输出:中性
输入:物流快,包装完好。 输出:
模型会根据前三例,推断第四句应为"正面"。
3.5 格式转换示例
将日期从中文转为YYYY-MM-DD格式:
2024年1月15日 -> 2024-01-15
二零二三年十二月三日 -> 2023-12-03
明年春节 ->
四、少样本与书中提示模板的结合
书中提示工程模板结构为:
# 书中 prompt_engineering_template 结构
prompt_template = f"""
角色:你是一名专业的{task_type}专家
上下文:{context}
示例:{"无" if not examples else "\n".join([f"- {e}" for e in examples])}
要求:{requirements}
"""
少样本对应其中的示例部分。将示例以统一格式嵌入,即可实现少样本学习。书中摘要示例:
summary_prompt = prompt_engineering_template(
task_type="文本摘要",
context="人工智能(AI)是一门...",
examples=["输入:苹果是一种水果,富含维生素。输出:苹果是富含维生素的水果。"],
requirements="摘要长度不超过50字,保留核心信息,无冗余内容"
)
五、零样本与少样本的选型
| 场景 | 推荐 | 说明 |
|---|---|---|
| 简单、通用任务 | 零样本 | 成本低,速度快 |
| 格式严格、风格特殊 | 少样本 | 通过示例约束输出 |
| 领域专业 | 少样本 | 示例可传递领域知识 |
| 复杂推理 | CoT(下节) | 零样本/少样本正确率有限 |
六、完整可运行示例(基于书中代码)
以下示例结合书中prompt_engineering_template与gpt_basic_completion,实现零样本与少样本的对比:
"""
零样本与少样本对比示例(基于书4.1.2与书中代码模板)
运行: pip install openai python-dotenv
"""
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def chat(prompt: str, temperature: float = 0.3) -> str:
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=temperature,
max_tokens=200
)
return response.choices[0].message.content.strip()
# 零样本:仅任务描述
zero_shot_prompt = """将以下英文翻译为中文:
Artificial intelligence is transforming industries."""
print("零样本结果:", chat(zero_shot_prompt))
# 少样本:带示例
few_shot_prompt = """翻译成中文:
apple -> 苹果
computer -> 电脑
artificial intelligence ->"""
print("少样本结果:", chat(few_shot_prompt))
# 少样本:情感分类
few_shot_classify = """将情感分类为正面/负面:
输入:这个产品非常好用。 输出:正面
输入:服务态度太差了。 输出:负面
输入:性价比一般,可以考虑。 输出:"""
print("少样本分类:", chat(few_shot_classify))
七、Token 与成本考虑(书 4.1.5 提示优化)
书中 4.1.5 提到token 压缩、成本控制。少样本会显著增加输入 Token:每增加一个示例,成本与延迟都会上升。建议示例数量控制在 3–5 个,且每条示例尽量精简;必要时用「代表性最强」的示例替代堆砌数量。零样本在成本上更优,在格式与稳定性允许时优先使用。
八、与 4.1 节结构化模板的配合
4.1 节给出了「角色、上下文、任务、输出要求」的四要素模板。零样本与少样本对应其中的任务与示例:零样本时「任务」中写清指令即可;少样本时在「上下文」或单独「示例」中嵌入 1~5 个输入输出对,模型会据此模仿。输出要求(格式、长度)与 4.4 节格式强制结合,可进一步稳定输出。书中 4.1.2 上下文学习与 4.1.1 提示基础是同一章内的递进关系,本节与 4.1 的配合即体现这一点。
8.1 何时增加示例数量
若 3 个少样本仍出现格式漂移或领域偏差,可尝试增至 5 个或补充边界样本;若 5 个后改善不明显,则考虑是否任务本身需要更强推理(改用 CoT,见 4.3)或需要微调(见 4.6)。避免无限制增加示例导致 Token 成本过高且过拟合到示例风格。
九、小结
本节基于书中第4章「上下文学习」,系统讲解了零样本与少样本的定义、适用场景、设计要点及与书中提示模板的结合。二者均无需微调,是提升模型任务适配性的低成本手段。下一节将介绍思维链(CoT)与自洽性,进一步提升复杂推理能力。在实际开发中,可先对任务做零样本测试,若格式或风格不稳定再补 1~3 个少样本,往往能快速达到可用水平。
十、与 4.3 CoT、4.6 微调的衔接
4.3 节思维链:零样本/少样本主要解决「任务理解与格式模仿」;对需要多步推理的题目(如数学、逻辑),可在此基础上加 CoT 指令或少样本 CoT 示例,与本节形成「任务描述 + 示例 + 分步思考」的组合。4.6 节微调:当少样本已加至 5 个以上仍无法稳定满足格式或领域要求时,可考虑微调;微调后仍可在推理时使用零样本或少样本作为「推理时提示」,与书中 4.1.2 与 4.2 微调的关系一致。
十一、小结(复述)
零样本与少样本是上下文学习的核心手段,与书中 4.1.2 完全对应。掌握二者适用场景与 Token 成本权衡,即可在多数业务中低成本提升效果;再结合 4.3 CoT、4.4 格式强制与 4.5 防御性提示,形成完整提示工程链路。实际开发中可先对任务做零样本测试,若格式或风格不稳定再补 1~3 个少样本,往往能快速达到可用水平,避免过早投入微调。
下一节预告:4.3 思维链CoT推理与自洽性:复杂问题分步求解实战