我正在参加「豆包MarsCode AI练中学体验活动」详情请看:掘金小册上线 AI练中学功能 | 你的 AI 编程助教喊你免费领小册啦!
FewShot与LangChain
前天初步了解了langchain的prompt工程,今天重点了解一下其中的FewShot
1. FewShotPromptTemplate的概念与应用
- FewShotPromptTemplate 是LangChain中用于少样本学习的提示模板。它通过提供几个示例来引导模型理解任务,并生成正确的响应。
- 这种模板特别适合于那些我们无法获取大量标签化数据的场景,通过少量的示例来“教会”模型如何完成任务。
碎碎念(一点点个人感悟):这便是一种“少即是多”的智慧。在数据稀缺的情况下,如何巧妙地选择和构造示例变得至关重要。通过这种方式,我们可以有效地利用有限的资源,激发模型的潜能,实现更精准的响应。
2. 示例的选择与优化
- 在FewShot学习中,示例的选择对于模型性能有着直接的影响。LangChain提供了示例选择器(ExampleSelector),可以根据语义相似度选择最合适的样本。
- 使用示例选择器可以显著减少传递给模型的Token数量,节省成本并提高效率。
具体代码为
# 初始化示例选择器
# 从示例中初始化语义相似性示例选择器
example_selector = SemanticSimilarityExampleSelector.from_examples(
# 示例列表
samples,
# 使用豆包嵌入模型计算语义相似度
DoubaoEmbeddings(
# 从环境变量中获取嵌入模型名称
model=os.environ.get("EMBEDDING_MODELEND"),
),
# 使用 Chroma 向量数据库存储和检索示例
Chroma,
# 选择最相似的 k 个示例
k=1,
)
通过示例选择器,能够帮助大模型更好优化性能。因为在FewShot学习中,示例选择器可以帮助选择最有代表性的样本(而不是全部样本),以教导模型如何执行新任务。
当然,因为我们只输入了一个样本,那么消耗的token也相对减少了,如图
3. FewShotPromptTemplate的实际应用
FewShot学习提供了一种高效的学习方式,我们只需要选取一个最匹配的示例让大模型学习推理即可。极大的优化了性能。FewShot已经在以下典型的应用场景中铺开了——
- 聊天机器人:在构建聊天机器人时,示例选择器可以用来挑选与用户输入最相关的对话历史,以生成更自然的回复。
- 文本生成:在文本生成任务中,示例选择器可以用来挑选与生成任务最相关的文本片段,以生成更符合预期的文本。
- 医疗诊断: 在医疗诊断中,示例选择器可以从病人的医疗记录中挑选最相关的病例信息,以辅助医生做出更准确的诊断。
最相关是FewShot的精髓所在!
总结
FewShotPrompt工程与LangChain的学习让我对少样本学习有了更深入的理解。通过智能选择最相关的示例来优化模型的输入,提高模型的性能和效率。