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