使用LangSmith來快速學習LangChain

好風憑借力,送我上青云!

什么是LangSmith

LangSmith is a platform for building production-grade LLM applications.

It lets you debug, test, evaluate, and monitor chains and intelligent agents built on any LLM framework and seamlessly integrates with LangChain, the go-to open source framework for building with LLMs.

LangSmith is developed by LangChain, the company behind the open source LangChain framework.

LangSmith 是一個用于構建生產級 LLM 應用程序的平臺。
它允許您調試、測試、評估和監控基于任何 LLM 框架構建的鏈和智能代理,并無縫集成 LangChain(用于構建 LLM 的首選開源框架)。
LangSmith 由 LangChain 開發,LangChain 是開源 LangChain 框架背后的公司。

LangSmith的目標很宏大,但是實際上還是處于早期階段,目前最實用的功能還是調試、跟蹤LangChain應用,但是單是這一項的價值都已經無可估量,可以大大縮減你學習LangChain的時間,提高用LangChain開發LLM應用的效率。

用LangChain來完成大語言模型的應用原型/代理很簡單,但是,要交付實際的大語言應用異常困難:可能要大量定制、迭代Prompt、鏈和其他組件。LangSmith可以幫你快速調試鏈、代理或者一組工具,可視化各種組件(鏈、llms、檢索器retrievers等)如何交互及使用,評估不同的Prompts等等。

注冊與設置

注冊

登錄 https://smith.langchain.com/ 可以直接用Discord、GitHub、Google賬號登錄,也可以用自己郵箱注冊。現在已經不需要邀請碼。

生成API Key

在這里插入圖片描述

注意生成Key的時候就復制下來,后面丟了就只能重新生成。

設置環境變量

Linux用下面的命令設置環境變量:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY="<your-api-key>"
export LANGCHAIN_PROJECT="langchain_for_llm_application_development"

Windows可以用下面的命令:

setx LANGCHAIN_TRACING_V2 true
setx LANGCHAIN_ENDPOINT "https://api.smith.langchain.com"
setx LANGCHAIN_API_KEY <your-api-key>
setx LANGCHAIN_PROJECT langchain_for_llm_application_development

LANGCHAIN_TRACING_V2是設置LangChain是否開啟日志跟蹤模式。

LANGCHAIN_PROJECT 是要跟蹤的項目名稱,如果LangSmith平臺上還沒有這個項目,會自動創建。如果不設置這個環境變量,會把相關信息寫到default項目。這里的項目不一定要跟你實際的項目一一對應,可以理解為分類或者標簽。你只要在運行某個應用前改變這一項,就會把相關的日志寫到這個下面。可以按開發、生產環境分,也可以按日期分等等。

LANGCHAIN_API_KEY就是上面生成的LangSmith的key。

設置好環境變量就可以了,代碼無需任何變動!完全沒有侵入性的感覺真好。當然,如果要較真的話,引入LangChain的時候代碼就已經侵入了,但是我們本來就要用LangChain,那就不用管這個了。

使用

我們可以使用LangSmith調試:出乎意料的最終結果、代理為何一直在循環、鏈為何比預期慢、代理使用了多少個令牌等等。

我們來看一個RouterChain的例子(源碼來自黃佳老師的課程):

