LangChain运行开发指南

  • 电脑网络维修
  • 2024-11-15

在AI的开展中,大规模言语模型曾经取得了令人注目的成绩,但是,随之而来的是模型品质和不确定性的疑问。如何权衡和改良模型的品质,不时是咱们面临的一个应战。

为了处置这些疑问,咱们将在这篇文章中,引见LangChain框架和TruLens工具,它们将协助咱们评价模型的品质,提高模型品质,并能够用量化的方法反抗不确定。

什么是TruLens

TruLens是面向神经网络运行的品质评价工具,它可以协助你经常使用反应函数来主观地评价你的基于LLM(言语模型)的运行的品质和效果。反应函数可以协助你以编程的模式评价输入、输入和两边结果的品质,从而放慢和扩展试验评价的范畴。你可以将它用于各种各样的用例,包含问答、检索增强生成和基于代理的运行。

TruLens的外围现实是,你可认为你的运行定义一些反应函数,这些函数可以依据你的运行的目的和希冀,对你的运行的体现启动打分或分类。例如:

TruLens可以让你在开发和测试你的运行的环节中,实时地搜集和剖析你的运行的反应数据,从而协助你发现和处置你的运行的疑问,提高你的运行的品质和效果。你可以经常使用TruLens提供的易用的用户界面,来检查和比拟你的运行的不同版本的反应数据,从而找出你的运行的好处和劣势,以及改良的方向。

如何在LangChain中经常使用TruLens来评价模型输入和检索品质

LangChain作为一种新的言语模型框架,它提供了一种有效的部署和治理大规模言语模型的框架。经常使用LangChain治理模型,不只可以轻松部署和口头模型,还可以繁难地观察模型的外部形态。再联合TruLens的评价工具,咱们就可以对模型的品质启动深化了解和改良。

要在LangChain中经常使用TruLens来评价你的运行,你只有要做两件事:

上方是一个繁难的示例,展现了如何在LangChain中经常使用TruLens来评价一个问答运行:

pip install trulens_eval
# 导入LangChain和TruLensfrom langchain.chains import LLMChainfrom langchain.llms import OpenAIfrom langchain.prompts import PromptTemplatefrom langchain.prompts.chat import ChatPromptTemplate,HumanMessagePromptTemplatefrom trulens_eval import TruChain,Feedback, Huggingface, Tru, OpenAI as TruOpenAIfrom trulens_eval.feedback.provider.langchain import Langchaintru = Tru()# 定义一个问答运行的提醒模板full_prompt = HumanMessagePromptTemplate(prompt=PromptTemplate(template="Provide a helpful response with relevant background information for the following: {prompt}",input_variables=["prompt"],))chat_prompt_template = ChatPromptTemplate.from_messages([full_prompt])# 创立一个LLMChain对象,经常使用llm和chat_prompt_template作为参数llm = OpenAI()chain = LLMChain(llm=llm, prompt=chat_prompt_template, verbose=True)# Initialize Huggingface-based feedback function collection class:# Define a language match feedback function using HuggingFace.hugs = Huggingface()f_lang_match = Feedback(hugs.language_match).on_input_output()# Question/answer relevance between overall question and answer.provider = TruOpenAI()f_qa_relevance = Feedback(provider.relevance).on_input_output()# 经常使用TruChain类来包装chain对象,指定反应函数和运行IDtru_recorder = TruChain(chain,app_id='Chain1_QAApplication',feedbacks=[f_lang_match,f_qa_relevance])# 经常使用with语句来运转chain对象,并记载反应数据with tru_recorder as recording:# 输入一个疑问,获取一个回答chain("What is langchain?")# 检查反应数据tru_record = recording.records[0]# 打印反应数据print("tru_record:",tru_record)# 启动tru展现控制台tru.run_dashboard()

以RAG为例看看TruLens的评价结果

RAG(Retrieval-Augmented Generation)是一种基于LLM的运行,它可以应用检索系统来增强LLM的生成才干。RAG的上班原理是,当给定一个输入时,它会先从一个大规模的常识库中检索出一些关系的文档,而后将这些文档作为LLM的高低文,再经常使用LLM来生成一个输入。RAG可以用于各种生成义务,例如问答、摘要、对话等。

