LangSmith 設置指南

什么是 LangSmith?

LangSmith 是 LangChain 團隊開發的一個統一開發者平臺,用于構建、測試、評估和監控基于大型語言模型(LLM)的應用程序。它提供了一套工具,幫助開發者更好地理解、調試和改進他們的 LLM 應用。

注冊 LangSmith

在開始使用 LangSmith 前,您需要創建一個賬戶:

  1. 訪問 LangSmith 網站
  2. 點擊 “Sign Up” 創建新賬戶或使用現有賬戶登錄
  3. 完成注冊流程,您將獲得訪問 LangSmith 控制臺的權限

API 密鑰設置

要將您的應用與 LangSmith 集成,您需要獲取 API 密鑰:

  1. 登錄到 LangSmith 控制臺
  2. 點擊右上角的個人資料圖標,然后選擇 “API 密鑰”
  3. 創建新的 API 密鑰并復制它

將此 API 密鑰設置為環境變量:

# 在 Linux/MacOS 上
export LANGCHAIN_API_KEY="your-api-key-here"
export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_PROJECT="my-project-name"  # 可選,指定項目名稱# 在 Windows 上
set LANGCHAIN_API_KEY=your-api-key-here
set LANGCHAIN_TRACING_V2=true
set LANGCHAIN_PROJECT=my-project-name

您也可以在代碼中直接設置這些變量:

import osos.environ["LANGCHAIN_API_KEY"] = "your-api-key-here"
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = "my-project-name"

安裝 LangSmith 客戶端庫

LangSmith 客戶端庫可以通過 pip 安裝:

pip install langsmith

如果您已經安裝了 LangChain,那么從 LangChain 版本 0.0.267 開始,LangSmith 跟蹤功能已經被自動包含在其中。

項目設置

創建項目

LangSmith 中的項目用于組織和管理相關的運行和數據集:

  1. 在 LangSmith 控制臺中,點擊 “Projects” 標簽
  2. 點擊 “Create New Project” 按鈕
  3. 輸入項目名稱和可選的描述
  4. 點擊 “Create”

指定項目

您可以通過以下方式在代碼中指定要使用的項目:

# 方法 1:環境變量
os.environ["LANGCHAIN_PROJECT"] = "my-project-name"# 方法 2:使用 langchain.smith 上下文管理器
from langchain.smith import RunEvalConfigwith RunEvalConfig(project_name="my-project-name"):# 您的 LangChain 代碼在這里chain.invoke({"input": "Hello world"})

為監控配置應用

基本跟蹤

要啟用基本的 LangSmith 跟蹤,只需設置環境變量:

os.environ["LANGCHAIN_TRACING_V2"] = "true"

這將自動捕獲所有 LangChain 運行并將其發送到 LangSmith。

自定義跟蹤

您可以添加額外的元數據和標簽來豐富您的跟蹤數據:

from langchain.callbacks.tracers import LangSmithTracer# 創建一個帶有自定義元數據的跟蹤器
tracer = LangSmithTracer(project_name="my-custom-project",tags=["production", "user-query"],metadata={"user_id": "user-123", "session_id": "abc-xyz"}
)# 將跟蹤器添加到鏈的調用中
result = chain.invoke({"input": "Hello"}, config={"callbacks": [tracer]})

記錄自定義步驟

您可以使用 LangSmith API 記錄不是 LangChain 組件的自定義步驟:

from langsmith import Clientclient = Client()def process_data(data):# 創建一個新的運行with client.trace("data_processing", name="Process Raw Data") as run:try:# 您的數據處理代碼result = transform_data(data)# 記錄輸出run.end(outputs={"processed_data": result})return resultexcept Exception as e:# 記錄錯誤run.end(error=str(e))raise

LangChain 組件的自動監控

LangChain 與 LangSmith 深度集成,大多數 LangChain 組件都會自動發送遙測數據到 LangSmith,包括:

  • LLM 和 ChatModel 調用
  • 提示模板渲染
  • 鏈和序列執行
  • 檢索器查詢
  • 工具和代理操作

您只需要設置環境變量,無需額外的代碼修改。

跨環境跟蹤

開發環境

在開發環境中,您可能希望啟用詳細跟蹤以便調試:

# 開發環境配置
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = "my-app-dev"

生產環境

在生產環境中,您可能希望限制跟蹤范圍或添加額外標簽:

# 生產環境配置
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = "my-app-prod"# 使用標簽區分不同環境或功能
from langchain.callbacks.tracers import LangSmithTracertracer = LangSmithTracer(project_name="my-app-prod",tags=["production", "region-asia"],metadata={"deployment_id": "v2.5"}
)

客戶端庫 API

手動創建運行

