langchain系列 - FewShotPromptTemplate 少量示例

导读

环境:OpenEuler、Windows 11、WSL 2、Python 3.12.3 langchain 0.3

背景:前期忙碌的开发阶段结束,需要沉淀自己的应用知识,过一遍LangChain

时间:20250220

说明:技术梳理,针对FewShotPromptTemplate专门来写一篇博客

概念说明

few-shot最初来源于机器学习的概念,还有one-shot、zero-shot概念,概念如下:

机器学习中的概念

Zero-Shot学习

在训练集中没有某个类别的样本,但在测试集中出现了这个类别。我们需要模型在训练过程中,即使没有接触过这个类别的样本,但仍然可以通过对这个类别的描述,对没见过的类别进行分类。

One-Shot学习

可以理解为用一条数据fine-tune模型。例如,在人脸识别场景里,你只提供一张照片,门禁就能认识各个角度的你。属于Few-Shot学习的特例。

Few-Shot学习

在模型训练过程中,如果每个类别只有少量样本(一个或几个),研究人员希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习。

LangChain中的概念

zero-shot

仅通过提示词即可实现模型正确回答

one-shot

通过一个示例和提示词模型正确回答

few-shot

通过少量(大于1)示例和提示词模型正确回答

参数说明

examples

Optional[list[dict]] = None
示例格式化到提示词中,应提供examples 或 example_selector。

example_selector

Optional[BaseExampleSelector] = None

ExampleSelector 选择要格式化到提示符中的示例,应提供examples 或 example_selector。

validate_template

bool = False

是否尝试验证模板。

example_prompt

PromptTemplate

PromptTemplate 用于格式化单个示例。"

suffix

str

要放在示例后面的提示模板字符串。

example_separator

str = "\n\n"

用于连接前缀、示例和后缀的字符串分隔符。

prefix

str = ""

要放在示例前面的提示模板字符串。

template_format

Literal["f-string", "jinja2"] = "f-string"

提示模板的格式。选项包括:'f-string', 'jinja2'。

代码实战

 使用少量示例的prompt和大模型实现分类的功能

from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate# 示例
examples = [{"question": "下面两个动物是同一种类吗?\n1:拉布拉多\n2:哈士奇","answer": "是"},{"question": "下面两个动物是同一种类吗?\n1:草鱼\n2:鲸鱼","answer": "不是"}
]# 示例提示
example_prompt = PromptTemplate(template="Question: {question}\n{answer}")# 整合后的提示词的前缀
prefix = "你是一个生物学家,判断用户提问的动物种类回答,就判断为同一种类, 回答'是',反之回答'不是'。\n下面是一些示例:"# 整合后的提示词的前缀
suffix = "Question: {input}"# 通过FewShotPromptTemplate整合提示词
prompt = FewShotPromptTemplate(prefix=prefix,examples=examples,example_prompt=example_prompt,suffix=suffix,# input_variables=["input"] # 可省略
)print(prompt.invoke("下面两种动物是同一种类吗?\n1:波斯猫\n2:英国短毛").to_string())# 输出
你是一个生物学家,判断用户提问的动物种类回答,就判断为同一种类, 回答'是',反之回答'不是'。
下面是一些示例:Question: 下面两个动物是同一种类吗?
1:拉布拉多
2:哈士奇
是Question: 下面两个动物是同一种类吗?
1:草鱼
2:鲸鱼
不是Question: 下面两种动物是同一种类吗?
1:波斯猫
2:英国短毛

 显然,promptvalue将提示词按照规则整合在一起了,并将用户提问放在最后

下面看下配置大模型后运行结果

