掘金 人工智能 18小时前
LangSmith:大模型应用调试利器
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

LangSmith是LangChain团队推出的一款LLM应用可观察性平台,为开发者提供从开发到生产的全流程支持。它通过追踪、调试和评估LLM应用的每一步,将LLM开发从依赖直觉转变为数据驱动的工程学。本文详细介绍了LangSmith的核心价值、工作原理,以及评估、监控和提示词工程等高级功能,帮助开发者构建可靠、可维护的生产级LLM应用。

👁️ LangSmith的核心在于其强大的追踪能力,它将应用的每一次完整执行记录为一个Trace,内部由一系列层级分明的Run构成,形成一个无限展开的“追踪树”,清晰展示应用的执行逻辑,便于开发者理解和调试。

⚙️ LangSmith的工作原理是挂钩到LangChain应用的执行流程中,自动捕获每一步操作,将混沌的执行过程转化为有序、可视化的数据流。这种结构与LangChain表达式语言(LCEL)执行图同构,使得代码逻辑与追踪可视化结构紧密耦合,便于调试。

📈 LangSmith提供评估、监控和提示工程三大进阶功能,构成一个强大的LLMOps闭环,帮助开发者系统性地提升应用质量。评估功能支持创建数据集、定义评估器和运行实验,通过量化指标指导应用迭代;监控功能提供预置仪表盘、自定义仪表盘和告警功能,实时了解生产环境的运行状态;提示工程功能提供Prompt Hub和Playground,方便团队协作进行提示词的版本控制、测试和优化。

构建大语言模型(LLM)应用,就如同在没有仪表盘的情况下驾驶一架构造精密的飞机。或许能让它起飞,但对于飞行过程中的引擎状态、航行轨迹和潜在风险却知之甚少。这正是当前许多 LLM 应用开发者面临的普遍困境。LangSmith 作为 LangChain 团队推出的一款专业工具,为开发者提供了从开发到生产的全流程支持。

为何 LLM 应用需要一双“慧眼”?

在过去的几个月里,随着我们深入探索使用 LangChain 等工具构建实用应用,一个反复出现的问题浮出水面:我们编写 Chains、发送 Prompts、获取输出,但对这背后究竟发生了什么却一无所知 。这种缺乏可见性的状态,是 LLM 开发区别于传统软件工程的核心挑战之一。开发者们常常被一连串的疑问所困扰 :  

当应用表现不佳或出现非预期结果时,我们只能无奈地猜测:“嗯……也许是 Prompts 的问题?还是 Chains 没有正确调用 LLM?是不是超时了?” 这种调试过程充满了不确定性,严重拖慢了开发和迭代的速度。  

就在这时,LangSmith 应运而生。可以把它想象成是专为 LLM 工作流打造的“Postman + Datadog + Chrome DevTools”的集合体 。它由 LangChain 团队开发,旨在为开发者提供一双“慧眼”,能够追踪、调试和评估 LLM 应用的每一步,无论是 Prompts、Chains、Agent、工具使用还是 Token 消耗,都尽在掌握 。LangSmith 的核心价值在于,它将 LLM 应用开发从一种依赖直觉和运气的“炼金术”,转变为一门有据可循、数据驱动的“工程学”。  

本文将作为一份详尽的指南,带领您:

    深入理解 LangSmith 的核心价值与工作原理。亲手从零到一搭建一个可观测的 LLM 应用。全面掌握评估(Evaluation)、监控(Monitoring)和提示词工程(Prompt Engineering)等高级功能。

LangSmith 究竟是什么?

在深入实践之前,我们必须首先清晰地理解 LangSmith 的基本构成和工作逻辑。它不仅仅是一个日志工具,更是一个完整的 LLM 应用可观察性平台。

可观察性:从混沌到有序

在 LLM 领域,“可观察性”(Observability)的含义远超传统监控。由于 LLM 的非确定性,我们不仅需要知道应用“是否”在运行,更需要理解它“如何”运行以及“为何”会产生特定的输出 。  