RAG的好处是,它可以应用检索系统来提供LLM所不足的常识和消息,从而提高LLM的生成品质和多样性。RAG的缺陷是,它也或许引入一些失误和幻觉,例如检索出不关系或不准确的文档,或许生成与输入或文档不分歧的输入。

为了评价RAG的品质和效果,咱们可以经常使用TruLens提供的RAG三角形(RAG Triad)的评价方法。RAG三角形是由三个评价目的组成的,区分是:

RAG三角形的评价方法可以让咱们从不同的角度来测验RAG的品质和效果,从而发现和改良RAG的疑问。咱们可以经常使用TruLens来成功RAG三角形的评价方法,详细步骤如下:

上方是一个繁难的示例,展现了如何在LangChain中经常使用TruLens来评价一个RAG问答运行:

# 导入LangChain和TruLensfrom IPython.display import JSON# Imports main tools:from trulens_eval import TruChain, Feedback, Huggingface, Trufrom trulens_eval.schema import FeedbackResulttru = Tru()tru.reset_database()# Imports from langchain to build appimport bs4from langchain import hubfrom langchain.chat_models import ChatOpenAIfrom langchain.document_loaders import WebBaseLoaderfrom langchain.embeddings import OpenAIEmbeddingsfrom langchain.schema import StrOutputParserfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain.vectorstores import Chromafrom langchain_core.runnables import RunnablePassthroughfrom trulens_eval.feedback.provider import OpenAIimport numpy as npfrom trulens_eval.app import Appfrom trulens_eval.feedback import Groundedness# 加载文件loader = WebBaseLoader(web_paths=("https://lilianweng.github.io/posts/2023-06-23-agent/",),bs_kwargs=dict(parse_notallow=bs4.SoupStrainer(class_=("post-content", "post-title", "post-header"))),)docs = loader.load()# 分词text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)splits = text_splitter.split_documents(docs)# 存入到向量数据库vectorstore = Chroma.from_documents(documents=splits, embedding=OpenAIEmbeddings())# 定义一个RAG Chainretriever = vectorstore.as_retriever()prompt = hub.pull("rlm/rag-prompt")llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)def format_docs(docs):return "\n\n".join(doc.page_content for doc in docs)rag_chain = ({"context": retriever | format_docs, "question": RunnablePassthrough()}| prompt| llm| StrOutputParser())# 经常使用TruChain类来包装rag对象,指定反应函数和运行ID# Initialize provider classprovider = OpenAI()# select context to be used in feedback. the location of context is app specific.context = App.select_context(rag_chain)grounded = Groundedness(groundedness_provider=provider)# f_context_relevance, f_groundness, f_answer_relevance 定义反应函数# Define a groundedness feedback functionf_groundedness = (Feedback(grounded.groundedness_measure_with_cot_reasons).on(context.collect()) # collect context chunks into a list.on_output().aggregate(grounded.grounded_statements_aggregator))# Question/answer relevance between overall question and answer.f_qa_relevance = Feedback(provider.relevance).on_input_output()# Question/statement relevance between question and each context chunk.f_context_relevance = (Feedback(provider.qs_relevance).on_input().on(context).aggregate(np.mean))# 经常使用with语句来运转rag对象,并记载反应数据tru_recorder = TruChain(rag_chain,app_id='Chain1_ChatApplication',feedbacks=[f_qa_relevance, f_context_relevance, f_groundedness])with tru_recorder as recording:# 输入一个疑问,获取一个回答,以及检索出的文档llm_response = rag_chain.invoke("What is Task Decomposition?")# 检查反应数据rec = recording.get() # use .get if only one record# 打印反应数据print(rec)# 启动tru展现控制台tru.run_dashboard()

论断

在本文中,咱们引见了如何在LangChain中经常使用TruLens来对LLM启动评价和优化,以及如何应用TruLens的结果来量化和反抗模型的不确定性。咱们经过一个文本生成的义务为例,演示了如何经常使用TruLens来对模型的输入启动测量和量化,以及对模型的行为启动剖析和解释。咱们还分享了一个RAG案例代码,用实践目的说明了TruLens的评价结果。

咱们也等候,未来有更多的工具和方法,可以对LLM启动更有效的评价和优化,以及更好地量化和反抗模型的不确定性。咱们置信,这将有助于推进LLM的开展和运行,以及优化AI言语的水温和价值。

本文转载自​​,作者:

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/6122.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号