from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate
from langchain_openai import ChatOpenAI# 示例
examples = [{"question": "下面两个动物是同一种类吗?\n1:拉布拉多\n2:哈士奇","answer": "是"},{"question": "下面两个动物是同一种类吗?\n1:草鱼\n2:鲸鱼","answer": "不是"}
]# 示例提示
example_prompt = PromptTemplate(template="Question: {question}\n{answer}")# 整合后的提示词的前缀
prefix = "你是一个生物学家,判断用户提问的动物种类回答,就判断为同一种类, 回答'是',反之回答'不是'。\n下面是一些示例:"# 整合后的提示词的前缀
suffix = "Question: {input}"# 通过FewShotPromptTemplate整合提示词
prompt = FewShotPromptTemplate(prefix=prefix,examples=examples,example_prompt=example_prompt,suffix=suffix,# input_variables=["input"] # 可省略
)
# 大模型信息
# translate_llm = ChatOpenAI(base_url="https://llm.xxx.xxxx.com/v1/",openai_api_key="sk-xxxxxxxxxx",model_name="qwen2.5-instruct")translate_llm = ChatOpenAI(**llm_info)
translate_llm =  prompt | translate_llminput5 = "下面两种动物是同一种类吗?\n1:波斯猫\n2:英国短毛"response = translate_llm.invoke(input5)
print(response.content)# 输出
是注:虽然波斯猫和英国短毛猫是两种不同的猫品种,但它们同属于家猫(Felis catus),因此可认为是同一种类。

结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22622.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HackTools插件+反弹shell的27种方法

前言 在渗透测试过程中,我们往往要使用很多命令,比如反弹shell、xss测试语句、sql测试语句、Linux常用提权语句、PowerShell常用语句。 为了方便,这里给大家推荐一个插件:HackTools,里面涵盖了渗透测试各种常用的语句…

Java语法-IO流