想象一个典型的、使用 LangChain 构建的复杂应用,其实际流程可能如下所示 :  

用户提示词 --> 链 --> 工具调用 --> 子链 --> LLM --> 输出 --> LLM --> 最终输出

在没有 LangSmith 的情况下,这个流程对开发者而言就是一个“黑箱”。一旦出现问题,调试过程便如同在黑暗的洞穴中摸索 。  

LangSmith 的出现,彻底改变了这一局面。它通过挂钩(hook)到 LangChain 应用的执行流程中,自动捕获每一步操作,将混沌的执行过程转化为有序、可视化的数据流 。它就像是为这架高科技飞机装上了全套的飞行数据记录仪。  

LangSmith 的工作原理:追踪树

LangSmith 的核心机制在于其强大的追踪(Tracing)能力。每一次完整的应用执行,从接收用户输入到返回最终结果,都会被记录为一个 Trace(调用链)。而这个 Trace 内部,则由一系列层级分明的 Run(运行步骤)构成。

理解这一结构的最佳方式,是将其想象成一个可以无限展开的“追踪树”(Trace Tree)。  

[Run] 🟢 LLMChain: QA Chain   ├── [PromptTemplate] 📄 Final prompt rendered   └── [LLM Call] 🤖 Model: gpt-4           └── Tokens used: 107           └── Time taken: 2.1s           └── Response: "Paris is the capital of France."

这棵树的每一个节点都代表一个 Run,清晰地展示了应用的执行逻辑:

这种结构并非巧合。它实际上是 LangChain 表达式语言(LCEL)执行图的直接、一对一的可视化。当开发者使用管道符 | 编写代码 prompt | llm | parser 时,他们正在定义一个计算图 。LangSmith 的追踪树就是这个计算图在运行时的真实写照。这意味着,代码的逻辑结构与追踪的可视化结构是同构的。因此,使用 LangSmith 调试,不仅仅是查看日志,更是在直观地验证代码逻辑是否按预期执行。这种代码与可观察性之间的紧密耦合,是 LangChain 生态系统的一大核心优势。

从 0 到 1 构建你的第一个可观测应用

环境准备与 API 密钥获取

在编写代码之前,我们需要完成一些必要的准备工作 。  

    注册 LangSmith 并获取 API 密钥

      访问 LangSmith 官网:https://smith.langchain.com。使用 GitHub 或 Google 账号登录。登录后,进入 "Settings" 页面(通常在右上角的用户菜单下),点击 "API Keys" 选项卡,然后点击 "+ New API Key" 创建一个新的密钥。请务必立即复制并妥善保管这个密钥,因为它只会出现一次。

    创建项目与设置

      在本地,为项目创建一个新文件夹并进入该目录:

      mkdir langsmith-translatorcd langsmith-translator

      创建一个 Python 虚拟环境。这是一个良好的开发习惯,可以隔离项目依赖。

      # Mac/Linuxpython3 -m venv venvsource venv/bin/activate# Windowspython -m venv venvvenv\Scripts\activate

      安装所有必需的 Python 包:

      pip install langchain langchain-openai openai langsmith python-dotenv
        langchain, langchain-openai, openai: 用于构建 LLM 应用的核心库。langsmith: LangSmith 的 Python SDK,与 LangChain 无缝集成。python-dotenv: 用于从 .env 文件中加载环境变量,保护你的密钥安全。

    配置环境变量

      在项目根目录下创建一个名为 .env 的文件:

      touch.env

      打开这个文件,并填入以下内容。请将占位符替换为你自己的真实密钥和信息 。  

      代码段

      # 这是一个“魔法开关”,设为 true 即可自动开启 LangSmith 追踪LANGSMITH_TRACING="true"# LangSmith 的 API 端点LANGSMITH_ENDPOINT="https://api.smith.langchain.com"# 你在第一步中获取的 LangSmith API 密钥LANGSMITH_API_KEY="ls_..."# 在 LangSmith UI 中显示的项目名称LANGSMITH_PROJECT="langsmith-translator"# 你的 OpenAI API 密钥OPENAI_API_KEY="sk-..."

