TruLens

文章目录

    • 一、关于 TruLens
      • How it works
    • 二、安装
    • 三、快速使用
      • Get DataIn
      • Create Vector Store
      • Build RAG from scratch
      • Set up feedback functions.
      • Construct the app
      • Run the app


一、关于 TruLens

Evaluate and Track LLM Applications

  • 官网:https://www.trulens.org
  • github : https://github.com/truera/trulens
  • trulens_eval 文档:https://www.trulens.org/trulens_eval/getting_started/
  • trulens_explain :https://www.trulens.org/trulens_explain/getting_started/quickstart/
  • 社区:https://communityinviter.com/apps/aiqualityforum/josh
  • https://colab.research.google.com/drive/1n77IGrPDO2XpeIVo_LQW0gY78enV-tY9

TruLens提供了一套用于开发和监控神经网络的工具,包括大型语言模型。
这包括使用 TruLens Eval 评估LLM 和 基于LLM的应用程序,以及使用 TruLens Explain 评估深度学习可解释性的工具。
TruLens EvalTruLens Explain分别装在单独的包装中,可以单独使用。

不要只是查看你的llm应用程序! 使用TruLens系统地评估和跟踪您的LLM实验。
当您开发应用程序(包括提示、模型、检索器、知识来源等)时,TruLens Eval 是您了解其性能所需的工具。
细粒度、与堆栈无关的检测和全面的评估可以帮助您识别故障模式并系统地迭代以改进应用程序。

TruLens背后的核心概念,包括

  • 反馈功能:https://www.trulens.org/trulens_eval/getting_started/core_concepts/
  • The RAG Triad:https://www.trulens.org/trulens_eval/getting_started/core_concepts/rag_triad/
  • Honest, Harmless and Helpful Evals : https://www.trulens.org/trulens_eval/getting_started/core_concepts/honest_harmless_helpful_evals/

How it works

构建您的第一个原型,然后使用TruLens连接仪器和日志记录。

决定你需要什么反馈,并用TruLens指定它们与你的应用程序一起运行。

然后在易于使用的用户界面中迭代和比较应用程序的版本。

在这里插入图片描述


二、安装

pip install trulens-eval

使用源码安装

git clone https://github.com/truera/trulens.git
cd trulens/trulens_eval
pip install -e .

三、快速使用

在这个快速入门中,您将从头开始创建一个RAG,并学习如何记录它并获得LLM响应的反馈。

为了进行评估,我们将利用基础性、上下文相关性和答案相关性的“幻觉三元”。


你可以在 colab 中查看:

https://colab.research.google.com/github/truera/trulens/blob/main/trulens_eval/examples/quickstart/quickstart.ipynb


安装依赖

! pip install trulens_eval chromadb openai

import os
os.environ["OPENAI_API_KEY"] = "sk-..."

Get DataIn

this case, we’ll just initialize some simple text in the notebook.

university_info = """
The University of Washington, founded in 1861 in Seattle, is a public research university
with over 45,000 students across three campuses in Seattle, Tacoma, and Bothell.
As the flagship institution of the six public universities in Washington state,
UW encompasses over 500 buildings and 20 million square feet of space,
including one of the largest library systems in the world.
"""

Create Vector Store

Create a chromadb vector store in memory.

from openai import OpenAI
oai_client = OpenAI()oai_client.embeddings.create(model="text-embedding-ada-002",input=university_info)

import chromadb
from chromadb.utils.embedding_functions import OpenAIEmbeddingFunctionembedding_function = OpenAIEmbeddingFunction(api_key=os.environ.get('OPENAI_API_KEY'),model_name="text-embedding-ada-002")chroma_client = chromadb.Client()
vector_store = chroma_client.get_or_create_collection(name="Universities",embedding_function=embedding_function)

添加 university_info 到嵌入数据库

vector_store.add("uni_info", documents=university_info)

Build RAG from scratch

Build a custom RAG from scratch, and add TruLens custom instrumentation.

from trulens_eval import Tru
from trulens_eval.tru_custom_app import instrumenttru = Tru()

class RAG_from_scratch:@instrumentdef retrieve(self, query: str) -> list:"""Retrieve relevant text from vector store."""results = vector_store.query(query_texts=query,n_results=2)return results['documents'][0]@instrumentdef generate_completion(self, query: str, context_str: list) -> str:"""Generate answer from context."""completion = oai_client.chat.completions.create(model="gpt-3.5-turbo",temperature=0,messages=[{"role": "user","content": f"We have provided context information below. \n"f"---------------------\n"f"{context_str}"f"\n---------------------\n"f"Given this information, please answer the question: {query}"}]).choices[0].message.contentreturn completion@instrumentdef query(self, query: str) -> str:context_str = self.retrieve(query)completion = self.generate_completion(query, context_str)return completionrag = RAG_from_scratch()

