LangChain-Evaluation—如何评估LLM及其应用(三)

news2024/11/13 11:05:54

省流:目前没有真正完美的解决方案,比如分类有精度这样接近完美的评估方案,但LLM目前没有 

This section of documentation covers how we approach and think about evaluation in LangChain. Both evaluation of internal chains/agents, but also how we would recommend people building on top of LangChain approach evaluation.

问题所在

评估LangChain链和代理可能真的很难。 这主要有两个原因:

#1:缺乏数据

在开始项目之前,您通常没有大量数据来评估您的链/代理。 这通常是因为大型语言模型(大多数链/代理的核心)是出色的少镜头(few-shot)和零镜头(zero-shot)学习者, 这意味着您几乎总是能够开始执行特定任务(文本到SQL,问答等),而无需示例的大型数据集。 这与传统的机器学习形成鲜明对比,在传统的机器学习中,你必须首先收集一堆数据点。 甚至在开始使用模型之前。

#2:缺少指标

大多数链/代理正在执行没有很好的指标来评估性能的任务。 例如,最常见的用例之一是生成某种形式的文本。 评估生成的文本比评估分类预测或数值预测要复杂得多。

解决方案

LangChain试图解决这两个问题。 到目前为止,我们所拥有的只是解决方案的初步通过 - 我们认为我们没有完美的解决方案 因此,我们非常欢迎对此的反馈、贡献、集成和想法。

以下是到目前为止我们对每个问题的看法:

#1:缺乏数据

我们已经启动了LangChainDatasets,这是一个关于拥抱脸的社区空间。 我们打算将其作为用于评估常见链和代理的开源数据集的集合 我们首先贡献了五个自己的数据集,但我们非常希望这是社区的努力。 为了贡献数据集,您只需加入社区,然后您就可以上传数据集。

我们还致力于让人们尽可能轻松地创建自己的数据集。 作为第一步,我们添加了一个QAGenerationChain,它给出了一个文档。 具有可用于评估该文档的问答任务的问答对。

#2:缺少指标

我们对缺乏度量指标有两个解决方案。第一个方案是不使用度量指标,而是仅依赖肉眼观察结果,以便了解链/代理的性能。为了协助这一点,我们已经开发了基于UI的可视化器tracing,用于追踪链和代理运行。

我们建议的第二个解决方案是使用语言模型本身来评估输出。为此,我们有几个不同的链和提示,旨在解决这个问题。蓝框标记部分问答应该是针对LLM本身的问答能力,数据增强型问答是针对评估特定文档的问答系统。

数据增强问答 # – LangChain中文网 //代码在这个链接中

我自己的例子:

等待开发中... 敬请期待

使用其他指标评估 Evaluate with Other Metrics #

除了使用语言模型预测答案是正确还是不正确之外,我们还可以使用其他指标来获得对答案质量的更细致入微的看法。为此,我们可以使用Critique库Critique(opens in a new tab) ,它允许对生成的文本进行各种指标的简单计算。

首先,您可以从 Inspired Cognition Dashboard(opens in a new tab) 获取API密钥并进行一些设置:

export INSPIREDCO_API_KEY="..."pip install inspiredco 
import inspiredco.critiqueimport oscritique = inspiredco.critique.Critique(api_key=os.environ['INSPIREDCO_API_KEY']) 

然后运行以下代码来设置配置并计算ROUGE(opens in a new tab) 、chrf(opens in a new tab) 、BERTScore(opens in a new tab)和UniEval(opens in a new tab)(您也可以选择其他other metrics(opens in a new tab) 指标):

metrics = {    "rouge": {        "metric": "rouge",        "config": {"variety": "rouge_l"},    },    "chrf": {        "metric": "chrf",        "config": {},    },    "bert_score": {        "metric": "bert_score",        "config": {"model": "bert-base-uncased"},    },    "uni_eval": {        "metric": "uni_eval",        "config": {"task": "summarization", "evaluation_aspect": "relevance"},    },} 
critique_data = [    {"target": pred['result'], "references": [pred['answer']]} for pred in predictions]eval_results = {    k: critique.evaluate(dataset=critique_data, metric=v["metric"], config=v["config"])    for k, v in metrics.items()} 

最后,我们可以打印出结果。我们可以看到,总体而言,当输出在语义上正确时,以及当输出与黄金标准答案紧密匹配时,得分更高。