您可以使用 LangSmith 客戶端庫直接創建和管理運行:

from langsmith import Clientclient = Client()# 創建新的運行
run = client.create_run(name="Custom Process",run_type="chain",inputs={"query": "What's the weather like?"},project_name="my-project"
)try:# 執行一些操作output = process_query("What's the weather like?")# 更新運行狀態為成功client.update_run(run.id,outputs={"result": output},end_time=datetime.datetime.utcnow())
except Exception as e:# 記錄錯誤client.update_run(run.id,error=str(e),end_time=datetime.datetime.utcnow())

查詢運行

您可以編程方式查詢和分析 LangSmith 中的運行:

from langsmith import Clientclient = Client()# 獲取特定項目中的運行
runs = client.list_runs(project_name="my-project",filter={"start_time": {"$gt": "2023-07-01"},"error": {"$exists": False}}
)# 分析運行結果
for run in runs:print(f"Run ID: {run.id}, Latency: {run.latency_ms} ms")

故障排除

常見問題

  1. 沒有看到任何運行數據

    • 確保 LANGCHAIN_API_KEYLANGCHAIN_TRACING_V2 環境變量已正確設置
    • 檢查網絡連接,確保您的環境可以訪問 LangSmith API
  2. 運行數據不完整

    • 確保運行已正確結束,所有鏈和代理都已完成執行
    • 檢查是否有未捕獲的異常中斷了跟蹤過程
  3. API 密鑰錯誤

    • 驗證您的 API 密鑰是否正確
    • 檢查 API 密鑰是否已過期或被撤銷

調試提示

啟用詳細日志記錄以幫助調試 LangSmith 集成:

import logginglogging.basicConfig(level=logging.DEBUG)
logging.getLogger("langsmith").setLevel(logging.DEBUG)

其他資源

  • LangSmith 官方文檔
  • LangSmith API 參考
  • LangChain 集成指南

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

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

相關文章

手撕TCP內網穿透及配置樹莓派

注意: 本文內容于 2025-04-13 15:09:48 創建,可能不會在此平臺上進行更新。如果您希望查看最新版本或更多相關內容,請訪問原文地址:手撕TCP內網穿透及配置樹莓派。感謝您的關注與支持! 之前入手了樹莓派5,…

Java從入門到“放棄”(精通)之旅——程序邏輯控制④

Java從入門到“放棄”(精通)之旅🚀:程序邏輯的完美理解 一、開篇:程序員的"人生選擇" 曾經的我,生活就像一段順序執行的代碼: System.out.println("早上8:00起床"); Syste…

學習筆記九——Rust所有權機制

🦀 Rust 所有權機制 📚 目錄 什么是值類型和引用類型?值語義和引用語義?什么是所有權?為什么 Rust 需要它?所有權的三大原則(修正版)移動語義 vs 復制語義:變量賦值到底…

Cocos Creator Shader入門實戰(八):Shader實現圓形、橢圓、菱形等頭像

引擎:3.8.5 您好,我是鶴九日! 回顧 Shader的學習是一條漫長的道路。 理論知識的枯燥無味,讓很多人選擇了放棄。然而不得不說:任何新知識、新領域的學習,本身面臨的都是問題! 互聯網和AI給了我…

深入理解計算機操作系統(持續更新中...)

文章目錄 一、計算機系統漫游1.1信息就是位上下文 一、計算機系統漫游 1.1信息就是位上下文 源程序實際上就是一個由值0和1組成的位(又稱為比特),八個位被組織成一組,稱為字節。每個字節表示程序中的某些文本字符 大部分現代計…

YOLO V8的??Anchor-Free??、??解耦頭(Decoupled Head)、損失函數定義(含??Varifocal Loss)

YOLOv8 的 ??Anchor-Free?? 設計摒棄了傳統 YOLO 系列中依賴預定義錨框(Anchor Boxes)的機制,轉而直接預測目標的中心點和邊界框尺寸。這種設計簡化了模型結構,降低了超參數調優的復雜度提升了檢測速度和精度。以下是其核心實…

QuarkPi-CA2 RK3588S卡片電腦:6.0Tops NPU+8K視頻編解碼+接口豐富,高性能嵌入式開發!

QuarkPi-CA2 RK3588S卡片電腦:6.0Tops NPU8K視頻編解碼接口豐富,高性能嵌入式開發! 芯片框架 視頻介紹 https://www.bilibili.com/video/BV1btdbYkEjY 開發板介紹 核心升級,產品炸裂 QuarkPi-CA2卡片電腦搭載瑞芯微RK3588S芯片…

【響應式編程】Reactor 常用操作符與使用指南