Set up feedback functions.

Here we’ll use groundedness, answer relevance and context relevance to detect hallucination.

from trulens_eval import Feedback, Select
from trulens_eval.feedback import Groundedness
from trulens_eval.feedback.provider.openai import OpenAIimport numpy as npprovider = OpenAI()grounded = Groundedness(groundedness_provider=provider)# Define a groundedness feedback function
f_groundedness = (Feedback(grounded.groundedness_measure_with_cot_reasons, name = "Groundedness").on(Select.RecordCalls.retrieve.rets.collect()).on_output().aggregate(grounded.grounded_statements_aggregator)
)# Question/answer 
relevance between overall question and answer.
f_answer_relevance = (Feedback(provider.relevance_with_cot_reasons, name = "Answer Relevance").on(Select.RecordCalls.retrieve.args.query).on_output()
)#  Question/statement relevance between question and each context chunk.
f_context_relevance = (Feedback(provider.context_relevance_with_cot_reasons, name = "Context Relevance").on(Select.RecordCalls.retrieve.args.query).on(Select.RecordCalls.retrieve.rets.collect()).aggregate(np.mean)
)

Construct the app

Wrap the custom RAG with TruCustomApp, add list of feedbacks for eval

from trulens_eval import TruCustomApp
tru_rag = TruCustomApp(rag,app_id = 'RAG v1',feedbacks = [f_groundedness, f_answer_relevance, f_context_relevance])

Run the app

Use tru_rag as a context manager for the custom RAG-from-scratch app.

with tru_rag as recording:rag.query("When was the University of Washington founded?")

tru.get_leaderboard(app_ids=["RAG v1"])
tru.run_dashboard()

2024-04-28(日)

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

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

相关文章

linux,从零安装mysql 8.0.30 ,并且更新至mysql 8.0.36

前言: 系统使用的CentOS 7,系统默认最小安装。 一、基础配置 配置虚拟机IP,需要更改的内容,如下红框中 修改之后 至此,基础配置完成。注意:此处虚拟机网络适配器使用的是:桥接模式 二、软件…

掌握Lazada自养号测评技巧,轻松提升产品销量与排名

Lazada店铺销量不佳,时常让卖家们感到困扰。然而,仅仅感叹和自我安慰并不能解决问题。作为卖家,我们需要专注于打牢基础,尤其是要深入了解Lazada店铺测评的益处及其运用技巧。通过巧妙地结合运营策略和测评方法,我们可…

Django框架之请求生命周期流程图

一、引言 WSGI、wsgiref、uwsgi三者是什么关系? WSGI是协议,小写的wsgiref和uwsgi是实现该协议的功能模块 缓存数据库 提前已经将你想要的数据准备好了,需要的时候直接拿就可以,提高了效率和响应时间。 eg:当你在修改你的数据的时候&…

vscode查看变量小技巧

vscode查看变量有3种方法 print()输出要查看的变量,此方法适用于所有编程软件安装jupyter,右键run in interactive window—在交互窗口运行,之后点击变量即可查看 通过调试查看,使用于大多编程软件。打断点,调试后会…

【SZU计算机网络实验】从rdt到GBN,这实验居然实现了TCP的可靠数据传输机制?

前言 一个实验六个任务,实验文档一划划不到底。。看来老师们是真下功夫了啊 本文主要展示了作者在完成SZU计算机网络实验3的思路及过程,实验主要包括: 理解rdt2.1实现rdt2.2实现rdt3.0实现回退N步(GBN)机制实现面向…

2000.1-2023.8中国经济政策不确定性指数数据(日度、月度)

2000.1-2023.8中国经济政策不确定性指数数据(日度、月度) 1、时间:日度:2001.1.1-2022.06.17,月度2000.1-2023.8 2、指标:CNEPU(经济政策不确定性指数) 3、来源:China…

Linux网络-文件传输协议之FTP服务(附带命令及截图)

目录 一.FTP简介 二.FTP的数据模式 1.主动模式 2.被动模式 3.两种模式比较 三.安装配置vsftpd 1.安装vsftpd 1.1.安装前关闭防火墙 1.2.安装vsftpd 1.3.查看 1.4.备份 2.配置 3.重启后生效 四.相关实验 1.以win为例 1.1.设置并测试测试连通性 1.2.在终端里创建…