'''歡迎來到LangChain實戰課
https://time.geekbang.org/column/intro/100617601
作者 黃佳'''
import warnings
warnings.filterwarnings('ignore')# 設置OpenAI API密鑰
# import os
# os.environ["OPENAI_API_KEY"] = 'Your Key'
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())  # read local .env file
from langchain.chat_models import AzureChatOpenAI# 構建兩個場景的模板
flower_care_template = """
你是一個經驗豐富的園丁,擅長解答關于養花育花的問題。
下面是需要你來回答的問題:
{input}
"""flower_deco_template = """
你是一位網紅插花大師,擅長解答關于鮮花裝飾的問題。
下面是需要你來回答的問題:
{input}
"""# 構建提示信息
prompt_infos = [{"key": "flower_care","description": "適合回答關于鮮花護理的問題","template": flower_care_template,},{"key": "flower_decoration","description": "適合回答關于鮮花裝飾的問題","template": flower_deco_template,}
]# 初始化語言模型
# from langchain.llms import OpenAI
# llm = OpenAI()
llm = AzureChatOpenAI(deployment_name="GPT-4", temperature=0)# 構建目標鏈
from langchain.chains.llm import LLMChain
from langchain.prompts import PromptTemplatechain_map = {}for info in prompt_infos:prompt = PromptTemplate(template=info['template'],input_variables=["input"])print("目標提示:\n", prompt)chain = LLMChain(llm=llm,prompt=prompt,verbose=True)chain_map[info["key"]] = chain# 構建路由鏈
from langchain.chains.router.llm_router import LLMRouterChain, RouterOutputParser
from langchain.chains.router.multi_prompt_prompt import MULTI_PROMPT_ROUTER_TEMPLATE as RounterTemplatedestinations = [f"{p['key']}: {p['description']}" for p in prompt_infos]
router_template = RounterTemplate.format(destinations="\n".join(destinations))
print("路由模板:\n", router_template)router_prompt = PromptTemplate(template=router_template,input_variables=["input"],output_parser=RouterOutputParser(),
)
print("路由提示:\n", router_prompt)router_chain = LLMRouterChain.from_llm(llm,router_prompt,verbose=True
)# 構建默認鏈
from langchain.chains import ConversationChain
default_chain = ConversationChain(llm=llm,output_key="text",verbose=True
)# 構建多提示鏈
from langchain.chains.router import MultiPromptChainchain = MultiPromptChain(router_chain=router_chain,destination_chains=chain_map,default_chain=default_chain,verbose=True
)# 測試1
print(chain.run("如何為玫瑰澆水?"))

雖然黃佳老師加了很多print輸出信息,但是代碼的邏輯還是不容易看清楚。

查看運行情況

運行一次上面的程序,然后打開LangSmith,找到最近一次的運行:
在這里插入圖片描述

從圖中,我們可以很直觀的看到LangChain組件的調用順序(如果有用過微服務的Zipkin,對這個界面應該不陌生)、每一步耗費的時間、調用OpenAI消耗的Token數。

使用Playground

面向LLM編程,很多時候就是要迭代Prompt。在LangSmith里除了可以直接看到輸入給LLM的Prompt和輸出結果,更方便的是里面還集成了Playground,可以直接修改Prompt來看輸出的結果。

點擊上圖右上角的Playground,進去后你會發現你調用LLM的各種參數、Prompt都幫你設置好了(OpenAI的Key還要設置,只保存在本地瀏覽器)。

這樣,你就可以修改你的Prompt,重新運行,觀察Prompt改變引起的結果變化。

在Playground里執行的過程會記錄到“playground”這個項目。
在這里插入圖片描述

添加到數據集

在查看運行情況的界面,點擊右上角的“Add to Dataset”,可以把對應的輸入、輸出添加到數據集,后面大模型或者Prompt有了調整,可以用數據集來測試、評估。
在這里插入圖片描述

Hub

LangSmith里面還有一個有趣的功能是Hub。在Hub里,可以發現、分享和對Prompt進行版本控制。Hub感覺是借用GitHub的概念,也可以叫PromptHub?

對別人分享出來的Prompt,你可以點愛心收藏(收藏了之后沒找到相應的入口 😅),也可以Fork、試運行。
在這里插入圖片描述

總的來說,LangSmith還處于快速開發的階段(LangChain本身也才0.0.348版),某些功能還比較簡陋。從另一方面來說,我們可以和它一起成長,更快速掌握LangChain,打造自己的LLM應用。

參考

  1. LangSmith文檔:https://docs.smith.langchain.com/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209249.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209249.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209249.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python學習路線 - Python語言基礎入門 - 循環語句

Python學習路線 - Python語言基礎入門 - 循環語句 前言為什么學習循環語句 while循環的基礎語法while循環語句while循環注意點 while循環的基礎案例while循環的嵌套應用while循環的嵌套 while循環的嵌套案例補充知識 - print輸出不換行補充知識 - 制表符\t練習案例 - 打印九九乘…