for i, eg in enumerate(examples):    score_string = ", ".join([f"{k}={v['examples'][i]['value']:.4f}" for k, v in eval_results.items()])    print(f"Example {i}:")    print("Question: " + predictions[i]['query'])    print("Real Answer: " + predictions[i]['answer'])    print("Predicted Answer: " + predictions[i]['result'])    print("Predicted Scores: " + score_string)    print() 
Example 0:Question: What did the president say about Ketanji Brown JacksonReal Answer: He praised her legal ability and said he nominated her for the supreme court.Predicted Answer:  The president said that she is one of the nation's top legal minds, a former top litigator in private practice, a former federal public defender, and from a family of public school educators and police officers. He also said that she is a consensus builder and that she has received a broad range of support from the Fraternal Order of Police to former judges appointed by both Democrats and Republicans.Predicted Scores: rouge=0.0941, chrf=0.2001, bert_score=0.5219, uni_eval=0.9043 Example 1:Question: What did the president say about Michael JacksonReal Answer: NothingPredicted Answer:  The president did not mention Michael Jackson in this speech.Predicted Scores: rouge=0.0000, chrf=0.1087, bert_score=0.3486, uni_eval=0.7802 Example 2:Question: According to the document, what did Vladimir Putin miscalculate?Real Answer: He miscalculated that he could roll into Ukraine and the world would roll over.Predicted Answer:  Putin miscalculated that the world would roll over when he rolled into Ukraine.Predicted Scores: rouge=0.5185, chrf=0.6955, bert_score=0.8421, uni_eval=0.9578 Example 3:Question: Who is the Ukrainian Ambassador to the United States?Real Answer: The Ukrainian Ambassador to the United States is here tonight.Predicted Answer:  I don't know.Predicted Scores: rouge=0.0000, chrf=0.0375, bert_score=0.3159, uni_eval=0.7493 Example 4:Question: How many countries were part of the coalition formed to confront Putin?Real Answer: 27 members of the European Union, France, Germany, Italy, the United Kingdom, Canada, Japan, Korea, Australia, New Zealand, and many others, even Switzerland.Predicted Answer:  The coalition included freedom-loving nations from Europe and the Americas to Asia and Africa, 27 members of the European Union including France, Germany, Italy, the United Kingdom, Canada, Japan, Korea, Australia, New Zealand, and many others, even Switzerland.Predicted Scores: rouge=0.7419, chrf=0.8602, bert_score=0.8388, uni_eval=0.0669 Example 5:Question: What action is the U.S. Department of Justice taking to target Russian oligarchs?Real Answer: The U.S. Department of Justice is assembling a dedicated task force to go after the crimes of Russian oligarchs and joining with European allies to find and seize their yachts, luxury apartments, and private jets.Predicted Answer:  The U.S. Department of Justice is assembling a dedicated task force to go after the crimes of Russian oligarchs and to find and seize their yachts, luxury apartments, and private jets.Predicted Scores: rouge=0.9412, chrf=0.8687, bert_score=0.9607, uni_eval=0.9718 Example 6:Question: How much direct assistance is the United States providing to Ukraine?Real Answer: The United States is providing more than $1 Billion in direct assistance to Ukraine.Predicted Answer:  The United States is providing more than $1 billion in direct assistance to Ukraine.Predicted Scores: rouge=1.0000, chrf=0.9483, bert_score=1.0000, uni_eval=0.9734 

Reference

Evaluation | 🦜️🔗 LangChain

评估 Evaluation – LangChain中文网

基于LangChain的大语言模型应用开发6——评估_哔哩哔哩_bilibili

基于LangChai... - @宝玉xp的微博 - 微博 (weibo.com)

通用代理评估 Generic Agent Evaluation # – LangChain中文网

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

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

相关文章

十五周算法训练营——背包问题

今天是十五周算法训练营的第十三周,主要讲背包问题专题。(欢迎加入十五周算法训练营,与小伙伴一起卷算法) 「背包问题:给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品…

以加快工程和科学发展为使命,MathWorks 创新步履不止

一直以来,人类对于宇宙苍穹、高山峻岭的探索永不止步。今年是人类首次登月54周年,毋庸置疑,“登月计划”激发了全世界所有人的想象力。正由于这项计划,让耐高温的金属和合金防火面料、冻干食品及光伏电池、集成电路、计算机以及备…

解密Linux内核神器:内存屏障的秘密功效与应用方法

一、内存屏障简介 现在大多数现代计算机为了提高性能而采取乱序执行,这可能会导致程序运行不符合我们预期,内存屏障就是一类同步屏障指令,是CPU或者编译器在对内存随机访问的操作中的一个同步点,只有在此点之前的所有读写操作都执…

信号链噪声分析14

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示:这里可以添加技术概要 虽然噪声的均方根值可通过 q/√12 计算精确近似值,但在某些条件下,频域成分可能 与交流输入信号高度相关。例如,低幅度周期性信号的相关度大…

智慧厕所系统:革新公厕管理的智能解决方案

公厕是城市基础设施的重要组成部分,但由于管理难度大、人员分散等问题,公厕的管理一直是一个难题。智慧公厕系统通过智能化的监控设备和传感器,实时监测公厕的使用情况和卫生状况,并将数据传输到中央控制系统。管理员可以通过该系…

C++学习笔记-第8单元 运算符重载

