当前位置: 首页 > news >正文

【Langchain大语言模型开发教程】评估

 🔗 LangChain for LLM Application Development - DeepLearning.AI

学习目标

1、Example generation

2、Manual evaluation and debug

3、LLM-assisted evaluation

4、LangChain evaluation platform

1、引包、加载环境变量;

import osfrom dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env filefrom langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
from langchain.document_loaders import CSVLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain.vectorstores import DocArrayInMemorySearch

2、加载数据;

file = 'OutdoorClothingCatalog_1000.csv'
loader = CSVLoader(file_path=file, encoding='utf-8')
data = loader.load()

3、创建向量数据库(内存警告⚠);

model_name = "bge-large-en-v1.5"
embeddings = HuggingFaceEmbeddings(model_name=model_name,
)db = DocArrayInMemorySearch.from_documents(data, embeddings)
retriever = db.as_retriever()

 4、初始化一个LLM并创建一个RetrievalQ链;

llm = ChatOpenAI(api_key=os.environ.get('ZHIPUAI_API_KEY'),base_url=os.environ.get('ZHIPUAI_API_URL'),model="glm-4",temperature=0.98)qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever,verbose=True,chain_type_kwargs = {"document_separator": "<<<<>>>>>"}
)

 Example generation

from langchain.evaluation.qa import QAGenerateChainexample_gen_chain = QAGenerateChain.from_llm(llm)new_examples = example_gen_chain.apply_and_parse([{"doc": t} for t in data[:5]]
)

这里我们打印一下这个生成的example,发现是一个列表长下面这个样子;


[{'qa_pairs': {'query': "What is the unique feature of the innersole in the Women's Campside Oxfords?", 'answer': 'The innersole has a vintage hunt, fish, and camping motif.'}}, {'qa_pairs': {'query': 'What is the name of the dog mat that is ruggedly constructed from recycled plastic materials, helping to keep dirt and water off the floors and plastic out of landfills?', 'answer': 'The name of the dog mat is Recycled Waterhog Dog Mat, Chevron Weave.'}}, {'qa_pairs': {'query': 'What is the name of the product described in the document that is suitable for Infant and Toddler Girls?', 'answer': "The product is called 'Infant and Toddler Girls' Coastal Chill Swimsuit, Two-Piece'."}}, {'qa_pairs': {'query': 'What is the primary material used in the construction of the Refresh Swimwear V-Neck Tankini, and what percentage of it is recycled?', 'answer': 'The primary material is nylon, with 82% of it being recycled nylon.'}}, {'qa_pairs': {'query': 'What is the material used for the EcoFlex 3L Storm Pants, according to the document?', 'answer': 'The EcoFlex 3L Storm Pants are made of 100% nylon, exclusive of trim.'}}]

所以这里我们需要进行一步提取;

for example in new_examples:examples.append(example["qa_pairs"])print(examples)qa.invoke(examples[0]["query"])

 Manual Evaluation

import langchain
langchain.debug = True #开始debug模式,查看chain中的详细步骤

 我们再次执行来查看chain中的细节;

 LLM-assisted evaluation

那我们是不是可以使用语言模型来评估呢;

langchain.debug = False #关闭debug模式from langchain.evaluation.qa import QAEvalChain

让大语言模型来为我们每个example来生成答案; 

predictions = qa.apply(examples)

我们初始化一个评估链;

eval_chain = QAEvalChain.from_llm(llm)

让大语言模型对实际答案和预测答案进行对比并给出一个评分;

graded_outputs = eval_chain.evaluate(examples, predictions)

最后,我们可以打印一下看看结果; 

for i, eg in enumerate(examples):print(f"Example {i}:")print("Question: " + predictions[i]['query'])print("Real Answer: " + predictions[i]['answer'])print("Predicted Answer: " + predictions[i]['result'])print("Predicted Grade: " + graded_outputs[i]['results'])print()

相关文章:

【Langchain大语言模型开发教程】评估

&#x1f517; LangChain for LLM Application Development - DeepLearning.AI 学习目标 1、Example generation 2、Manual evaluation and debug 3、LLM-assisted evaluation 4、LangChain evaluation platform 1、引包、加载环境变量&#xff1b; import osfrom dotenv imp…...

Python爬虫小项目实战

1.自动获取小说多个章节内容 2.获取英雄联盟里面的全部英雄 3. 简单地自动抽奖系统 4. 简单地点赞系统 5. 制作查询手机号工具 6. 制做登录系统 7. 操作excel办公自动化 8. 自动批量保存图片 9. 获取NBA数据 10. 获取彩票信息 11. 获取房地产信息 12. 获取小说…...

PHP Filesystem 简介

PHP Filesystem 简介 PHP 是一种广泛使用的开源服务器端脚本语言,特别适用于网页开发。在 PHP 中,Filesystem 是一个功能丰富的库,提供了一系列用于文件系统操作的函数。这些函数允许开发者读取、写入、修改和删除文件和目录,以及执行其他与文件系统相关的任务。 PHP Fil…...