一个值得特别强调的开发者体验优势是:为现有的 LangChain 项目开启可观察性,几乎是“零代码侵入”的。你不需要修改任何应用逻辑,只需配置好上述环境变量,LangSmith 就会在后台自动开始工作 。这极大地降低了采纳成本,让开发者可以在几分钟内就为项目装上“慧眼”。  

英法翻译应用

环境配置完毕,现在我们可以编写应用的核心代码了。创建一个名为 main.py 的文件,并将以下代码粘贴进去 。  

import osfrom dotenv import load_dotenvfrom langchain_openai import ChatOpenAIfrom langchain_core.prompts import PromptTemplatefrom langchain_core.output_parsers import StrOutputParser# 从.env 文件加载环境变量load_dotenv()# 1. 初始化大语言模型# 我们选择 gpt-4o-mini,并设置 temperature 为 0.5 以获得较为稳定的输出# 你也可以换成 gpt-3.5-turbo 等其他模型llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.5)# 2. 创建提示模板# {sentence} 是一个占位符,将在运行时被实际的英文句子替换prompt = PromptTemplate.from_template(    "Translate this English sentence to French:\n\n{sentence}")# 3. 构建链 (Chain)# 这里使用了 LangChain Expression Language (LCEL) 的核心语法——管道符 `|`# 它将提示、模型和输出解析器“链接”成一个可执行的链 (Runnable)translator_chain = prompt | llm | StrOutputParser()# 4. 运行链并打印结果input_text = "Good morning, how are you?"result = translator_chain.invoke({"sentence": input_text})print("French Translation:", result)

代码解析

2.3 运行与追踪:在 LangSmith UI 中解密“黑箱”

在终端中运行脚本:

python main.py

你应该会看到类似下面的输出 :  

French Translation: Bonjour, comment ça va?

应用成功运行了。但更重要的是,后台发生了什么?

现在,回到浏览器,打开 LangSmith 网站,并导航到你刚才创建的 langsmith-translator 项目。会看到一次新的运行记录已经被添加了。

点击这次运行记录,进入 Trace 详情页。这正是解密“黑箱”的 Aha moment。在这个界面上,可以清晰地看到 :  

至此,我们已经成功地构建并观察了你的第一个 LLM 应用。所有曾经困扰你的疑问——“实际发送了什么提示?”、“耗了多少 Token?”——现在都有了清晰、明确的答案。这就是 LangSmith 带来的力量。

LangSmith 的三大进阶“超能力”

基础的追踪和调试功能仅仅是 LangSmith 的起点。它的真正威力在于覆盖了从开发、测试到生产监控的整个 LLM 应用生命周期 。接下来,我们将深入探索 LangSmith 的三大进阶“超能力”:评估、监控和提示工程。这三大功能共同构成了一个强大的 LLMOps 闭环,能帮助你系统性地提升应用质量。  

超能力一:评估 (Evaluation) - 将迭代从“艺术”变为“科学”

面临的挑战:当修改了 Prompt、更换了模型或者调整了 RAG 的检索策略后,如何科学地判断应用性能是变好了还是变坏了?单纯依靠感觉和少数几个例子的测试是不可靠的 。  

LangSmith 的解决方案:引入“评估驱动开发”(Evaluation-Driven Development, EDD)的理念,通过系统性的测试和量化指标来指导应用迭代 。  

