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)

Meta的Llama 3.2:多模式和移動AI的飛躍 Meta最近公佈了Llama 3.2,這是AI的重大進步,具有強大的視覺功能和針對移動設備優化的輕量級文本模型。 以成功為基礎

嘿,編碼忍者!您當天計劃哪些與編碼有關的任務?在您進一步研究此博客之前,我希望您考慮所有與編碼相關的困境,這是將其列出的。 完畢? - 讓&#8217

本週的AI景觀:進步,道德考慮和監管辯論的旋風。 OpenAI,Google,Meta和Microsoft等主要參與者已經釋放了一系列更新,從開創性的新車型到LE的關鍵轉變

Shopify首席執行官TobiLütke最近的備忘錄大膽地宣布AI對每位員工的基本期望是公司內部的重大文化轉變。 這不是短暫的趨勢。這是整合到P中的新操作範式

介紹 Openai已根據備受期待的“草莓”建築發布了其新模型。這種稱為O1的創新模型增強了推理能力,使其可以通過問題進行思考

介紹 想像一下,穿過美術館,周圍是生動的繪畫和雕塑。現在,如果您可以向每一部分提出一個問題並獲得有意義的答案,該怎麼辦?您可能會問:“您在講什麼故事?

SQL的Alter表語句:動態地將列添加到數據庫 在數據管理中,SQL的適應性至關重要。 需要即時調整數據庫結構嗎? Alter表語句是您的解決方案。本指南的詳細信息添加了Colu

斯坦福大學以人為本人工智能研究所發布的《2025年人工智能指數報告》對正在進行的人工智能革命進行了很好的概述。讓我們用四個簡單的概念來解讀它:認知(了解正在發生的事情)、欣賞(看到好處)、接納(面對挑戰)和責任(弄清我們的責任)。 認知:人工智能無處不在,並且發展迅速 我們需要敏銳地意識到人工智能發展和傳播的速度有多快。人工智能係統正在不斷改進,在數學和復雜思維測試中取得了優異的成績,而就在一年前,它們還在這些測試中慘敗。想像一下,人工智能解決複雜的編碼問題或研究生水平的科學問題——自2023年
