什么是 LangSmith?
LangSmith 是 LangChain 團隊開發的一個統一開發者平臺,用于構建、測試、評估和監控基于大型語言模型(LLM)的應用程序。它提供了一套工具,幫助開發者更好地理解、調試和改進他們的 LLM 應用。
注冊 LangSmith
在開始使用 LangSmith 前,您需要創建一個賬戶:
- 訪問 LangSmith 網站
- 點擊 “Sign Up” 創建新賬戶或使用現有賬戶登錄
- 完成注冊流程,您將獲得訪問 LangSmith 控制臺的權限
API 密鑰設置
要將您的應用與 LangSmith 集成,您需要獲取 API 密鑰:
- 登錄到 LangSmith 控制臺
- 點擊右上角的個人資料圖標,然后選擇 “API 密鑰”
- 創建新的 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 中的項目用于組織和管理相關的運行和數據集:
- 在 LangSmith 控制臺中,點擊 “Projects” 標簽
- 點擊 “Create New Project” 按鈕
- 輸入項目名稱和可選的描述
- 點擊 “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")
故障排除
常見問題
-
沒有看到任何運行數據
- 確保
LANGCHAIN_API_KEY
和LANGCHAIN_TRACING_V2
環境變量已正確設置 - 檢查網絡連接,確保您的環境可以訪問 LangSmith API
- 確保
-
運行數據不完整
- 確保運行已正確結束,所有鏈和代理都已完成執行
- 檢查是否有未捕獲的異常中斷了跟蹤過程
-
API 密鑰錯誤
- 驗證您的 API 密鑰是否正確
- 檢查 API 密鑰是否已過期或被撤銷
調試提示
啟用詳細日志記錄以幫助調試 LangSmith 集成:
import logginglogging.basicConfig(level=logging.DEBUG)
logging.getLogger("langsmith").setLevel(logging.DEBUG)
其他資源
- LangSmith 官方文檔
- LangSmith API 參考
- LangChain 集成指南