>我最近找到了一個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
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模型,鏈條或代理。因此,像我們上面所做的那樣,運行那些一對一的人並不是最好的做法。鍵值(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"
在閱讀本教程後,您對Langsmith確實是一個及時工程的工具,您將是正確的!目前,Langsmith是確保LLM的說明和輸出的最佳框架實際上是您想要的。
>您還必須意識到構建生產級LLM應用程序所需的精力。因此,在從事LLM項目時,請使用Langsmith進行更流暢的體驗。 在Langchain中構建上下文感知聊天機器人
以上是Langsmith的調試和測試LLMS的簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!