Langsmith的调试和测试LLMS的简介
>我最近找到了一个AI平台,该平台会自动从任何类型的媒体生成抽认卡。由于我喜欢用间距重复记忆的概念,因此我立即上传了XGBoost教程,并要求AI在其上创建50个抽认卡。
,但我很失望。大多数问题太容易了,很少有关于代码语法。更奇怪的是,有10%的问题是相同的,并且完全不明显 - “法国的首都是什么?”。> Langsmith是一个完善的平台,用于测试,调试和评估LLM应用程序。也许,其最重要的功能是LLM输出评估和性能监控。在本教程中,我们将看到行动中的框架并学习将其应用于您自己的项目中的技术。
>让我们开始!为什么langsmith?
正如我上面提到的,Langsmith是评估大型语言应用程序的综合平台。以下是它们带来的一些特征和切实的现实世界好处:
>程序员可以在几分钟而不是小时内开始尝试Langsmith。这意味着小型团队或独奏开发人员可以在一个周末进行AI申请,并可能在周一之前运送付费服务。
质量保证
>使用严格的评估工具,公司可以避免AI发行错误的尴尬和成本(例如我在介绍中给出的示例)。 Langsmith允许您根据内置标准检查LLM的输出,例如乐于助人,连贯性,厌女症,甚至是自然语言的定制评估,例如“输出陈词滥调的内容?”或者,在抽认卡的情况下,“卡是否包含编码问题?”。
实时监视和可视化langsmith使用痕迹来记录LLM运行的各个方面。这些包括标准,例如延迟,代币计数,运行价格和所有类型的元数据。 Web UI允许您使用自然语言来快速根据错误百分比,延迟,日期甚至文本内容来快速过滤运行。这意味着,例如,如果AI导师开始对其对实际学生的反应进行故障,则可以在几个小时内推出修复程序。
>
与Langchain集成 Langchain是专门针对LLMS开发阶段的Langmith的父框架。它提供模块化软件设计,可链多个LLM(代理),并将它们与其他API(例如YouTube,Google Search等)集成在一起。 Langsmith是顶部的樱桃,确保使用Langchain制造的原型通过使用其强大的评估和监视工具来按预期进行。
>与Langchain教程查看我们的LLM申请,以了解有关Langchain的更多信息。数据集
Langsmith的另一个重要功能是数据集。它们可用于在部署前针对一组标准化示例来改善兰链链,代理或模型。例如,我们可能有一个包含两个列的CSV文件 - 以特定格式的抽认卡的问题和答案。>通过将此文件转换为参考数据集,我们可以使用前面提到的质量保证指标来指示LLMS评估其自己的输出。
>我们现在将通过一对一的示例看到所有这些功能。
>
> llm应用程序开发工作流程在ML应用程序开发中,您可以收集数据,训练,微调,测试和部署模型 - 这些步骤定义明确。但是,使用LLM应用程序,您通常会从供应商的现成模型开始。微调?那可能很昂贵。因此,您将专注于制定正确的提示 - 这全都是向您的LLM应用程序提出正确的问题。将其视为需要大量提示来测试内容,就像您需要大量的数据以进行良好的ML模型一样。
但是,在提示下,您正在处理进出的文本,而不是数字。因此,测量错误或准确性的通常方法,例如MSE或跨凝性,在这里不工作。另外,想象一下阅读所有输入和输出以进行评估 - 如果您有成千上万的提示进行评估,那将需要几天的时间。>
因此,您需要一个工作流程,这一切都涉及有效地创建和测试这些提示,以查看LLM应用程序的表现,而不会淹没手动检查。这是可能的样子:1。开发
在此阶段,您将使用Langchain之类的框架制作应用程序的基础。对于抽认卡生成器项目,您的原型可能包括供应商所选LLM顶部的多个组件。例如,您可能需要将其链接到:
检索器:搜索引擎API,Web刮板
文档加载程序:文件输入 - PDF,文本,CSV,JSON,剪贴板,YouTube,搜索等
- 聊天加载程序
- >向量存储
- 嵌入模型
- >回调
- 等等(请参阅可以从Langchain Docs的此页面中添加哪种组件)。但是,您可以通过使用Langchain提供的普通高级任务的现成连锁店大幅度缩短开发时间。 >
- 2。生产 在此阶段,您将针对尽可能多的方案测试您的应用程序。这意味着您必须确保每个添加的组件效果很好,链条良好,并产生一致的高质量输出。
>
3。部署
>拥有可行的应用程序后,您可以将其部署为REST API。 REST API基本上将您现有的Langchain链或代理转换为其他人可以发送请求以与您的AI模型进行交互的HTTPS链接。现在,您将构建服务的用户界面,例如桌面应用程序,或者更常见的是网站。
>现在,没有简单的方法可以做到这一点,但是Langchain开发人员即将释放Langserve,这将集成到Fastapi中(那真是太棒了?)。查看文档此页面的潜行峰。>
现在,让我们终于开始用langsmith进行修补。>
langsmith平台概述>我们将从理解Web UI开始。它可通过Smith.langchain.com链接获得。对于访问,您必须注册并从候补名单中清除,因为它目前处于封闭的beta中。
>但是,一旦您进入,着陆页将看起来像这样:
>
设置Langmith Python SDK
通过其Python SDK,在Langsmith中管理项目的管理要容易得多,该SDK通过API密钥连接到平台。。 要获取钥匙,请单击平台中的密钥图标,然后将其保存在安全的地方。然后,在具有新的虚拟环境初始化的新目录中,创建一个.env文件。内部,粘贴以下两行:
接下来,在您的终端中,运行以下命令以安装langsmith和python-dotenv读取环境变量:
LANGCHAIN_API_KEY="LangSmith-API-key" OPENAI_API_KEY="Your-OPENAI-key"
>
python-dotenv to read environment variables: pip install -U langsmith pip install python-dotenv
import warnings from dotenv import find_dotenv, load_dotenv warnings.filterwarnings("ignore")
>客户包含在Langsmith中操纵项目和资产的高级命令。我们将使用的客户端的第一个命令是创建一个新项目:
import os load_dotenv(find_dotenv()) os.environ["LANGCHAIN_API_KEY"] = str(os.getenv("LANGCHAIN_API_KEY")) os.environ["LANGCHAIN_TRACING_V2"] = "true" os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
成功运行后,您可以在Web UI的“项目”部分中查看列出的项目:
from langsmith import Client # Initialize a client client = Client()
import uuid # Create id uid = uuid.uuid4() # Create a unique name PROJECT_NAME = "flashcards-generator-" + str(uid) # Create the project session = client.create_project( project_name=PROJECT_NAME, description="A project that generates flashcards from user input", )
现在,我们需要一个llm来进行我们的项目。我们将使用GPT-3.5 Turbo,因为它便宜,但是您可以使用Langchain提供的许多其他型号。 Openai模型是通过Chatopenai类初始化的。
LANGCHAIN_API_KEY="LangSmith-API-key" OPENAI_API_KEY="Your-OPENAI-key"
>如果您快速从UI检查项目,则会看到上述运行跟踪(已记录):
:
>设置环境变量和客户端时,我们会自动启用日志记录。如您所见,我们已经有一堆关于运行的元数据。
python-dotenv to read environment variables: pip install -U langsmith pip install python-dotenv
太好了,现在是时候创建我们的第一个数据集了。
>import warnings from dotenv import find_dotenv, load_dotenv warnings.filterwarnings("ignore")
中创建一个未标记的数据集
>正如我在“ LLM应用程序开发工作流程”部分中提到的,您可能需要创建或收集数千个提示来评估您的LLM模型,链条或代理。因此,像我们上面所做的那样,运行那些一对一的人并不是最好的做法。>
出于这个原因,Langsmith提供了三种类型的数据集:键值(KV) - 默认值:将输入定义为任意键值对。在评估需要多个输入或返回多个输出的链条和代理时,它们很有用。
>
llm数据集(LLM):输入和输出是在llms -string in,string out的“完成样式”中定义的。- >聊天数据集(CHAT):这些是从LLM CHATS转换并使用结构化输入和序列化消息定义的数据集。
- 首先,让我们看看如何创建一个没有输出的键值数据集。我们将使用客户端的create_dataset函数:
- 现在,让我们添加三个输入,每个输入都要求LLM创建一个抽认卡:
>如果您浏览UI的数据集选项卡,则将看到每个提示符都列出了null输出:
import os load_dotenv(find_dotenv()) os.environ["LANGCHAIN_API_KEY"] = str(os.getenv("LANGCHAIN_API_KEY")) os.environ["LANGCHAIN_TRACING_V2"] = "true" os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
from langsmith import Client # Initialize a client client = Client()
现在,让我们使用run_on_dataset函数在一行代码中运行所有提示:
>运行完成后,它将在数据集页面上列出。这是它的外观:
import uuid # Create id uid = uuid.uuid4() # Create a unique name PROJECT_NAME = "flashcards-generator-" + str(uid) # Create the project session = client.create_project( project_name=PROJECT_NAME, description="A project that generates flashcards from user input", )
>我们刚刚在未标记的数据集上进行了测试 - 一个带有示例提示的数据集但没有示例输出。我们的测试只是对每个提示产生了回应,但没有评估任何问题。但是我们想执行基本检查,例如“输出有帮助吗?”或“响应是短的还是长的”?
>langsmith允许我们使用内置的评估者进行此类检查。
评估langmith
>使用数据集中的三个提示来运行简洁性和连贯性评估,我们可以使用RunevalConfig类: ,我们在称为评估者的列表中定义了两个标准。我们将这些评估器传递给RUN_ON_DATASET函数的评估参数: > run_on_dataset是一个有用的功能,可以使用提供的LLM在数据集中运行所有提示,并随时执行任何类型的评估。它的结果将在每个数据集的专用页面上可见: 这次,每个提示的运行都具有连贯性和简洁性指标。在底部,您还将看到每个度量的平均分数。 要查看所有内置标准的列表,请运行以下片段:
通过检查所有提示的评估结果,您会发现我们的标准未按预期进行评估。因此,这是要考虑的事情 - 您还需要提示设计标准以确保它们检查正确的内容。
有时,您可以决定创建一个带有预期输出(例如标记为数据集)的提示数据集。您可以以各种格式创建标记的数据集,但也许最常见的数据集是CSV文件。例如,这是我用chatgpt生成的文件,其中包含pytorch语法上的五个问题:
> 主要用于未标记的数据集。对于我们上传的标记数据集,例如我们上传的CSV数据集,Langsmith提供了更全面的评估者,以衡量对提示的响应的正确性:
>
结论 >
兰链介绍数据工程LANGCHAIN_API_KEY="LangSmith-API-key"
OPENAI_API_KEY="Your-OPENAI-key"
python-dotenv to read environment variables:
pip install -U langsmith
pip install python-dotenv
import warnings
from dotenv import find_dotenv, load_dotenv
warnings.filterwarnings("ignore")
import os
load_dotenv(find_dotenv())
os.environ["LANGCHAIN_API_KEY"] = str(os.getenv("LANGCHAIN_API_KEY"))
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
from langsmith import Client
# Initialize a client
client = Client()
>
该函数具有三个必需的参数:CSV路径和输入/输出列的名称。一旦上传完成,数据集将出现在UI中:
import uuid
# Create id
uid = uuid.uuid4()
# Create a unique name
PROJECT_NAME = "flashcards-generator-" + str(uid)
# Create the project
session = client.create_project(
project_name=PROJECT_NAME,
description="A project that generates flashcards from user input",
)
评估标记的数据集
用自然语言编写的内置和自定义评估器> context_qa(上下文Q&A):在评估正确性
让我们在示例中尝试最后一个:LANGCHAIN_API_KEY="LangSmith-API-key"
OPENAI_API_KEY="Your-OPENAI-key"
在阅读本教程后,您对Langsmith确实是一个及时工程的工具,您将是正确的!目前,Langsmith是确保LLM的说明和输出的最佳框架实际上是您想要的。
>您还必须意识到构建生产级LLM应用程序所需的精力。因此,在从事LLM项目时,请使用Langsmith进行更流畅的体验。在Langchain中构建上下文感知聊天机器人
以上是Langsmith的调试和测试LLMS的简介的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本文回顾了AI最高的艺术生成器,讨论了他们的功能,对创意项目的适用性和价值。它重点介绍了Midjourney是专业人士的最佳价值,并建议使用Dall-E 2进行高质量的可定制艺术。

