首頁 > 科技週邊 > 人工智慧 > Langsmith的調試和測試LLMS的簡介

Langsmith的調試和測試LLMS的簡介

Joseph Gordon-Levitt
發布: 2025-03-08 09:35:13
原創
154 人瀏覽過

>我最近找到了一個AI平台,該平台會自動從任何類型的媒體生成抽認卡。由於我喜歡用間距重複記憶的概念,因此我立即上傳了XGBoost教程,並要求AI在其上創建50個抽認卡。

,但我很失望。大多數問題太容易了,很少有關於代碼語法。更奇怪的是,有10%的問題是相同的,並且完全不明顯 - “法國的首都是什麼?”。 這些類型的錯誤表明缺乏適當的評估和對AI服務產生的產出的驗證。也許他們不知道蘭史密斯。

> 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。生產
  • 在此階段,您將針對盡可能多的方案測試您的應用程序。這意味著您必須確保每個添加的組件效果很好,鏈條良好,並產生一致的高質量輸出。
給定的LLM是非確定性的(它們不會為相同的輸入產生相同的輸出)和添加組件的複雜性,您將在此階段將大部分時間花費在此階段。朗史密斯的發展是使這段時間盡可能短的唯一目的。我們將在整個教程中進行更多討論。

>

3。部署

>擁有可行的應用程序後,您可以將其部署為REST API。 REST API基本上將您現有的Langchain鍊或代理轉換為其他人可以發送請求以與您的AI模型進行交互的HTTPS鏈接。現在,您將構建服務的用戶界面,例如桌面應用程序,或者更常見的是網站。

>現在,沒有簡單的方法可以做到這一點,但是Langchain開發人員即將釋放Langserve,這將集成到Fastapi中(那真是太棒了?)。查看文檔此頁面的潛行峰。

>

現在,讓我們終於開始用langsmith進行修補。

>

langsmith平台概述

>我們將從理解Web UI開始。它可通過Smith.langchain.com鏈接獲得。對於訪問,您必須註冊並從候補名單中清除,因為它目前處於封閉的beta中。

>但是,一旦您進入,著陸頁將看起來像這樣:

>

Langsmith的調試和測試LLMS的簡介

>兩個主要部分是項目和數據集和測試,並且可以通過Python SDK來操縱這兩個部分。該平台還具有用於部署和註釋隊列的選項卡,但它們超出了本文的範圍。

設置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
登入後複製
登入後複製
登入後複製
我們導入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類初始化的。

Langsmith的調試和測試LLMS的簡介

>讓我們進行第一次運行:

LANGCHAIN_API_KEY="LangSmith-API-key"
OPENAI_API_KEY="Your-OPENAI-key"
登入後複製
登入後複製
登入後複製
登入後複製

>如果您快速從UI檢查項目,則會看到上述運行跟踪(已記錄):

Langsmith的調試和測試LLMS的簡介

>設置環境變量和客戶端時,我們會自動啟用日誌記錄。如您所見,我們已經有一堆關於運行的元數據。

Langsmith的調試和測試LLMS的簡介

讓我們再運行幾個提示:

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模型,鏈條或代理。因此,像我們上面所做的那樣,運行那些一對一的人並不是最好的做法。

>

出於這個原因,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函數在一行代碼中運行所有提示:

Langsmith的調試和測試LLMS的簡介>運行完成後,它將在數據集頁面上列出。這是它的外觀:

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允許我們使用內置的評估者進行此類檢查。 Langsmith的調試和測試LLMS的簡介評估langmith

中的LLMS

>使用數據集中的三個提示來運行簡潔性和連貫性評估,我們可以使用RunevalConfig類:

LANGCHAIN_API_KEY="LangSmith-API-key"
OPENAI_API_KEY="Your-OPENAI-key"
登入後複製
登入後複製
登入後複製
登入後複製
上面的

,我們在稱為評估者的列表中定義了兩個標準。我們將這些評估器傳遞給RUN_ON_DATASET函數的評估參數:

python-dotenv to read environment variables:
pip install -U langsmith
pip install python-dotenv
登入後複製
登入後複製
登入後複製