文章目錄 一、創建操作符1. just —— 創建包含指定元素的流2. fromIterable —— 從集合創建 Flux3. empty —— 創建空的 Flux 或 Mono4. fromArray —— 從數組創建 Flux5. fromStream —— 從 Java 8 Stream 創建 Flux6. create —— 使用 FluxSink 手動發射元素7. generat…

從靜態綁定驅動模型到現代設備模型 —— 一次驅動架構的進化之旅

🔍 B站相應的視屏教程: 📌 內核:博文視頻 - 從靜態綁定驅動模型到現代設備模型 在 Linux 內核的發展歷程中,設備驅動結構經歷了從"硬編碼 手動注冊"的早期實現方式,到"設備模型統一管理&qu…

Embedding質量評估、空間塌縮、 Alignment Uniformity

Embedding質量的評估和空間塌縮的解決是自然語言處理(NLP)和推薦系統領域的關鍵問題。以下是綜合多篇研究的總結: 一、Embedding質量評估方法 基準測試與任務指標 MTEB/C-MTEB:使用多語言或中文的基準測試集(如58個數據…

批量給dwg顯示略縮圖_c#插件實現(com)

如果,cad文件無略縮圖: AutoCAD2021版本以上,命令行輸入"netload "加載此dll插件,然后輸入 “lst”,選擇文件夾,即可一鍵實現給dwg增加略縮圖。 效果如下: 附部分代碼: …

嬰幼兒托育服務與管理實訓室:托育未來的基石

在社會對嬰幼兒托育服務的重視程度不斷加深的當下,專業托育人才的需求急劇增長。嬰幼兒托育服務與管理專業作為培育這類人才的關鍵途徑,要求學生熟練掌握嬰幼兒身心發展、飲食營養以及衛生保健等基礎知識,同時具備全面的照護與管理能力。要實…

(自用)若依生成左樹右表

第一步: 在數據庫創建樹表和單表: SQL命令: 商品表 CREATE TABLE products (product_id INT AUTO_INCREMENT PRIMARY KEY,product_name VARCHAR(255) , price DECIMAL(10, 2) , stock INT NOT NULL, category_id INT NOT NULL); 商品分類…

Linux:DNS服務配置(課堂實驗總結)

遇到的問題,都有解決方案,希望我的博客能為你提供一點幫助。 操作系統:rocky Linux 9.5 ??一、配置DNS服務器的核心步驟?? 步驟 1:安裝 BIND 軟件?? ??檢查是否安裝??: rpm -qa | grep "^bind"…

搭建一個Spring Boot聚合項目

1. 創建父項目 打開IntelliJ IDEA,選擇 New Project。 在創建向導中選擇 Maven,確保選中 Create from archetype,選擇 org.apache.maven.archetypes:maven-archetype-quickstart。 填寫項目信息: GroupId:com.exampl…

若依前后端分離版運行教程、打包教程、部署教程

后端打包教程 注意:需要先運行redis 2、前端運行教程 2.1安裝依賴 2.2運行 打開瀏覽器查看,地址:http://localhost:80 3、前端打包教程 3.1打包 3.2運行打包好的文件,先找到打包好的文件 這是nginx的文件結構 將打包好的文件放到html目錄下…

SpringAi 會話記憶功能

在使用chatGPT,豆包等產品后,就會發現他們的會話有“記憶”功能。 那么我們用API接口的話,這個是怎么實現的呢? 屬于比較粗暴的方式,把之前的內容與新的提示詞一起再次發給大模型。讓我們看到他們有記憶功能。 下面介紹…

基于Python的經濟循環模型構建與可視化案例

一、代碼結構概覽 該代碼構建了一個包含經濟數據生成、可視化分析和政策模擬的交互式經濟系統仿真平臺,主要包括三大模塊: 多部門經濟數據生成:模擬包含產業關聯的復雜經濟數據 增強型可視化:提供多維度的經濟數據分析視圖 Das…

第十六屆藍橋杯大賽軟件賽省賽 Python 大學 B 組 部分題解

題面鏈接Htlang/2025lqb_python_b 個人覺得今年這套題整體比往年要簡單許多,但是G題想簡單了出大問題,預估50101015120860,道阻且長,再接再厲 A: 攻擊次數 答案:103?181?題目沒說明白每回合是…

C++基礎精講-05

文章目錄 1.構造函數初始化列表1.1 初始化列表的使用1.2 有參構造函數的默認值 2.對象所占空間大小2.1 大小的計算2.2 內存對齊機制 3. 析構函數3.1 基本概念3.2 總結 4.valgrind工具集4.1 介紹4.2 memcheck的使用 5. 拷貝構造函數5.1 拷貝構造函數定義5.2 淺拷貝/深拷貝5.3 拷…