第8单元 运算符重载 文章目录 第8单元 运算符重载单元导读单元导读1:深度学习与C单元导读2:向量、矩阵、张量 8.1 运算符重载与平面向量类8.1.1 运算符与函数的关系8.1.2 平面向量类8.1.3 C运算符函数8.1.4 [C11]左值、纯右值、将亡值 8.2 重载二元运算符…

极致呈现系列之终章:Vue3中封装Echarts组件

经过前面一系列博文的介绍,我已经详细地讲解了Echarts中涉及的各种图表类型。所以,我认为极致呈现系列文章到此基本告一段落了。作为这个系列文章的终章,我想探讨最后一个问题:如何封装Echarts组件。我觉得这是一个很好的结尾&…

黑马程序员-从0到1学习Linux-第一章 初识Linux

视频学习地址:黑马程序员新版Linux零基础快速入门到精通,全涵盖linux系统知识、常用软件环境部署、Shell脚本、云平台实践、大数据集群项目实战等_哔哩哔哩_bilibili 目录 操作系统概述 初识Linux系统 虚拟机介绍 VMware WorkStation安装 在VMware上…

【Langchain】GPT的高效插件

功能1:让模型具有memory 可以看到,langchain作为访问gpt的一个插件,可以让gpt模型通过memory变量将之前的对话记录下来,从而使模型具有记忆(在不改变模型参数的情况下)。 查看memory变量包含了什么&#…

在blender中使用python程序化建模

blender中,所有可以在Blender软件中的手动操作,基本都可以通过Python API 完成 那么就可以用这个完成程序化生成 下面我给出一个简单的方块建模程序: 在scripting中,可以添加file,然后向场景中心放置一个正方体 首…

前端面试题Vue答案

1.vue的原理? image.png 关键词: 虚拟DOM树访问器属性 解释一下:响应式原理? 当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty把这些 property 全部转为 getter/setter…

开关电源PFC电路原理详解及matlab仿真

PFC全称“Power Factor Correction”,意为“功率因数校正”。PFC电路即能对功率因数进行校正,或者说能提高功率因数的电路。 在电学中,功率因数PF指有功功率P(单位w)与视在功率S(单位VA)的比值。…

【Linux】fdisk命令参数详解(图文超详细,内容来自官方文档)

目录 0.环境 1.背景 2.内容--官方文档对fdisk的介绍 1)名称 2)说明 3)具体参数/选项 4)举个栗子,我要查fdisk的版本 0.环境 windows linux虚拟机 1.背景 之前发表了一篇文章Linux 用fdisk进行磁盘分区&#xff…

Python语法基础03(输入与while)

用户输入 使用input()函数可以获取输入,同时应说清楚所期待的输入内容 #使用函数input时,要说清楚期望的输入 carinput("Please input your favourite car.\nAnd i will repeat:") print(f"your favourite car is {car}")## 也可…

多元分类预测 | Matlab灰狼算法(GWO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,GWO-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab灰狼算法(GWO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,GWO-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab…

NFTScan 与 Sender Wallet 达成合作伙伴,双方在多链 NFT 数据方面展开合作!

近日,NFT 数据基础设施 NFTScan 与 Web3 钱包 Sender Wallet 达成合作伙伴关系,成为其官方 NFT 数据供应商。NFTScan 将为 Sender Wallet 的 NFT 部分提供专业的多链 NFT 数据支持,确保用户可以跨多个区块链获得全面和实时的 NFT 数据。 Sen…

Latex 文献引用

来源: 引用 - 为什么叫 citet 和 citep?- TeX - LaTeX 堆栈交换 (stackexchange.com) 来源: latex \cite, \citet, \citep_latex citet_juliosun的博客-CSDN博客 来源:https://www.reddit.com/r/LaTeX/comments/5g9kn1/whats_th…

【网络安全带你练爬虫-100练】第1练:发送请求获取返回内容

目录 一、前置知识1 二、前置知识2 requests库的7个主要方法 语法: 注解: 三、扩展工具 四、网络安全小圈子 一、前置知识1 顾名思义网络爬虫第一步,爬取目标 URL的网页的信息 可以使用 urllib.request 和 requests发送请求&#xff0…

瞄准光储赛道的家电巨头,是没活“硬整”,还是有理有据?

2023年上半年即将结束,家电巨头再次带来跨界的重磅消息。 在A股公司合康新能月底发布的定增公告中,美的集团,成为合康新能定增的包揽者。后者将获得前者提供的高达14.73亿元的募集资金总额,用于电子设备业务能力提升项目、光伏产…

一部手机如何登录多个微信?教你一招轻松搞定

现在大部分人都不止2个微信,有的用于私人社交,有的用于工作,人手多个微信已经很普遍了。那么如何在一个手机上同时登录2个甚至更多微信呢? 01登录2个微信 找到手机上面的【设置】,找到【应用设置】-【应用双开】&am…