創建dockerSwarm nfs掛載

創建dockerSwarm nfs掛載 nfs高可用部署(lsyncd兩主機雙向同步) nfs高可用部署(lsyncd三主機三向同步) 1. 通過 Volume 1.1 創建 Docker Volume 每個 swarm 節點均創建相同名稱的 Docker Volume&#xff08;名稱為 nfs120&#xff09; docker volume create --driver local …

算法:進制之前的轉換

1. X進制轉換成十進制-V1&#xff1a; /*** 笨辦法&#xff0c;從左往右開始* Tips&#xff1a;只支持正數** param num* param radix* return*/private static Integer xToTenV1(String num, Integer radix) {if (num.length() 0 || num.charAt(0) -) {throw new IllegalArg…

外貿找客戶軟件工具:BotMaster 18.5 Crack

BotMaster 拓展您的業務大師增加銷量Whatsapp營銷&#xff0c;使用 BotMaster 將您的業務提升到新的水平 - 最強大的 WhatsApp 營銷軟件&#xff0c;可促進銷售和發展您的業務。 BotMaster 是一款革命性的 WhatsApp 營銷工具&#xff0c;于 2022 年 1 月推出。這款功能強大的工…

10 大 Mac 數據恢復軟件深度評測

對于任何依賴計算機獲取重要文件&#xff08;無論是個人照片還是重要商業文檔&#xff09;的人來說&#xff0c;數據丟失可能是一場噩夢。值得慶幸的是&#xff0c;有多種專門為 Mac 用戶提供的數據恢復工具&#xff0c;可以幫助檢索丟失或意外刪除的文件。在本文中&#xff0c…

HNU計算機體系結構-實驗3:多cache一致性算法

文章目錄 實驗3 多cache一致性算法一、實驗目的二、實驗說明三 實驗內容1、cache一致性算法-監聽法模擬2、cache一致性算法-目錄法模擬 四、思考題五、實驗總結 實驗3 多cache一致性算法 一、實驗目的 熟悉cache一致性模擬器&#xff08;監聽法和目錄法&#xff09;的使用&am…

從零構建屬于自己的GPT系列4:模型訓練3(訓練過程解讀、序列填充函數、損失計算函數、評價函數、代碼逐行解讀)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 實戰系列 總目錄 有任何問題歡迎在下面留言 本篇文章的代碼運行界面均在PyCharm中進行 本篇文章配套的代碼資源已經上傳 從零構建屬于自己的GPT系列1&#xff1a;數據預處理 從零構建屬于自己的GPT系列2&#xff1a;模型訓…

[力扣100] 10.滑動窗口的最大值

添加鏈接描述 class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# 思路是使用單調隊列&#xff0c;把滑動窗口中最大的元素放在最頭quecollections.deque()nlen(nums)res[]# 初始化隊列,隊頭保存最大的數的下標&#xff0c;因為需要下標來…

Spring Security 6.x 系列(10)—— SecurityConfigurer 配置器及其分支實現源碼分析(二)

一、前言 在本系列文章&#xff1a; Spring Security 6.x 系列&#xff08;4&#xff09;—— 基于過濾器鏈的源碼分析&#xff08;一&#xff09; 中著重分析了Spring Security在Spring Boot自動配置、 DefaultSecurityFilterChain和FilterChainProxy 的構造過程。 Spring …

Oauth2.0 認證

目錄 前言 1.介紹 2.Oauth2.0過程詳解 3.Oauth 整合到 Spring Boot 實踐 4.方法及配置詳解&#xff1a; 總結 前言 Oauth2.0 是非常流行的網絡授權表準&#xff0c;已經廣泛應用在全球范圍內&#xff0c;比較大的公司&#xff0c;如騰訊等都有大量的應用場景。 1.介紹 …

ARP欺騙攻擊

