【Langchain实践】Few-shot examples for chat models 学习记录

构建向量存储

知识库examples是一个列表,列表元素是字典。与输入相关的文本放在from_text函数的第一个参数。embedding是嵌入模型,这部分如何使用本地模型,参考上一篇博客。metadatas是原始数据,也就是知识库。

to_vectorize = [" ".join(example.values()) for example in examples]
vectorstore = FAISS.from_texts(to_vectorize,embedding,metadatas=examples)

构建chat prompt的模版

首先要导入相关的库,ChatPromptTemplate和FewShotChatMessagePromptTemplate。
接着是选择器,选择器的构建在上一篇也有提到,这里采用的是语义相似度选择器,向量数据库是前一步构造的,k是返回的数量。
最后是构造chatprompt模版,人类输入是知识库中的对应的输入,ai输出是知识库对应的输出,字段要对应。
ChatPromptTemplate格式要正确。

from langchain_core.prompts import (ChatPromptTemplate,FewShotChatMessagePromptTemplate,
)example_selector = SemanticSimilarityExampleSelector(vectorstore=vectorstore,k=2,
)# Define the few-shot prompt.
few_shot_prompt = FewShotChatMessagePromptTemplate(# The input variables select the values to pass to the example_selectorinput_variables=["prompt"],example_selector=example_selector,# Define how each example will be formatted.# In this case, each example will become 2 messages:# 1 human, and 1 AIexample_prompt=ChatPromptTemplate.from_messages([("human", "{prompt}"), ("ai", "{response}")]),
)
# few_shot_prompt.format(prompt = "端口开放为80的资产")final_prompt = ChatPromptTemplate.from_messages([("system", system_prompt),few_shot_prompt,("human", "{prompt}"),]
)
final_prompt.format(prompt="test yourself")

加载本地Chat模型

使用HuggingFacePipeline来加载从Huggingface上下载的模型。


# 使用本地模型进行交互
from langchain_community.llms.huggingface_pipeline import HuggingFacePipeline
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline# 模型的id或者本地路径
model_id = "Qwen1.5-14B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=10)
hf = HuggingFacePipeline(pipeline=pipe)

与模型交互

与模型交互是一种链式的形式,数据从前往后传递。


chain = final_prompt | hfquestion = "Love yourself!"print(chain.invoke({"prompt": question}))

参考

[1] langchain官方文档 https://python.langchain.com/v0.1/docs/modules/model_io/prompts/few_shot_examples_chat/
[2] langchain官方文档 https://python.langchain.com/v0.1/docs/integrations/llms/huggingface_pipelines/

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

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

相关文章

C#:求解出n以内所有能被5整除的正整数的乘积

任务描述 本关任务:求解出n以内(包含n)所有能被5整除的正整数数的乘积s。 输入 从键盘输入一个正整数n,输入的n不超过100。 输出 对于每个样例n,输出n以内(包含n)所有能被5整除的正整数的乘积。 样例输入 19 ####样…

[鸟哥私房菜]4.首次登录与在线求助

第4章 首次登录与在线求助 4.1.3 X Window 与命令行模式的切换 通常我们称命令行界面为终端界面、Terminal 或 Console。Linux 默认的情况下会提供六个终端(Terminal)来让用户登录, 切换的方式为使用:[Ctrl] [Alt] [F1]~[F6] …

折腾记:C++用开源库Snap7通过S7协议连接西门子PLC

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 不是教程,是避坑指…

2022年知识付费小程序案例分享资料,海量收录.完整版,线上销售沟通的技巧和方法,怎么进行沟通?

现在是互联网时代,很多购物平台和知识付费平台在网上全面开花,因此也诞生了销售员的工作也从线下转到了线上。线上销售毕竟不同于线下销售,想要将产品卖出去,沟通的技巧和方式也很重要。 一、 线上销售沟通前的准备 1、 心理上的准…

‘ChatGLMTokenizer‘ object has no attribute ‘sp_tokenizer‘

