langfuse使用零星记录

目录

前言

一、langfuse是什么?

二、使用零星记录

1.评估打分

2.score的问题与解决

总结


前言

langfuse使用过程的一些坑点,做一些记录,便于日后回顾查找,也为同样在学习的小伙伴们异同一些可能的帮助。

期望在学习使用一段时间之后,可以系统性的写一些更有价值的内容出来。

一些说明:这里不是主要记录如何使用langfuse,主要是针对过程出现的问题记录,这样产生的作用与价值更大。


一、langfuse是什么?

LangFuse 是一个开源的大型语言模型(LLM)工程平台,主要用于帮助团队更快地构建生产级的 LLM 应用程序。它提供了追踪、评估、提示管理和指标等功能,以帮助调试和改进你的 LLM 应用程序。LangFuse 支持多种集成方式,例如 OpenAI API 集成和 LangChain 集成,并且可以在线进行数据标注和收集,也支持从本地导入数据集。

二、使用零星记录

1.评估打分

socre即打分,主要用在了评估环节。

在实现一个AI应用的时候,这个应用的主体就是一个Prompt提示词,接下来是提供数据集进行评估,通过打分来看这个提示词的效果如何。

1)创建数据集需要在langfuse的Web界面操作

2)添加数据集数据

这里也可以是jsonl数据,无法是自己读取文件循环加载写入即可

def init_dataset():# example items, could also be json instead of stringslocal_items = [{"input": {"country": "Italy"}, "expected_output": "Rome"},{"input": {"country": "Spain"}, "expected_output": "Madrid"},{"input": {"country": "Brazil"}, "expected_output": "Brasília"},{"input": {"country": "Japan"}, "expected_output": "Tokyo"},{"input": {"country": "India"}, "expected_output": "New Delhi"},{"input": {"country": "Canada"}, "expected_output": "Ottawa"},{"input": {"country": "South Korea"}, "expected_output": "Seoul"},{"input": {"country": "Argentina"}, "expected_output": "Buenos Aires"},{"input": {"country": "South Africa"}, "expected_output": "Pretoria"},{"input": {"country": "Egypt"}, "expected_output": "Cairo"},]# Upload to Langfusefor item in local_items:langfuse.create_dataset_item(dataset_name=ds_name,# any python object or valueinput=item["input"],# any python object or value, optionalexpected_output=item["expected_output"],)

3)定义评估函数

这里定义实际输出=预期输出,主要用于分类判断如输出Y、N,或固定的选项

def simple_evaluation(output, expected_output):return output == expected_output

4)运行测试

如下代码简单说明下:run_my_langchain_llm_app是通过langchain方式调用大模型的,run_langchain_experiment是遍历数据集数据项调用大模型并进行评估打分。

def run_my_langchain_llm_app(input, system_message, callback_handler):# needs to include {country}messages = [SystemMessage(content=system_message),HumanMessage(content=input),]model = ChatOpenAI(model="qwen-turbo", callbacks=[callback_handler])completion = model.invoke(messages)return completion.contentdef run_langchain_experiment(experiment_name, system_message):dataset = langfuse.get_dataset(ds_name)for item in dataset.items:handler = item.get_langchain_handler(run_name=experiment_name)completion = run_my_langchain_llm_app(item.input["country"], system_message, handler)handler.root_span.score(name="exact_match",value=simple_evaluation(completion, item.expected_output),)run_langchain_experiment("langchain_famous_city","The user will input countries, respond with the most famous city in this country",
)

2.score的问题与解决

如上代码都是我从官网拿过来做测试的,但是发现如下代码报错。提示handler的root_span为None,不知是不是langfuse官方有更新

handler.root_span.score(name="exact_match",value=simple_evaluation(completion, item.expected_output),
)

然后我继续看相关文档,发现score还有一种写法是用在直接调用openai的情况,改了下在langchain下也可以使用

langfuse.score(name="exact_match",value=simple_evaluation(completion, item.expected_output),trace_id=handler.get_trace_id(),
)

本质是通过trace_id属性将score与测试run关联了起来


总结

本文主要针对langfuse使用过程进行零星记录,希望可以帮助一些小伙伴。

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

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

相关文章

centos7.9离线安装rke2

使用rke2安装k8s,master节点有三台,agent节点一台,三台master通过etcd存储保证master节点的高可用,使用nginx对master进行负载均衡。 主机清单如下 ip主机名称用途192.168.16.72node72server节点192.168.16.73node73master节点192.168.16.7…

常用excel操作笔记

