FewShot与LangChain

40 阅读3分钟

我正在参加「豆包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也相对减少了,如图

{59EEA4BC-F238-494D-A009-3159642EF7E0}.png

3. FewShotPromptTemplate的实际应用

FewShot学习提供了一种高效的学习方式,我们只需要选取一个最匹配的示例让大模型学习推理即可。极大的优化了性能。FewShot已经在以下典型的应用场景中铺开了——

  • 聊天机器人:在构建聊天机器人时,示例选择器可以用来挑选与用户输入最相关的对话历史,以生成更自然的回复。
  • 文本生成:在文本生成任务中,示例选择器可以用来挑选与生成任务最相关的文本片段,以生成更符合预期的文本。
  • 医疗诊断: 在医疗诊断中,示例选择器可以从病人的医疗记录中挑选最相关的病例信息,以辅助医生做出更准确的诊断。

最相关是FewShot的精髓所在!

总结

FewShotPrompt工程与LangChain的学习让我对少样本学习有了更深入的理解。通过智能选择最相关的示例来优化模型的输入,提高模型的性能和效率。