Redis基本數據結構 ― List

Redis基本數據結構 ― List 介紹常用命令範例1. 將元素推入List中2. 取得List內容3. 彈出元素 介紹 Redis中的List結構是一個雙向鏈表。 LPUSH LPOP StackLPUSH RPOP QueueLPUSH BRPOP Queue(消息隊列) 常用命令 命令功能LPUSH將元素推入列表左端RPUSH將元素推入列表右…

ubuntu20.04安装RabbitMQ 3.11.19+Erlang 25.3.1

1、检查RabbitMQ、Erlang版本 Erlang Version Requirements | RabbitMQ 2、ubuntu20.04对应的是 focal 3、下载安装Erlang 下载地址:http://packages.erlang-solutions.com/erlang/debian/pool/ sudo dpkg -i esl-erlang_25.3-1~ubuntu~focal_amd64.deb sudo apt…

C++ 如何实现原子性

1.操作系统如何实现原子性 在单处理器,单核,运行多线程的情况下,我们不使用线程同步工具, 我们会出现,线程之间会互相抢夺,临界区的资源,造成数据不符合我们预期的结果, 后面再说解决办法,那么我们怎么帮助实现原子性 1 屏蔽中断,不让线程之间切换,让它完成再切换 2 底层硬…

栈与递归的关系

定义 特点 函数调用过程 具体实现过程与状态 小结 拓展 递归的分解 典型案例

第三弹:JavaScript 学习记录

目录 1.1. 了解 1.1.1. 为什么学习JavaScript 1.1.2. JavaScript简介 1.1.3. JavaScript / ECMAScript 1.1.4. JavaScript使用方式 1.1.5. JavaScript输出 1.1.6. JavaScript语句 1.1.7. JavaScript注释 1.1.8. JavaScript变量及常量 1.1.9. JavaScript数据类型 1.1.…

C++实战演练---负载均衡在线oj项目预热

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 前言 学习准备了快一年时间,心心念念的实战演练终于可以开始了,话不多说,直接进入主题…

React、React Router 和 Redux 常用Hooks 总结,提升您的开发效率!

Hooks 是 React 16.8 中引入的一种新特性,它使得函数组件可以使用 state 和其他 React 特性,从而大大提高了函数组件的灵活性和功能性。下面分别总结React、React Router 、Redux中常用的Hooks。 常用Hooks速记 React Hooks useState:用于…

ssm088基于JAVA的汽车售票网站abo+vue

汽车售票网站的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对汽车售票信息管理混乱,出错率…

基于stm32的USB模拟UART的尝试F429

目录 基于stm32的USB模拟UART的尝试F429实验目的场景使用原理图USBX 组件移植USBX实现虚拟串口配置USB移植USBX源码工程中添加对应源码修改usb_otg.c创建 USBX 任务添加使用串口的代码上机现象本文中使用的测试工程 基于stm32的USB模拟UART的尝试F429 本文目标:基于…

uniapp-vue3-wechat:基于uniapp+vue3仿微信app聊天实例(H5+小程序+App端)

uni-vue3-wchat:基于uni-appvue3pinia2高仿微信app聊天模板。 原创基于最新跨端技术uni-appvue3.xpinia2vite4uv-ui构建三端仿微信app界面聊天实例。实现编辑框多行消息/emoj混合、长按触摸式仿微信语音面板、图片/视频预览、红包/朋友圈等功能。支持编译到H5小程序…

数据结构与算法-抽象数据类型ADT系列

以前在学习数据结构的时候做实验,老师要求用ADT抽象数据类型来写这些实现代码。后面也要复习数据结构,在这里就先放下链接。不过以前学习的时候使用的编程语言是C,里面会用到很多指针。现在编代码过程大多数时候都是用Java。不过思路应该还是…

keytool,openssl的使用

写在前面 在生成公钥私钥,配置https时经常需要用到keytool,openssl工具,本文就一起看下其是如何使用的。 keytool是jdk自带的工具,不需要额外下载,但openssl需要额外下载 。 1:使用keytool生成jks私钥文件…

WEB攻防-IIS中间件PUT漏洞

IIS6.0 server在web服务扩展中开启了WebDAV(Web-based Distributed Authoring and Versioning)。WebDAV是一种HTTP1.1的扩展协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,如PUT&#xff0c…