>我最近找到了一个AI平台,该平台会自动从任何类型的媒体生成抽认卡。由于我喜欢用间距重复记忆的概念,因此我立即上传了XGBoost教程,并要求AI在其上创建50个抽认卡。
,但我很失望。大多数问题太容易了,很少有关于代码语法。更奇怪的是,有10%的问题是相同的,并且完全不明显 - “法国的首都是什么?”。> Langsmith是一个完善的平台,用于测试,调试和评估LLM应用程序。也许,其最重要的功能是LLM输出评估和性能监控。在本教程中,我们将看到行动中的框架并学习将其应用于您自己的项目中的技术。
>让我们开始!为什么langsmith?
正如我上面提到的,Langsmith是评估大型语言应用程序的综合平台。以下是它们带来的一些特征和切实的现实世界好处:
>程序员可以在几分钟而不是小时内开始尝试Langsmith。这意味着小型团队或独奏开发人员可以在一个周末进行AI申请,并可能在周一之前运送付费服务。
>使用严格的评估工具,公司可以避免AI发行错误的尴尬和成本(例如我在介绍中给出的示例)。 Langsmith允许您根据内置标准检查LLM的输出,例如乐于助人,连贯性,厌女症,甚至是自然语言的定制评估,例如“输出陈词滥调的内容?”或者,在抽认卡的情况下,“卡是否包含编码问题?”。
实时监视和可视化>
与Langchain>通过将此文件转换为参考数据集,我们可以使用前面提到的质量保证指标来指示LLMS评估其自己的输出。
>我们现在将通过一对一的示例看到所有这些功能。
>
> llm应用程序开发工作流程>
因此,您需要一个工作流程,这一切都涉及有效地创建和测试这些提示,以查看LLM应用程序的表现,而不会淹没手动检查。这是可能的样子:1。开发
在此阶段,您将使用Langchain之类的框架制作应用程序的基础。对于抽认卡生成器项目,您的原型可能包括供应商所选LLM顶部的多个组件。例如,您可能需要将其链接到:
文档加载程序:文件输入 - PDF,文本,CSV,JSON,剪贴板,YouTube,搜索等
>
>拥有可行的应用程序后,您可以将其部署为REST API。 REST API基本上将您现有的Langchain链或代理转换为其他人可以发送请求以与您的AI模型进行交互的HTTPS链接。现在,您将构建服务的用户界面,例如桌面应用程序,或者更常见的是网站。
>现在,没有简单的方法可以做到这一点,但是Langchain开发人员即将释放Langserve,这将集成到Fastapi中(那真是太棒了?)。查看文档此页面的潜行峰。>
现在,让我们终于开始用langsmith进行修补。>
langsmith平台概述>但是,一旦您进入,着陆页将看起来像这样:
>
设置Langmith Python SDK
通过其Python SDK,在Langsmith中管理项目的管理要容易得多,该SDK通过API密钥连接到平台。接下来,在您的终端中,运行以下命令以安装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我们导入find_dotenv和load_dotenv函数以读取环境变量,并使用OS设置它们:
import warnings from dotenv import find_dotenv, load_dotenv warnings.filterwarnings("ignore")>将langchain_tracing_v2设置为true启用跟踪(记录),这对于调试LLMS至关重要。之后,我们初始化一个客户与Langsmith平台进行交谈:
>客户包含在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")在langmith
中创建一个未标记的数据集
>正如我在“ LLM应用程序开发工作流程”部分中提到的,您可能需要创建或收集数千个提示来评估您的LLM模型,链条或代理。因此,像我们上面所做的那样,运行那些一对一的人并不是最好的做法。键值(KV) - 默认值:将输入定义为任意键值对。在评估需要多个输入或返回多个输出的链条和代理时,它们很有用。
>
llm数据集(LLM):输入和输出是在llms -string in,string out的“完成样式”中定义的。>如果您浏览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"
> cotqa标准返回一个称为上下文准确性的分数,如下面的GIF(也在UI中)中所示:
在阅读本教程后,您对Langsmith确实是一个及时工程的工具,您将是正确的!目前,Langsmith是确保LLM的说明和输出的最佳框架实际上是您想要的。
>您还必须意识到构建生产级LLM应用程序所需的精力。因此,在从事LLM项目时,请使用Langsmith进行更流畅的体验。在Langchain中构建上下文感知聊天机器人
以上是Langsmith的调试和测试LLMS的简介的详细内容。更多信息请关注PHP中文网其他相关文章!