源代码加密软件哪家好?五款企业级加密软件推荐

随着软件开发行业的快速发展&#xff0c;源代码作为核心资产&#xff0c;面临着越来越大的安全威胁。保护源代码不被泄露或盗用&#xff0c;是每个开发团队和企业都需要高度重视的问题。源代码加密软件通过对代码进行加密处理&#xff0c;确保其在传输和存储过程中保持机密性。…...

Redis常见的数据类型及操作方式

一、通用命令 1&#xff09;获取redis中所有key keys * 2&#xff09;删除一个或多个key del key1 key2 ... 3&#xff09;判断key是否存在 exists key 4&#xff09;给key添加过期时间 expire key time 5&#xff09;查看key剩余过期时间 ttl key 6) 查看redis内存…...

谷粒商城实战笔记-55-商品服务-API-三级分类-修改-拖拽数据收集

文章目录 一&#xff0c;拖拽后结点的parentCid的更新二&#xff0c;拖拽后结点的父节点下所有结点的sort排序属性的变化更新排序的逻辑代码分析 三&#xff0c;拖拽后结点及其子节点catLevel的变化判断是否需要更新 catLevel获取拖动后的新节点 更新 catLevel完整代码 这一节的…...

AI绘画入门实践|Midjourney:使用 --seed 制作情侣头像与漫画

在 Midjourney 中&#xff0c;seed 是指一个种子&#xff0c;用于生成图像时的起点或基础。 使用格式&#xff1a;--seed 获取的seed值 获取 seed 值 使用 seed 生成图像 a cute boys avatar, background with blue sky and white cloud, Ghibli Studio style, Hayao Miyazaki…...

笔记:Enum中FlagsAttribute特性的用法

一、目的&#xff1a;分享Enum中FlagsAttribute特性的用法 在C#中&#xff0c;Enum&#xff08;枚举&#xff09;类型可以使用[Flags]属性来表示一个枚举可以存储多个值。这是通过按位运算符&#xff08;如|&#xff08;或&#xff09;和&&#xff08;与&#xff09;&#…...

QWidget如何切换ui

在Qt中&#xff0c;QWidget及其子类用于构建图形用户界面。如果你想要在不同的UI之间切换&#xff0c;可以使用QStackedWidget&#xff0c;它可以管理一组QWidget&#xff0c;并且每次只显示其中一个。 以下是一个简单的例子&#xff0c;展示如何使用QStackedWidget切换UI&…...

web网站组成

web网站由四部分组成&#xff1a;浏览器 前端服务器 后端服务器 数据库服务器 流程&#xff1a; 1.浏览器输入网站后&#xff0c;向前端服务器发送请求&#xff0c;前端服务器响应&#xff0c;静态的数据给浏览器。 2.前端代码中script中有url,这个是向后台发送请求的网…...

带您详细了解安全漏洞的产生和防护

什么是漏洞&#xff1f; 漏洞是 IT、网络、云、Web 或移动应用程序系统中的弱点或缺陷&#xff0c;可能使其容易受到成功的外部攻击。攻击者经常试图寻找网络安全中的各种类型的漏洞来组合和利用系统。 一些最常见的漏洞&#xff1a; 1.SQL注入 注入诸如 SQL 查询之类的小代…...

【接口测试】params传参与body传参区别

文章目录 一.params传参二.body传参三.两者区别说明 一.params传参 params传参一般用于get请求 params传参时,参数会附于URL后面以问号形式展示。 示例&#xff1a; http://ip地址:端口号/login?usernamexm&pwd111二.body传参 body传参一般用于post请求 body传参时需…...

【docker】部署证书过期监控系统mouday/domain-admin

证书过期了再去部署证书容易被骂&#xff0c;就找了一个开源的证书过期系统来部署一下 过程 官方文档&#xff1a;https://domain-admin.readthedocs.io/zh-cn/latest/manual/install.html#docker 直接下载镜像是超时的&#xff0c;切换一下文档推荐的镜像源 新建docker配置…...

高级java每日一道面试题-2024年7月17日

面试官: java中都有哪些引用类型? 我回答: 强引用&#xff08;Strong Reference&#xff09; 描述&#xff1a;这是最常见和最直观的引用类型&#xff0c;我们通常在代码中创建的对象引用就是强引用。例如&#xff0c;Object obj new Object();。只要强引用存在&#xff0c;…...

css中如何清除浮动

在CSS中&#xff0c;可以使用clear:both属性来清除浮动。以下是几种常见的清除浮动的方法&#xff1a; 使用clearfix类&#xff1a;在CSS中定义一个clearfix类&#xff0c;并将其应用于需要清除浮动的父元素上。 .clearfix::after {content: "";display: table;cle…...

【网络】tcp_socket

tcp_socket 一、tcp_server与udp_server一样的部分二、listen接口&#xff08;监听&#xff09;三、accept接收套接字1、为什么还要多一个套接字&#xff08;明明已经有了个socket套接字文件了&#xff0c;为什么要多一个accept套接字文件&#xff1f;&#xff09;2、底层拿到新…...