Meta的Llama 3.2:多模式和移动AI的飞跃 Meta最近公布了Llama 3.2,这是AI的重大进步,具有强大的视觉功能和针对移动设备优化的轻量级文本模型。 以成功为基础

本文比较了诸如Chatgpt,Gemini和Claude之类的顶级AI聊天机器人,重点介绍了其独特功能,自定义选项以及自然语言处理和可靠性的性能。

文章讨论了Grammarly,Jasper,Copy.ai,Writesonic和Rytr等AI最高的写作助手,重点介绍了其独特的内容创建功能。它认为Jasper在SEO优化方面表现出色,而AI工具有助于保持音调的组成

嘿,编码忍者!您当天计划哪些与编码有关的任务?在您进一步研究此博客之前,我希望您考虑所有与编码相关的困境,这是将其列出的。 完毕? - 让&#8217

Shopify首席执行官TobiLütke最近的备忘录大胆地宣布AI对每位员工的基本期望是公司内部的重大文化转变。 这不是短暂的趋势。这是整合到P中的新操作范式

本周的AI景观:进步,道德考虑和监管辩论的旋风。 OpenAI,Google,Meta和Microsoft等主要参与者已经释放了一系列更新,从开创性的新车型到LE的关键转变

本文评论了Google Cloud,Amazon Polly,Microsoft Azure,IBM Watson和Discript等高级AI语音生成器,重点介绍其功能,语音质量和满足不同需求的适用性。