> run_on_dataset是一個有用的功能,可以使用提供的LLM在數據集中運行所有提示,並隨時執行任何類型的評估。它的結果將在每個數據集的專用頁面上可見:

>

Langsmith的調試和測試LLMS的簡介

這次,每個提示的運行都具有連貫性和簡潔性指標。在底部,您還將看到每個度量的平均分數。

要查看所有內置標準的列表,請運行以下片段:>

import warnings

from dotenv import find_dotenv, load_dotenv

warnings.filterwarnings("ignore")
登入後複製
登入後複製
登入後複製
當然,並非所有LLM用例都可以與基本評估者一起檢查。例如,沒有評估者可以檢查抽認卡是否包含編碼問題。因此,我們最好定義它:

>通過自然語言傳遞自定義標準,我們只需將{“ criteria_name”:“檢查狀態”}傳遞給標準類。上面,我們正在創建兩個額外的評估器,因此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"
登入後複製
登入後複製
登入後複製
>

>如果您查看運行,您將看到我們在每個提示下定義的自定義標準。如果您徘徊,您將獲得LLM的推理:
from langsmith import Client

# Initialize a client
client = Client()
登入後複製
登入後複製
登入後複製
>

Langsmith的調試和測試LLMS的簡介

通過檢查所有提示的評估結果,您會發現我們的標準未按預期進行評估。因此,這是要考慮的事情 - 您還需要提示設計標準以確保它們檢查正確的內容。 Langsmith的調試和測試LLMS的簡介>

創建標記的數據集

有時,您可以決定創建一個帶有預期輸出(例如標記為數據集)的提示數據集。您可以以各種格式創建標記的數據集,但也許最常見的數據集是CSV文件。例如,這是我用chatgpt生成的文件,其中包含pytorch語法上的五個問題:

為了創建一個數據集,我們可以使用upload_csv函數:>

Langsmith的調試和測試LLMS的簡介該函數具有三個必需的參數: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",
)
登入後複製
登入後複製
登入後複製
>讓我們從本數據集的上一節中運行我們的自定義標準:

>如果您轉到數據集頁面並查看運行,我們可以看到每個自定義標準的平均分數:

>

Langsmith的調試和測試LLMS的簡介

評估標記的數據集

用自然語言編寫的內置和自定義評估器

主要用於未標記的數據集。對於我們上傳的標記數據集,例如我們上傳的CSV數據集,Langsmith提供了更全面的評估者,以衡量對提示的響應的正確性:>

    > context_qa(上下文Q&A):在評估正確性
  • 的同時使用示例輸出作為上下文
  • > QA(Q&A):使用參考輸出
  • > cot_qa(經過思考鏈問答):類似於Context_QA,但是該評估者迫使LLM在達成裁決之前使用經過思考的推理。
  • >
讓我們在示例中嘗試最後一個:

LANGCHAIN_API_KEY="LangSmith-API-key"
OPENAI_API_KEY="Your-OPENAI-key"
登入後複製
登入後複製
登入後複製
登入後複製
> cotqa標準返回一個稱為上下文準確性的分數,如下面的GIF(也在UI中)中所示:

>

Langsmith的調試和測試LLMS的簡介

請訪問Langsmith文檔的Langchain評估員部分,以了解有關評估人員的更多信息。

結論

在閱讀本教程後,您對Langsmith確實是一個及時工程的工具,您將是正確的!目前,Langsmith是確保LLM的說明和輸出的最佳框架實際上是您想要的。

>您還必須意識到構建生產級LLM應用程序所需的精力。因此,在從事LLM項目時,請使用Langsmith進行更流暢的體驗。

>

>如果蘭史密斯的某些概念沒有意義,那麼您可能缺乏蘭班林的一些基本原理。以下是一些資源:

蘭鏈介紹數據工程

    在Langchain中構建上下文感知聊天機器人
  • > langchain
  • 的及時工程
  • >如何使用langchain
  • 構建LLM應用程序
  • > Langchain Docs
  • langsmith docs

以上是Langsmith的調試和測試LLMS的簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板