Live555源码阅读笔记:哈希表的实现

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

vue3创建vite项目

一、创建vue3 vite项目&#xff1a; 命令行创建&#xff1a;npm create vitelatest vue3-tdly-demo -- --template vue (1)先进入项目文件夹&#xff0c;cd vue3-tdly-demo (2)之后执行&#xff0c; npm install (3)最后运行&#xff0c;npm run dev 将main.js文件内容改成…...

Maven概述

目录 1.Maven简介 2.Maven开发环境搭建 2.1下载Maven服务器 2.2安装&#xff0c;配置Maven 1.配置本地仓库地址 2.配置阿里云镜像地址 2.3在idea中配置maven 2.4在idea中创建maven项目 3.pom.xml配置 1.项目基本信息 2.依赖信息 3.构建信息 4.Maven命令 5.打包Jav…...

Easyu中datagrid点击时获取所在行的数据

问题 双击单元格时&#xff0c;获取该行的记录内容 $(#list).datagrid({method: post,url: user/list,queryParams:{sex : "f",age : "18~25"},fitColumns: true,pageList: [ 5, 10, 15, 20 ],singleSelect: false,pagination: true,fit: true,rownumber…...

抖音音频提取工具 v1.0 - 快速提取抖音视频音频

抖音音频提取工具 v1.0 是可快速提取抖音短视频音频并保存本地的实用工具&#xff0c;依托 WebView2 与 FFmpeg 技术实现&#xff0c;操作简单易上手&#xff0c;能满足车机播放等个人娱乐音频使用需求&#xff0c;工具仅支持个人娱乐使用。抖音音频提取工具 v1.0 抖音短视频音…...

告别B站评论区识人难题!这个免费工具让你一键掌握用户背景

告别B站评论区识人难题&#xff01;这个免费工具让你一键掌握用户背景 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分&#xff0c;支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker …...

谈谈你对springAop动态代理的理解?

面试 你要调用目标方法&#xff0c;不直接调用&#xff0c;而是交给代理对象&#xff0c;代理对象会先做额外功能&#xff0c;再调用原方法&#xff0c;最后再收尾。 至于叫动态代理的原因&#xff0c;是因为这个代理不是你手动写死的&#xff0c;而是程序在运行期间动态生成…...

为什么你的Mojo-Python FFI在M1芯片上必崩?苹果Silicon专属ABI陷阱与跨架构符号绑定修复指南(含Clang插件源码)

第一章&#xff1a;为什么你的Mojo-Python FFI在M1芯片上必崩&#xff1f;Mojo-Python FFI&#xff08;Foreign Function Interface&#xff09;在 Apple M1 及后续 ARM64 架构芯片上崩溃&#xff0c;根源并非配置疏忽&#xff0c;而是底层 ABI 不兼容与运行时符号解析机制的双…...

告别“替身攻击”:手把手教你用零阶优化(ZOO)直接黑盒攻击DNN模型

零阶优化实战&#xff1a;无需替代模型的黑盒对抗攻击指南 当面对一个部署在云端的深度学习API时&#xff0c;传统白盒攻击手段往往束手无策——既无法获取模型架构&#xff0c;也不能执行反向传播。本文将揭示如何运用零阶优化技术&#xff0c;仅通过输入输出查询就能构造高效…...

什么是分段锁

面试 线程只锁自己要用的那一段代码&#xff0c;不同段可以同时操作。这样可以减少锁竞争、提高并发。...

feishu2md:飞书文档转Markdown的技术实现与架构解析

feishu2md&#xff1a;飞书文档转Markdown的技术实现与架构解析 【免费下载链接】feishu2md 一键命令下载飞书文档为 Markdown 项目地址: https://gitcode.com/gh_mirrors/fe/feishu2md 飞书文档转Markdown工具feishu2md为技术团队提供了文档格式转换的标准化解决方案。…...

cv_unet_image-colorization模型压缩与量化:面向移动端的部署优化

cv_unet_image-colorization模型压缩与量化&#xff1a;面向移动端的部署优化 想把那个能把黑白照片变彩色的AI模型塞进手机里&#xff1f;这听起来挺酷&#xff0c;但实际操作起来&#xff0c;你会发现它又大又慢&#xff0c;手机根本跑不动。这就像你想把一台高性能游戏电脑…...

Save Image as Type:终极Chrome图片格式转换指南,三步快速解决网页图片格式不兼容难题

Save Image as Type&#xff1a;终极Chrome图片格式转换指南&#xff0c;三步快速解决网页图片格式不兼容难题 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址:…...

告别定位漂移:用Python手把手实现GNSS载波相位平滑伪距(附代码)

告别定位漂移&#xff1a;用Python手把手实现GNSS载波相位平滑伪距&#xff08;附代码&#xff09; 在无人机自主飞行或自动驾驶小车导航时&#xff0c;你是否遇到过这样的困扰&#xff1a;明明设备静止不动&#xff0c;地图上的定位点却像喝醉酒一样左右摇摆&#xff1f;这种&…...