Java语法 Java基础语法 IO流 一、File类 /* java.io.File 文件类 提供了用于操作文件 创建文件 获取文件信息等 各种文件相关的方法 exists() 判断文件或目录是否存在 boolean isFile() 判断是否是文件 boolean isDirectory() 判断是否是目录 String getPath(…

Microsoft Office 2024 软件安装教程(免费)

1.通过百度网盘下载Microsoft Office 2024安装包 下载地址为: https://pan.baidu.com/s/1jk1kvQsKFH9dZGF5xfGgiQ?pwdjbkv 提取码: jbkv 。 2.安装环境 Win10~Win11或更高。 3.安装步骤 (1)下载压缩包,解压缩。 (2&#xf…

鸿蒙NEXT应用App测试-专项测试(DevEco Testing)

注意:大家记得先学通用测试在学专项测试 鸿蒙NEXT应用App测试-通用测试-CSDN博客 注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注…

【学习笔记】【SpringCloud】MybatisPlus 基础使用

目录 一、使用 MybatisPlus 基本步骤 1. 引入 MybatisPlus 依赖 2. 定义Mapper接口并继承BaseMapper 二、MybatisPlus 常用配置 三、自定义SQL 四、IService 接口 1. 批量新增的效率问题 2. 配置方式 五、插件功能 1. 分页插件 一、使用 MybatisPlus 基本步骤 1. 引…

球队训练信息管理系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装球队训练信息管理系统软件来发挥其高效地信息处理的作用&a…

使用Dify将AI机器人嵌入到你的前端页面中及chrome的扩展应用

目录 1 博主有话说2 前提环境3 Dify创建个聊天助手应用4 将AI聊天机器人嵌入到html中5 将AI聊天机器人设置为chrome的扩展应用6 博主增语 1 博主有话说 那博主话不多说,先展示一下成果! 这个界面是使用dify配置的一个“聊天助手”的应用,助…

Oracle JDK、Open JDK zulu下载地址

一、Oracle JDK https://www.oracle.com/java/technologies/downloads/ 刚进去是最新的版本,往下滑可以看到老版本 二、Open JDK的 Azul Zulu https://www.azul.com/downloads/ 直接可以选版本等选项卡

PiscTrace开发者版:只需考虑算法的视图处理应用

在计算机视觉领域,处理图像和视频数据的需求日益增长。无论是在智能监控、自动驾驶,还是工业检测中,图像处理都扮演着至关重要的角色。基于 OpenCV 的视图处理工具,专为需要高度定制和精确图像处理的开发者而设计。 一、CodeTrac…

线性回归 (Linear Regression)基础知识1

本章节主要介绍:回归任务简介、线性回归模型、回归任务的损失函数 *回归任务*机器学习的三要素线性回归线性回归模型 *数据分析*散点图*相关性系数矩阵 *拓展知识:相关性系数矩阵定义计算相关性系数矩阵示例应用 线性回归的损失函数回归任务目标函数&…

直角三角堰计算公式

直角三角堰的计算公式通常用于确定流经直角三角形形状的堰的流量。河北瑾航科技遥测终端机 通过采集液位数据(模拟量、串口485/232),计算得到瞬时流量,然后通过积分进行累计算出累积量;直角三角堰的流量计算公式为: 直角三角堰 计…

《深度学习实战》第2集:卷积神经网络(CNN)与图像分类

《深度学习实战》第2集:卷积神经网络(CNN)与图像分类 引言 卷积神经网络(Convolutional Neural Network, CNN)是深度学习在计算机视觉领域的核心工具。从早期的 LeNet 到现代的 ResNet 和 Vision Transformer&#xf…

github 怎么创建一个私有repository 并从另外一台电脑拉取下来更新

1.github上新建一个repository 设置为private tips删除在这 点setting 然后往下拖动 会有个这里是用来删项目的 2.另外 一台电脑拉取这个repository的时候 需要配置 一个ssh key 这个key的内容生成参考本地电脑的生成 然后在这配置 2.1 生成 SSH 密钥(如果还没有…

deepseek自动化代码生成

使用流程 效果第一步:注册生成各种大模型的API第二步:注册成功后生成API第三步:下载vscode在vscode中下载agent,这里推荐使用cline 第四步:安装完成后,设置模型信息第一步选择API provider: Ope…

分布式事务-本地消息表学习与落地方案

本文参考: 数据库事务系列04-本地消息表实现分布式事务 基础概念 本地消息表实现分布式事务最终一致性的核心:是通过上游本地事务的原子性持久性,配合中间件的重试机制,从而实现调用下游的最终一致性。 这里有几个要点可以解析一…

亚马逊云科技 re:Invent 2023:科技前沿风向标,探索未来云计算之窗

文章目录 一、前言二、什么是亚马逊云科技 re:Invent?三、亚马逊云科技 re:Invent 2023 将于何时何地举行四、亚马逊云科技 re:Invent 2023 有什么内容?4.1 亚马逊云科技 re:Invent 2023 主题演讲4.2 亚马逊云科技行业专家探实战 五、更多亚马逊云科技活…

C++——list模拟实现

目录 前言 一、list的结构 二、默认成员函数 构造函数 析构函数 clear 拷贝构造 赋值重载 swap 三、容量相关 empty size 四、数据访问 front/back 五、普通迭代器 begin/end 六、const迭代器 begin/end 七、插入数据 insert push_back push_front 八、…

虚拟机从零实现机器人控制

1. 系统安装 因Docker不适合需要图形界面的开发,因此使用虚拟机VMware方便可视化界面方式查看效果,相关软件可以从官网下载,这里有一整套免费安装文件百度网盘地址: 2. ROS安装 Ubuntu 22.04:https://docs.ros.org…

【Blender】二、建模篇--06,曲线建模/父子级和蒙皮修改器

00:00:03,620 --> 00:00:09,500 前几节可能我们已经做了很多种类型的模型了 但是有一种类型 我们一直避开就是这种管道 1 00:00:10,050 --> 00:00:19,370 藤条头发啊 衣服架子啊这种弯弯绕绕的 需要一定柔软度的模型 那么这节课呢我们都来集中看一下曲线的模型 我们应该…

机器学习实战(7):聚类算法——发现数据中的隐藏模式

第7集:聚类算法——发现数据中的隐藏模式 在机器学习中,聚类(Clustering) 是一种无监督学习方法,用于发现数据中的隐藏模式或分组。与分类任务不同,聚类不需要标签,而是根据数据的相似性将其划…