【AI大模型学习路线】第一阶段之大模型开发基础——第四章(提示工程技术-1)In-context learning。
【AI大模型学习路线】第一阶段之大模型开发基础——第四章(提示工程技术-1)In-context learning。
【AI大模型学习路线】第一阶段之大模型开发基础——第四章(提示工程技术-1)In-context learning。
文章目录
- 【AI大模型学习路线】第一阶段之大模型开发基础——第四章(提示工程技术-1)In-context learning。
- 前言
- 1 定义与背景
- 1.1 什么是 In-Context Learning
- 1.2 ICL 与 Few-Shot/Zero-Shot 的关系
- 2 机制与理论
- 2.1 前向学习与隐式权重构造
- 2.2 ICL 与 Prompt Tuning 的互补
- 3 ICL 变体与示例
- 3.1 Many-Shot vs Few-Shot vs Self-Generated ICL
- 3.2 示例:Few-Shot ICL
- 3.3 示例:Self-Generated ICL(SG-ICL)
- 4 Python 实操
- 5 最佳实践与未来趋势
- 5.1 示例选择与管理
- 5.2 上下文窗口与成本权衡
- 5.3 未来方向
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通
”或参考学术信息专栏:https://fighting.blog.csdn.net/article/details/146692330
前言
- In-Context Learning(ICL)是通过将“任务示例”以自然语言的形式直接拼入 Prompt 中,让预训练大模型在不更新任何模型参数的情况下完成新任务的技术。
- ICL 最早随 GPT-3 正式提出,依托模型的海量自监督预训练知识,通过“示例+输入”的组合,在一次前向推理(forward pass)中隐式地实现对任务模式的“学习”。
- ICL 包括 Few-Shot、Many-Shot 以及最近兴起的 Self-Generated ICL(SG-ICL)等变体;其核心优势是零微调成本、高度灵活,是大模型“模型即服务”(MaaS)时代下 Prompt 工程的基石。
1 定义与背景
1.1 什么是 In-Context Learning
- In-Context Learning(ICL)指在 Prompt 中嵌入若干“示例—输出”对,模型在前向计算时基于这些示例对新输入生成符合示例模式的输出,无需任何梯度更新或权重微调。
- 正式由 GPT-3 论文首次系统化提出,展示了在仅给 0–32 个示例的情况下,大模型即可在多项 NLP 任务上超越当时的微调基线。
1.2 ICL 与 Few-Shot/Zero-Shot 的关系
- Zero-Shot 是 ICL 的特殊简化:Prompt 中只包含指令,不含示例,完全依赖模型预训练知识完成任务。
- Few-Shot 则在指令后追加少量(通常 1–5 个)示例,引导模型“模仿”示例格式,显著提升结构化或专业化任务的稳定性与准确性。
2 机制与理论
2.1 前向学习与隐式权重构造
- ICL 的本质是:Transformer 在前向推理时,会基于示例—输入的拼接序列计算自注意力(self-attention),相当于在激活层面临时构造出对任务有利的“路由”,而非修改模型权重。
- 理论分析表明,ICL 可被表述为一类“前向算法”,能通过注意力权重组合学习简单子预测器,并将其串联形成对复杂函数的近似。
2.2 ICL 与 Prompt Tuning 的互补
- Prompt Tuning(PT)在输入嵌入前添加少量可训练嵌入,SG-ICL 则通过示例完成“非参数化”适应。研究发现,将 PT 与 ICL 结合(Instruction Prompt Tuning, IPT)可降低方差、提升跨任务迁移。
3 ICL 变体与示例
3.1 Many-Shot vs Few-Shot vs Self-Generated ICL
3.2 示例:Few-Shot ICL
Prompt(拼接三组示例后请求翻译):
Translate to French:
Example 1: Good morning → Bonjour
Example 2: Thank you → Merci
Now translate: How are you? →
- 模型在此基础上生成“Comment ça va ?”
3.3 示例:Self-Generated ICL(SG-ICL)
- 首先用简短指令让模型生成若干“示例—输出”对,再将这些对作为示例拼回 Prompt 进行主任务,形成闭环。
4 Python 实操
import os
import openai
from string import Templateopenai.api_key = os.getenv("OPENAI_API_KEY")# 定义 Few-Shot 模板
template = Template("""
You are a translation assistant.
Translate to French:
Example 1: Good morning → Bonjour
Example 2: Thank you → Merci
Now translate: $text →
""")def few_shot_translate(text):prompt = template.substitute(text=text)resp = openai.ChatCompletion.create(model="gpt-4",messages=[{"role":"user","content":prompt}],temperature=0.0,max_tokens=20)return resp.choices[0].message.contentprint(few_shot_translate("How are you?"))
- 上例展示了 Few-Shot ICL 的模板化实操;可将
Example
数量、格式化方式当作变量灵活管理。
# Self-Generated ICL 示例
# 第一步:让模型生成示例对
gen = openai.ChatCompletion.create(model="gpt-4",messages=[{"role":"user","content":"Generate two examples of English→French translation"}],temperature=0.7
)
examples = gen.choices[0].message.content# 第二步:拼入主任务
prompt = f"You are a translator.\n{examples}\nTranslate: See you later →"
resp2 = openai.ChatCompletion.create(model="gpt-4",messages=[{"role":"user","content":prompt}],temperature=0.0
)
print(resp2.choices[0].message.content)
- SG-ICL 让示例自动化生成,减少人工设计成本。
5 最佳实践与未来趋势
5.1 示例选择与管理
- 利用语义检索(RAG)动态从示例库中挑选与用户输入最相关的示例,进一步提升 Few-Shot 效果。
- 对示例做多样性与代表性平衡,避免模型过度拟合某一典型场景。
5.2 上下文窗口与成本权衡
- Prompt 长度受限于模型上下文窗口,必须对早期示例做摘要或裁剪。
- Few-Shot 提示成本按 Token 计费,应监控
usage
字段并优化示例长度。
5.3 未来方向
- AutoPrompt:自动化搜索最优示例与指令组合;
- Prompt Ensembles:多模板投票回答;
- 跨模态 ICL:将图像、表格示例与文本混合进 Context;
- 边缘 ICL:在资源受限设备上量化模型并本地化 ICL。
通过系统化的 ICL 技术与模板化、自动化工具链,Prompt Engineering 将从经验驱动迈向工程化与自动化,为大模型在各行业的落地提供可复制、可维护的关键方法。