问题 ‘ChatGLMTokenizer’ object has no attribute ‘sp_tokenizer’ 解决方案 将self.sp_tokenizer SPTokenizer(vocab_file, num_image_tokensnum_image_tokens)移动到super().init()前面 self.sp_tokenizer SPTokenizer(vocab_file, num_image_tokensnum_image_token…

TypeScript学习日志-第十七天(泛型约束)

泛型约束 当我们使用泛型时非常方便,但是在使用的过程中也会遇到很多问题,如图: 这时候就会提示错误,因为返回的是相加的值,但是不是所有的类型都能相加的,例如来个undefined类型的 就不能进行相加了&…

回顾5款我非常喜欢的软件,希望大家也能喜欢

​ 我喜欢分享好软件,这就像与老友聊天一样让我感到快乐。在这个过程中,我可以回顾这些实用的小工具,也希望它们可以帮助到更多人。 1.备份工具——Cobian Backup ​ Cobian Backup是一款功能强大的备份软件,支持自动定时备份、增量备份、差异备份等多种备份方式。…

知识付费系统 设计,课程顾问怎么跟家长微信互动?这样去维护客户

当今天下,营销方式层出不穷,可是有些机构比较保守,始终坚持自己独有的一套模式,并且屡试不爽,今天,小编就带着大家一起来聊一聊课程顾问怎么跟家长微信互动。 维系客户客户有三个方面: 1:微信私…

7-66 按层遍历二叉树

用先序和中序序列构造一棵二叉树(树中结点个数不超过10个),通过用队记录结点访问次序的方法实现对二叉树进行按层遍历,即按层数由小到大、同层由左到右输出按层遍历序列。 输入格式: 第一行输入元素个数 第二行输入先序序列,以空格隔开 第三行输入中序序列,以空格隔开…

wePWNise:一款功能强大的红队Office宏VBA代码生成工具

关于wePWNise wePWNise是一款功能强大的Office宏VBA代码生成工具,该工具基于纯Python开发,可以帮助广大研究人员生成用于Office宏或模版的VBA代码,并以此来测试目标Office环境、应用程序控制和防护机制的安全性。 wePWNise的设计理念将自动化…

libcity 笔记:基本使用方法

介绍 — Bigscity-LibCity 文档 (bigscity-libcity-docs.readthedocs.io) 1 介绍 一个统一、全面、可扩展的代码库,为交通预测领域提供了一个可靠的实验工具和便捷的开发框架目前支持 交通状态预测 交通流量预测 交通速度预测 交通需求预测 起点-终点&#xff…

宽电压降压恒压DC-DC 电源管理芯片

产品描述 AP8851L 一款宽电压范围降压型 DC-DC 电源管理芯片,内部集成使能 开关控制、基准电源、误差放大器、过 热保护、限流保护、短路保护等功能, 非常适合在宽输入电压范围具有优良 的负载和线性调整度。 AP8851L 芯片包含每周期的峰值 限流、软启…

Telnet协议:远程控制的基石

目录 1. 概述 2. 工作机制 3. 网络虚拟终端 4. 选项协商 5. 操作方式 6. 用户接口命令 7. 验证的过程 1. 概述 Telnet(Telecommunication Network)是一种用于在互联网上远程登录到计算机系统的标准协议。它早期被广泛用于远程终端连接&#xff0…

Baidu Comate智能编码助手:大学生的代码编写助手

Baidu Comate智能编码助手:大学生的代码编写助手 前言一、关于Baidu Comate智能编码助手1.1 Baidu Comate智能编码助手简介1.2 产品功能 二、安装使用(本文以pycharm为例)三、我的百度Comate之旅3.1智能推荐3.1.1 单行推荐3.1.2 多行推荐 3.2…

理解Java类加载与对象创建顺序

在Java编程中,理解类加载和对象创建的顺序是非常重要的。这个过程涉及到静态代码块、静态成员变量、实例代码块以及构造器的执行顺序。在本文中,我们将深入探讨Java中类加载和对象创建的顺序,并通过示例代码来加深理解。 类加载顺序 首先&a…

pg数据库学习知识要点分析-1

知识要点1 对象标识OID 在PostgreSQL内部,所有的数据库对象都通过相应的对象标识符(object identifier,oid)进行管理,这些标识符是无符号的4字节整型。数据库对象与相应oid 之间的关系存储在对应的系统目录中&#xf…

AI论文速读 |2024[IJCAI]TrajCL: 稳健轨迹表示:通过因果学习隔离环境混杂因素

题目: Towards Robust Trajectory Representations: Isolating Environmental Confounders with Causal Learning 作者:Kang Luo, Yuanshao Zhu, Wei Chen, Kun Wang(王琨), Zhengyang Zhou(周正阳), Sijie Ruan(阮思捷), Yuxuan Liang(梁宇轩) 机构&a…

SAP-PP-MM特殊库存的生产发料

如果有个物料是在特殊库存E,那么往生产订单发料是如何确定哪一个组件消耗这个特殊库存呢? 在生产订单中有哪些标记确定特殊库存?确定销售订单和行项目? 通过上图可以看到特殊库存标记1,也就是单独客户库存。 其他的特…

UVa11865 Stream My Contest

UVa11865 Stream My Contest 题目链接题意输入格式输出格式 分析朱-刘算法 不固定根的最小树形图求法AC 代码 题目链接 UVA - 11865 Stream My Contest 题意 你需要花费不超过cost元来搭建一个比赛网络。网络中有n台机器,编号为0~n-1,其中机器0为服务器…

洗地机什么品牌好?洗地机怎么选?618洗地机选购指南

随着科技的飞速发展,洗地机以其高效的清洁能力、稳定的性能和用户友好的设计而闻名,不仅可以高效吸尘、拖地,还不用手动洗滚布,已经逐渐成为现代家庭不可或缺的清洁助手。然而,在众多品牌和型号中,如何选择…