一、表达式 1. 查找excel中一列值出现在另外一列中 IF(SUMPRODUCT(--(ISNUMBER(SEARCH($A$1:$A$101,C2)))),1,0) 2.计算某个字符出现的次数 LEN(G2)-LEN(SUBSTITUTE(G2,">",))1 3.拼接字符串 C2&"|"&A2 4.根据当前日期生成19位id TEXT(TODAY…

MySQL语句,使用replace替换数据后,有小数时,使用round等方法无法取整

15.55这个数字 replace替换数据后乘以100,在Navicat中运行,是显示整数 但是在Python中调用SQL语句,使用replace替换数据并乘以100后,会显示有一位小数,并且使用round等方法无法取整 最终采用cast函数将replace后的数…

新装电脑Flutter环境部署坑汇总(持续更新)

1.本地安装,安装fvm的坑 本人电脑使用windows ,安装fvm则一般使用choco安装,那么首先需要安装choco,打开powershell/或者cmd运行以下命令: Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager…

5.2 海思SS928开发 - kernle开发 - 构建脚本

5.2 kernle开发 - 构建脚本 SS928 kernel 提供了 makefile 用于 kernel 构建。想要得到最后的内核镜像,还要经过许多步骤,每次都手敲命令的话,会把我累死。自己实现一个构建脚本,支持以下常用功能即可: 构建内核镜像配…

图像置乱加密-Arnold加密算法

置乱加密是另一种较常用的加密方法,现也被许多文献选用,置乱加密可以是以像素为单位进行全局置乱,该方式打乱了图像像素值的位置,使其图像内容失去相关性,达到保护的目的。也可以是以块为单位进行置乱,该方…

Kafka报错ERROR Exiting Kafka due to fatal exception during startup

报错: ERROR Exiting Kafka due to fatal exception during startup. (kafka.Kafka$) kafka.common.InconsistentClusterIdException: The Cluster ID FSzSO50oTLCRhRnRylihcg doesnt match stored clusterId Some(0oSLohwtQZWbIi73YUMs8g) in meta.properties. Th…

某宝因SSL证书过期无法正常访问,证书过期问题频发企业如何破局?

近日,有网友发现,某宝网站无法正常访问,出现“此连接非私人连接”提示,而导致此类提示的罪魁祸首是因为SSL证书过期!其实,近年来,因SSL证书过期导致的网站无法正常访问的事件频频发生&#xff0…

vue2—— mixin 超级详细!!!

mixin Mixin是面向对象程序设计语言中的类,提供了方法的实现。其他类可以访问mixin类的方法而不必成为其子类 Mixin类通常作为功能模块使用,在需要该功能时“混入”,有利于代码复用又避免了多继承的复杂 vue中的mixin 先来看一下官方定义 mi…

YOLO-yolov5构建数据集

1.收集数据集 创建一个dataset文件夹用来存放图片数据集。 我这里使用的图片数据集,是对一段视频进行抽帧得到的200张狗狗图片。 在dataset文件夹下新建images和labels文件夹,并将200张狗狗图片放入images中。 2.标注数据集 2.1安装标注工具labelimg…

Jenkins邮件发送失败问题解决

如下提示为 Extended E-mail Notification开启Debug模式下显示的错误信息, (Debug模式设置方法:Dashboard-> manage Jenkins->configure System)DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 DEB…

Projector投影器-Unity使用Projector投影器实现简单的阴影

在Unity中,可以使用Projector投影器来实现简单的阴影效果。Projector投影器是一种用于在场景中投射纹理的组件,可以用来模拟光照、阴影等效果。 要使用Projector投影器实现阴影效果,可以按照以下步骤进行操作: 创建一个空对象&am…

OpenCV——Bernsen局部阈值二值化方法

目录 一、Bernsen算法1、算法概述2、参考文献二、代码实现三、结果展示Bernsen局部阈值二值化方法由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、Bernsen算法 1、算法概述 Bernsen 算法是另一种流行的局部阈值二值化方…

网络相关知识总结

1、网口设置 网口设置IP,即操作/etc/sysconfig/network-scripts路径下的ifcfg-xx文件 主要参数详解: DEVICE:网口名 ONBOOT:表示启动系统时是否激活网卡,yes为激活,no不激活 HWADDR:mac值 DEFROUTE://默认路由设置…

Docker容器:docker基础

目录 一.docker前言 云计算服务模式 关于 docker 产品 虚拟化产品有哪些? ① 寄居架构 ② 源生架构 虚拟化技术概述 主流虚拟化产品对比 1. VMware系列 2. KVM/OpenStack 3. Xen 4. 其他半/全虚拟化产品 二. docker 的相关知识 1. docker 的概念 doc…

[linux网络编程]UDP协议和TCP协议的使用

目录 看以下内容前,你要先了解main函数带参数有什么用、 了解socket的相关函数接口 如果不了解socket的相关函数接口请先看我这篇文章 main函数带参数有什么用 UDP udp_server 1.生成socket文件描述符 2.填充sockaddr_in信息 3.bind 4.发(收&…

学习100个Unity Shader (14) ---透明效果

文章目录 渲染队列透明度测试(Alpha Test)效果Shader 透明度混合(Alpha Blending)效果Shader 参考 渲染队列 由”Queue“ 标签决定,索引号越小越早被渲染: 名称队列索引号Background1000Geometry2000Alph…

从虚拟化走向云原生,红帽OpenShift“一手托两家”

汽车行业已经迈入“软件定义汽车”的新时代。吉利汽车很清醒地意识到,只有通过云原生技术和数字化转型,才能巩固其作为中国领先汽车制造商的地位。 和很多传统企业一样,吉利汽车在走向云原生的过程中也经历了稳态业务与敏态业务并存带来的前所…

牛客NC98 判断t1树中是否有与t2树完全相同的子树【simple 深度优先dfs C++/Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/4eaccec5ee8f4fe8a4309463b807a542 思路 深度优先搜索暴力匹配 思路和算法这是一种最朴素的方法——深度优先搜索枚举 s 中的每一个节点,判断这个点的子树是否和 t 相等。如何判断一个节点的子树是否…

JSP在页面用<%=调用声明函数时出现HTTP 500错误

JSP在页面用<%调用声明函数时出现HTTP 500错误 错误描述&#xff1a; Eclipse在编写JSP页面时&#xff0c;在其中采用<%&#xff01;%>方式声明了函数&#xff0c;然后在页面中用<%函数名%>方式调用时&#xff0c;出现HTTP状态500错误&#xff0c;提示为&#…