核心流程

    创建数据集 (Datasets) :评估的第一步是建立一个“黄金标准”测试集。可以通过多种方式创建数据集 :  

      从 Trace 中筛选:在 LangSmith 的项目视图中,可以筛选出有价值的生产环境 Trace(例如,被用户标记为“差评”的对话,或导致错误的运行),并将它们一键添加为测试数据集中的“示例”(Example)。手动创建或上传:也可以在 UI 上手动创建示例,或通过 CSV 文件批量上传精心设计的测试用例。每个示例包含输入(inputs)和可选的参考输出(reference outputs)。

    定义评估器 (Evaluators) :评估器是用于给模型输出打分的函数。LangSmith 提供了丰富的评估器选项 :  

      内置评估器:LangSmith 开箱即用地提供了多种基于“LLM-as-a-Judge”(让一个强大的 LLM 来充当裁判)的评估器。例如:

        Correctness (正确性):判断答案是否与参考答案一致。Faithfulness (忠实度):在 RAG 场景中,判断答案是否完全基于所提供的上下文,没有“幻觉”。Relevance (相关性):判断答案是否与用户问题相关。Tool Selection (工具选择):在 Agent 场景中,评估 Agent 是否选择了正确的工具。

      自定义评估器:如果内置评估器无法满足你的需求,你可以用 Python 或 TypeScript 编写任意复杂的评估逻辑作为自定义评估器。

    运行实验 (Experiments) :有了数据集和评估器,就可以对应用的不同版本进行横向比较了。在 LangSmith UI 或通过 SDK,你可以针对同一个数据集,运行多个“实验”(Experiment),比如“使用 Prompt A 的版本” vs “使用 Prompt B 的版本” 。  

    分析与决策:实验完成后,LangSmith 会生成一个直观的对比视图。

可以看到每个版本在各个评估指标(如正确率、忠实度分数)、以及延迟和成本等维度上的表现。基于这些数据,你就能做出明智的决策:哪个 Prompt 更好?是否值得为了微小的质量提升而接受更高的成本?这种数据驱动的迭代方式,将应用优化从一门“玄学”变成了一门严谨的“科学”。

超能力二:监控 (Monitoring) - 为生产环境装上“仪表盘”

面临的挑战:应用成功上线后,战斗才刚刚开始。如何实时了解其在生产环境中的运行状态?成本是否超预算?延迟是否影响用户体验?错误率是否在飙升?

LangSmith 的解决方案:提供强大的监控仪表盘(Monitoring Dashboards)功能,让你对生产环境了如指掌 。

核心功能

超能力三:提示工程 (Prompt Engineering) - 团队协作的“指挥中心”

面临的挑战:Prompt 是 LLM 应用的灵魂,但它的管理却常常陷入混乱。Prompt 的版本如何控制?如何让不写代码的产品经理或领域专家也能方便地参与 Prompt 的测试和优化?

LangSmith 的解决方案:提供 Prompt Hub 和 Playground,一个为团队协作而生的提示工程中心 。  

核心功能

这三大“超能力”并非孤立存在,它们共同构成了一个高效的 LLMOps 闭环:

这个闭环工作流,正是将 LLM 应用从原型推向可靠的生产级产品的核心路径。

结语

从理解 LLM 开发的“黑箱”之痛,到亲手点亮第一盏追踪的明灯,再到探索评估、监控和提示工程的广阔天地,LangSmith 的核心价值已经清晰地展现在我们面前。

它不仅仅是一个调试工具,更是一个全面的 LLM 应用开发与运维平台。它将 LLM 应用开发从充满不确定性的“手工作坊”阶段,推向了有迹可循、数据驱动的“现代工程学”阶段。

LangSmith 的出现,以及它所代表的 LLMOps 运动,标志着 AI 开发行业正在走向成熟。业界的焦点正从“我们能否构建一个酷炫的演示?”转向“我们能否构建一个可靠、可维护、可信赖的生产级产品?” 。在这个转变过程中,像 LangSmith 这样的工具将不再是锦上添花,而是不可或缺的基石。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangSmith LLM 可观测性 LLMOps Prompt Engineering
相关文章