)
1. 引言在開發(fā)基于大語言模型LLM的應(yīng)用時調(diào)試和評估往往是最令人頭疼的環(huán)節(jié)。模型輸出不穩(wěn)定、調(diào)用鏈路復(fù)雜、Prompt 迭代難以追蹤……這些問題在傳統(tǒng)軟件開發(fā)中幾乎不存在卻在 LLM 應(yīng)用中成為常態(tài)。LangSmith 正是為解決這些問題而生的可觀測性與評估平臺。它由 LangChain 團隊推出能夠幫助你追蹤每一次模型調(diào)用、記錄完整的調(diào)用鏈路、評估 Prompt 效果并持續(xù)優(yōu)化你的 LLM 應(yīng)用。本文將帶你全面了解 LangSmith 的核心功能、使用場景并通過實際代碼示例演示如何快速接入。2. 什么是 LangSmithLangSmith 是一個用于構(gòu)建、調(diào)試、評估和監(jiān)控 LLM 應(yīng)用的開發(fā)者平臺。它提供了從開發(fā)到生產(chǎn)全生命周期的可觀測性支持是 LangChain 生態(tài)中不可或缺的一環(huán)。簡單來說LangSmith 解決的是 LLM 應(yīng)用開發(fā)中的三大痛點調(diào)試?yán)щyLLM 輸出不確定出錯時難以定位是 Prompt 問題、模型問題還是代碼邏輯問題。評估主觀如何量化一個 Prompt 的好壞如何對比不同模型的輸出質(zhì)量監(jiān)控缺失應(yīng)用上線后如何及時發(fā)現(xiàn)異常調(diào)用、成本飆升或質(zhì)量下降LangSmith 通過Trace追蹤、Dataset數(shù)據(jù)集和Evaluator評估器三大核心能力系統(tǒng)性地解決了這些問題。3. 核心功能3.1 Trace全鏈路追蹤Trace 是 LangSmith 最基礎(chǔ)也最強大的功能。當(dāng)你通過 LangChain 或 LangSmith SDK 運行應(yīng)用時每一次調(diào)用都會被自動記錄形成完整的調(diào)用鏈路。每條 Trace 包含輸入與輸出每一步的 Prompt、模型輸出、中間結(jié)果。耗時與成本每一步的延遲和 Token 消耗。元數(shù)據(jù)模型名稱、溫度參數(shù)、版本號等。通過 Trace你可以像調(diào)試傳統(tǒng)代碼一樣逐步查看 LLM 應(yīng)用的每一步執(zhí)行情況。3.2 Dataset數(shù)據(jù)集管理Dataset 是 LangSmith 評估體系的基礎(chǔ)。你可以將一組輸入-期望輸出對組織成數(shù)據(jù)集用于后續(xù)的批量評估。數(shù)據(jù)集支持多種創(chuàng)建方式從 Trace 中導(dǎo)出將線上真實請求保存為數(shù)據(jù)集。手動上傳通過 CSV 或 JSON 文件導(dǎo)入。代碼創(chuàng)建通過 SDK 在代碼中動態(tài)創(chuàng)建。3.3 Evaluator自動化評估Evaluator 是 LangSmith 的評估引擎。你可以為數(shù)據(jù)集配置一個或多個評估器對模型輸出進行自動化打分。評估器類型包括基于規(guī)則的評估如字符串匹配、JSON 結(jié)構(gòu)校驗。基于 LLM 的評估讓另一個 LLM 作為裁判對輸出質(zhì)量打分。自定義評估通過代碼實現(xiàn)任意評估邏輯。4. 快速開始4.1 環(huán)境準(zhǔn)備首先你需要注冊一個 LangSmith 賬號并創(chuàng)建 API Key。訪問 LangSmith 官網(wǎng)登錄后在設(shè)置頁面生成 API Key。然后安裝必要的依賴pipinstall-Ulangsmith langchain-openai4.2 配置環(huán)境變量在項目根目錄創(chuàng)建.env文件LANGCHAIN_TRACING_V2trueLANGCHAIN_API_KEYyour_langsmith_api_keyLANGCHAIN_PROJECTmy-first-projectOPENAI_API_KEYyour_openai_api_key其中LANGCHAIN_TRACING_V2開啟 LangSmith 追蹤。LANGCHAIN_API_KEY你的 LangSmith API Key。LANGCHAIN_PROJECT項目名稱用于在 LangSmith 中區(qū)分不同應(yīng)用。OPENAI_API_KEY你的 OpenAI API Key。4.3 第一個追蹤示例下面是一個最簡單的示例演示如何通過 LangChain 調(diào)用 OpenAI 并自動記錄 Traceimportosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAI load_dotenv()# 初始化模型llmChatOpenAI(modelgpt-4o-mini,temperature0)# 直接調(diào)用LangSmith 會自動記錄 Traceresponsellm.invoke(用一句話介紹 LangSmith)print(response.content)運行這段代碼后登錄 LangSmith 控制臺你就能在對應(yīng)項目中看到這次調(diào)用的完整 Trace包括 Prompt、響應(yīng)、Token 消耗和耗時。4.4 在 Chain 中追蹤實際應(yīng)用中我們通常使用 Chain 串聯(lián)多個步驟。LangSmith 會自動記錄 Chain 中每一步的詳細信息fromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParser# 創(chuàng)建 Prompt 模板promptChatPromptTemplate.from_messages([(system,你是一位資深的 {topic} 專家。),(human,請用三句話介紹 {topic} 的核心概念。)])# 構(gòu)建 Chainchainprompt|llm|StrOutputParser()# 執(zhí)行 Chainresultchain.invoke({topic:機器學(xué)習(xí)})print(result)在 LangSmith 控制臺中你可以看到這條 Chain 的完整執(zhí)行鏈路Prompt 模板渲染 → 模型調(diào)用 → 輸出解析每一步的輸入輸出都清晰可見。5. 數(shù)據(jù)集與評估實戰(zhàn)5.1 創(chuàng)建數(shù)據(jù)集通過 SDK 在代碼中創(chuàng)建數(shù)據(jù)集并添加樣本fromlangsmithimportClient clientClient()# 創(chuàng)建數(shù)據(jù)集datasetclient.create_dataset(dataset_nameqa-benchmark,description問答質(zhì)量評估數(shù)據(jù)集)# 添加樣本client.create_examples(dataset_iddataset.id,inputs[{question:什么是 LangSmith},{question:LangSmith 和 LangChain 有什么關(guān)系}],outputs[{answer:LangSmith 是 LLM 應(yīng)用的可觀測性與評估平臺。},{answer:LangSmith 是 LangChain 生態(tài)中的監(jiān)控與評估工具。}])5.2 運行批量評估創(chuàng)建數(shù)據(jù)集后可以對 Chain 進行批量評估fromlangsmith.evaluationimportevaluatefromlangsmith.schemasimportExample,Run# 定義評估函數(shù)defcorrectness_evaluator(run:Run,example:Example)-dict:簡單的關(guān)鍵詞匹配評估器predictionrun.outputs.get(output,)referenceexample.outputs.get(answer,)score1.0ifreferenceinpredictionelse0.0return{key:correctness,score:score}# 運行評估resultsevaluate(lambdainputs:chain.invoke(inputs[question]),dataqa-benchmark,evaluators[correctness_evaluator])# 打印評估結(jié)果forresultinresults:print(f樣本:{result[example][inputs]})print(f得分:{result[evaluation_results][results][0][score]})評估完成后你可以在 LangSmith 控制臺中查看每個樣本的詳細評估報告包括輸入、輸出、得分和評估理由。6. 進階用法6.1 自定義 Trace 元數(shù)據(jù)你可以為每次調(diào)用附加自定義元數(shù)據(jù)便于后續(xù)篩選和分析fromlangchain_core.callbacksimportconfigure_callbacksfromlangsmithimporttraceabletraceable(metadata{feature:chat,version:v1.2})defchat_with_metadata(question:str)-str:returnllm.invoke(question).content resultchat_with_metadata(LangSmith 支持哪些評估方式)6.2 手動記錄 Trace如果你不使用 LangChain也可以直接通過 LangSmith SDK 手動記錄 Tracefromlangsmithimporttraceabletraceable(run_typechain,namecustom_chain)defcustom_pipeline(question:str)-str:# 模擬多步驟處理step1f預(yù)處理:{question}step2llm.invoke(step1).contentreturnstep2 resultcustom_pipeline(LangSmith 如何接入非 LangChain 項目)6.3 基于 LLM 的自動評估使用 LLM 作為裁判對輸出質(zhì)量進行更智能的評估fromlangsmith.evaluationimportevaluatefromlangsmith.evaluatorsimportcriteria_evaluator# 使用內(nèi)置的 criteria 評估器resultsevaluate(lambdainputs:chain.invoke(inputs[question]),dataqa-benchmark,evaluators[criteria_evaluator(criteriarelevance,llmllm)])7. 最佳實踐7.1 項目命名規(guī)范為不同環(huán)境創(chuàng)建獨立項目便于區(qū)分project-dev開發(fā)環(huán)境project-staging預(yù)發(fā)布環(huán)境project-prod生產(chǎn)環(huán)境7.2 合理使用采樣率生產(chǎn)環(huán)境流量較大時可以通過采樣率控制 Trace 記錄量importos os.environ[LANGCHAIN_TRACING_SAMPLING_RATE]0.1# 記錄 10% 的請求7.3 定期回歸評估將線上真實請求沉淀為數(shù)據(jù)集定期運行回歸評估及時發(fā)現(xiàn)質(zhì)量回退# 從線上 Trace 導(dǎo)出數(shù)據(jù)集client.create_dataset_from_traces(dataset_nameprod-traces-weekly,project_nameproject-prod,start_time2026-08-21,end_time2026-08-28)8. 總結(jié)LangSmith 是 LLM 應(yīng)用開發(fā)中不可或缺的可觀測性與評估平臺。通過本文的介紹你已經(jīng)了解了Trace全鏈路追蹤讓調(diào)試變得簡單直觀。Dataset數(shù)據(jù)集管理為評估提供基礎(chǔ)。Evaluator自動化評估讓優(yōu)化有據(jù)可依。無論是個人開發(fā)還是團隊協(xié)作LangSmith 都能幫助你更高效地構(gòu)建、調(diào)試和優(yōu)化 LLM 應(yīng)用。建議你從最簡單的 Trace 功能開始逐步深入數(shù)據(jù)集和評估體系讓 LangSmith 成為你 LLM 開發(fā)流程中的得力助手。