一.大概原理 ARP&#xff1a;address solution protocol 地址解析協議 ARP是一種基于局域網的TCP/IP協議&#xff0c;arp欺騙就是基于此協議的漏洞來達成我們的目的的&#xff0c;局域網中的數據傳輸并不是用ip地址傳輸的&#xff0c;而是靠mac地址。 我們如果出于某種目的想…

vue打包完成后出現空白頁原因及解決

vue打包完成后出現空白頁原因及解決 原因 資源路徑不對 路由模式&#xff1a;使用history&#xff0c; 此模式上線后易出現404 解決 1、vue.config.js中配置: publicPath: ./2、在后端要求做重定向 如在nginx中使用rewrite做重定向

【Fastadmin】利用 build_select 做一個樹狀下拉選擇框

1.效果展示 系統crud生成的下拉分類有些不是很好看&#xff0c;并且選擇困難&#xff0c;看不出級差&#xff0c;效果如下&#xff1a; 經過 build_select 加工后的效果,美觀好看&#xff0c;并添加上搜索功能: 2. 首先需要寫一個樹狀圖的數據格式 protected $datalist []; pu…

前沿科技與醫藥領域碰撞,《AI制藥方法與實踐》課程重磅上線

藥物發現是生物學、化學、醫學、藥學等基礎研究與工業轉化的重要窗口。近年來&#xff0c;AI技術的發展&#xff0c;為高投入、高失敗率的制藥行業帶來了全新機遇&#xff0c;或將徹底改變傳統制藥的研究范式。為了幫助更多人了解并掌握這一前沿技術&#xff0c;百度飛槳聯合清…

LeedCode刷題---滑動窗口問題

顧得泉&#xff1a;個人主頁 個人專欄&#xff1a;《Linux操作系統》 《C/C》 《LeedCode刷題》 鍵盤敲爛&#xff0c;年薪百萬&#xff01; 一、長度最小的子數組 題目鏈接&#xff1a;長度最小的子數組 題目描述 給定一個含有 n 個正整數的數組和一個正整數 target 。…

29 水仙花數

題目描述 所謂水仙花數&#xff0c;是指一個n位的正整數&#xff0c;其各位數字的n次方和等于該數本身。 例如153是水仙花數&#xff0c;153是一個3位數&#xff0c;并且1531^35^33^3. 輸入描述 第一行輸入一個整數n&#xff0c;表示一個n位的正整數。n在3到7之間&#xff0c;…

uniapp各種小程序分享 share - 主要流程 - 微信、抖音、快手、qq

參考 小程序環境 分享 | uni-app官網uni-app,uniCloud,serverless,分享,uni.share(OBJECT),分享到微信聊天界面示例代碼,分享到微信朋友圈示例代碼,uni.share 在App端各社交平臺分享配置說明,uni.shareWithSystem(OBJECT),plus.share.sendWithhttps://uniapp.dcloud.net.cn/a…

MCS-51系列與AT89C5x系列單片機的介紹與AT系列的命名規則

MCS-51系列與AT89C5x系列單片機 主要涉及MCS-51系列與AT89C5x系列單片機的介紹與AT系列單片機的命名規則 文章目錄 MCS-51系列與AT89C5x系列單片機一、 MCS-51系列單片機二、AT89C5x系列單片機2.1 AT89C5x/AT89S5x系列單片機的特點2.2 AT89系列單片機的型號說明2.2.1 前綴2.2.2…

數組區段的最大最小值

題干 本題要求實現一個函數&#xff0c;找出數組中一部分數據的最大值和最小值。 題目保證沒有無效數據。 函數接口定義&#xff1a; void sublistMaxMin ( int* from, int* to, int* max, int* min ); 其中 from和to都是用戶傳入的參數&#xff0c;分別存放數組部分數據的起…

深度綁定的二維碼

南京西祠 500 萬股股份被以 1 元價格掛牌轉讓。 唏噓不已&#xff0c;就像現在的孩子們都知道玩抖音&#xff0c;我們那個時代&#xff0c;西祠胡同就是互聯網的代名詞。在一個叫做西祠胡同的地方&#xff0c;住著一群村里的年輕人&#xff0c;他們痛并快樂著&#xff0c;渴望…