跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonSaaSAI

使用 LangSmith 加速 LangChain 开发与调试

LangSmith 是 LangChain 公司推出的用于构建生产级 LLM 应用程序的平台,提供调试、测试、评估和监控功能。 LangSmith 的核心概念及配置方法,包括 API Key 生成与环境变量设置。通过 RouterChain 实战案例,演示了如何利用 LangSmith 追踪链式调用、分析耗时与 Token 消耗。此外,详细讲解了 Playground 交互式调试 Prompt、数据集构建与评估、以及 Hub 社区协作功能。文章最后总结了成本控制、数据安全、版本兼容性及项目隔离等最佳实践,旨在帮助开发者高效掌握 LangChain 开发流程。

锁机制发布于 2025/2/6更新于 2026/9/858 浏览
使用 LangSmith 加速 LangChain 开发与调试

使用 LangSmith 加速 LangChain 开发与调试

什么是 LangSmith

LangSmith 是一个用于构建生产级 LLM(大语言模型)应用程序的平台。它允许开发者调试、测试、评估和监控基于任何 LLM 框架构建的链(Chains)和智能代理(Agents),并无缝集成 LangChain——这是目前构建 LLM 应用的首选开源框架。

LangSmith 由 LangChain 公司开发,旨在解决 LLM 应用开发中的黑盒问题。虽然其目标宏大且仍处于快速迭代阶段,但目前最实用的功能集中在调试和跟踪 LangChain 应用上。这一项价值已无可估量,能大大缩减学习 LangChain 的时间,提高开发效率。

用 LangChain 完成大语言模型的应用原型或代理很简单,但要交付实际的大语言应用异常困难:往往需要大量定制、迭代 Prompt、链和其他组件。LangSmith 可以帮助开发者快速调试链、代理或工具集,可视化各种组件(如链、LLM、检索器 Retriever 等)如何交互及使用,并评估不同的 Prompt 效果。

注册与设置

1. 注册账号

访问 LangSmith 官网进行注册。支持通过 Discord、GitHub、Google 账号登录,也可以使用邮箱注册。平台目前可能需要邀请码才能注册,具体以官方最新政策为准。

2. 生成 API Key

登录后进入控制台,找到 API Keys 管理页面。点击生成新的 Key,请务必在生成时复制保存,一旦丢失只能重新生成。

3. 配置环境变量

为了启用 LangSmith 的自动追踪功能,需要在运行代码的环境中设置特定的环境变量。这完全无需修改业务代码,具有非侵入性。

Linux / macOS 环境:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY="<your-api-key>"
export LANGCHAIN_PROJECT="langchain_for_llm_application_development"

Windows 环境:

setx LANGCHAIN_TRACING_V2 true
setx LANGCHAIN_ENDPOINT "https://api.smith.langchain.com"
setx LANGCHAIN_API_KEY <your-api-key>
setx LANGCHAIN_PROJECT langchain_for_llm_application_development

变量说明:

  • LANGCHAIN_TRACING_V2:控制是否开启日志追踪模式,必须设为 true。
  • LANGCHAIN_PROJECT:指定要跟踪的项目名称。如果平台上不存在该项目,会自动创建。若不设置,信息将写入默认的 default 项目。项目名称不必与实际项目一一对应,可理解为分类标签,可按开发/生产环境或日期区分。
  • LANGCHAIN_API_KEY:即上面生成的 API Key。

实战示例:RouterChain 调试

下面展示一个 RouterChain 的使用案例,该示例展示了如何通过路由链分发不同类型的用户请求。

import warnings
warnings.filterwarnings('ignore')

# 加载本地环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

# 初始化语言模型
from langchain_openai import AzureChatOpenAI
llm = AzureChatOpenAI(deployment_name="GPT-4", temperature=0)

# 构建两个场景的模板
flower_care_template = """
你是一个经验丰富的园丁,擅长解答关于养花育花的问题。
下面是需要你来回答的问题:
{input}
"""

flower_deco_template = """
你是一位网红插花大师,擅长解答关于鲜花装饰的问题。
下面是需要你来回答的问题:
{input}
"""

# 构建提示信息
prompt_infos = [
    {
        "key": "flower_care",
        "description": "适合回答关于鲜花护理的问题",
        "template": flower_care_template,
    },
    {
        "key": "flower_decoration",
        "description": "适合回答关于鲜花装饰的问题",
        "template": flower_deco_template,
    }
]

# 构建目标链
from langchain.chains.llm import LLMChain
from langchain.prompts import PromptTemplate

chain_map = {}
for info in prompt_infos:
    prompt = PromptTemplate(
        template=info['template'],
        input_variables=["input"]
    )
    chain = LLMChain(
        llm=llm,
        prompt=prompt,
        verbose=True
    )
    chain_map[info["key"]] = chain

# 构建路由链
from langchain.chains.router.llm_router import LLMRouterChain, RouterOutputParser
from langchain.chains.router.multi_prompt_prompt import MULTI_PROMPT_ROUTER_TEMPLATE as RounterTemplate

destinations = [f"{p['key']}: {p['description']}" for p in prompt_infos]
router_template = RounterTemplate.format(destinations="\n".join(destinations))

router_prompt = PromptTemplate(
    template=router_template,
    input_variables=["input"],
    output_parser=RouterOutputParser(),
)

router_chain = LLMRouterChain.from_llm(
    llm,
    router_prompt,
    verbose=True
)

# 构建默认链
from langchain.chains import ConversationChain
default_chain = ConversationChain(
    llm=llm,
    output_key="text",
    verbose=True
)

# 构建多提示链
from langchain.chains.router import MultiPromptChain

chain = MultiPromptChain(
    router_chain=router_chain,
    destination_chains=chain_map,
    default_chain=default_chain,
    verbose=True
)

# 测试运行
print(chain.run("如何为玫瑰浇水?"))

虽然代码逻辑清晰,但在复杂链路中,手动排查问题依然困难。结合 LangSmith 可以直观看到内部调用细节。

核心功能详解

1. 查看运行情况 (Tracing)

运行上述程序后,打开 LangSmith 控制台,找到最近一次的运行记录。界面会展示 LangChain 组件的调用顺序,类似于微服务架构中的 Zipkin 链路追踪。

通过 Trace 视图,你可以看到:

  • 调用顺序:每个 Chain、Tool 或 Agent 的执行步骤。
  • 耗时分析:每一步耗费的时间,帮助定位性能瓶颈。
  • Token 消耗:调用 OpenAI 或其他 LLM 消耗的 Token 数量,便于成本估算。
  • 输入输出:每一步的 Input 和 Output 详情。

这对于排查'出乎意料的最终结果'、'代理为何一直在循环'、'链为何比预期慢'等问题至关重要。

2. Playground 交互式调试

面向 LLM 编程,很多时候是在迭代 Prompt。LangSmith 集成了 Playground 功能,可以直接修改 Prompt 参数并观察输出变化。

  • 在 Trace 详情页点击右上角的 Playground。
  • 系统会自动填充当前调用的 LLM 参数和 Prompt 模板。
  • 你可以直接修改 Prompt 文本或温度(Temperature)等参数,重新运行。
  • 执行过程会被记录到名为'playground'的项目下,方便对比不同 Prompt 的效果。

这种方式极大地降低了 Prompt 工程的试错成本。

3. 数据集与评估 (Datasets & Evaluation)

在查看运行情况的界面,点击右上角的'Add to Dataset',可以将对应的输入、输出添加到数据集中。

  • 构建测试集:收集典型的用户问答对,形成基准数据集。
  • 回归测试:当调整模型或 Prompt 后,使用数据集批量测试,确保新方案没有破坏原有功能。
  • 指标评估:LangSmith 支持自定义评估指标,可以量化评估 LLM 输出的质量(如相关性、安全性等)。

4. Hub 社区协作

LangSmith 内置了 Hub 功能,类似于 Prompt 版本的 GitHub。

  • 发现与分享:用户可以发布自己的 Prompt 模板供他人使用。
  • 版本控制:对 Prompt 进行 Fork、试运行和版本管理。
  • 复用能力:可以直接引用社区分享的优质 Prompt,加速开发进程。

最佳实践与注意事项

1. 成本控制

由于 LLM 调用按 Token 计费,建议在开发阶段充分利用 LangSmith 的 Token 统计功能。对于高频调用的场景,可以通过缓存机制减少重复请求,并在 LangSmith 中监控 Token 增长趋势。

2. 数据安全

在生产环境中,注意不要将敏感数据(如用户隐私、API Key)直接传入 LLM。LangSmith 提供了数据脱敏选项,可以在上传日志前自动过滤敏感字段。

3. 版本兼容性

LangChain 更新频繁,部分旧版导入路径可能在新版本中失效。例如 langchain.chat_models 在新版中可能迁移至 langchain_openai。建议定期检查依赖库文档,保持代码与框架版本兼容。

4. 项目隔离

利用 LANGCHAIN_PROJECT 环境变量区分不同环境(开发、测试、生产)。避免将生产环境的日志混入开发环境,导致数据污染或误操作。

总结

LangSmith 是 LangChain 生态中不可或缺的工具,它将 LLM 应用的调试从'猜谜游戏'转变为可视化的工程流程。通过 Trace 追踪、Playground 迭代、Dataset 评估等功能,开发者可以更高效地构建可靠的 AI 应用。尽管平台仍在快速迭代中,但掌握其核心用法能显著提升开发效率和产品质量。

随着 LangChain 框架本身的成熟,LangSmith 也将持续进化。建议开发者尽早接入,积累调试经验,共同推动 LLM 应用工程化能力的提升。

目录

  1. 使用 LangSmith 加速 LangChain 开发与调试
  2. 什么是 LangSmith
  3. 注册与设置
  4. 1. 注册账号
  5. 2. 生成 API Key
  6. 3. 配置环境变量
  7. 实战示例:RouterChain 调试
  8. 加载本地环境变量
  9. 初始化语言模型
  10. 构建两个场景的模板
  11. 构建提示信息
  12. 构建目标链
  13. 构建路由链
  14. 构建默认链
  15. 构建多提示链
  16. 测试运行
  17. 核心功能详解
  18. 1. 查看运行情况 (Tracing)
  19. 2. Playground 交互式调试
  20. 3. 数据集与评估 (Datasets & Evaluation)
  21. 4. Hub 社区协作
  22. 最佳实践与注意事项
  23. 1. 成本控制
  24. 2. 数据安全
  25. 3. 版本兼容性
  26. 4. 项目隔离
  27. 总结

更多推荐文章

查看全部
  • C++ 实现 UTF-8 与 GBK 字符编码转换及源码示例
  • OpenClaw 对接飞书实现多机器人群聊配置
  • TypeScript 核心概念与面试实战指南
  • AI 写作工具深度评测:9 大平台功能与价格对比
  • Flutter 组件 tavily_dart 在鸿蒙平台的适配与 AI 搜索集成实战
  • 大模型算法面试指南:核心问题与答案解析
  • CSS 文字与段落排版详解
  • DeepSeek 与通义万相结合制作 AI 视频实战指南
  • 三菱 R 系列 PLC 远程 IO 机器人通信与触摸屏配方应用
  • JavaScript 核心实践:客户端检测与能力检测策略
  • NX 12.0 插件开发:安全捕获 C++ 运行时异常
  • LeetCode 236 二叉树的最近公共祖先与 173 二叉搜索树迭代器
  • 开源异构数据库同步工具 DBSyncer:安装与实战指南
  • 链表在内存管理与缓存淘汰中的应用
  • 写真馆在线管理系统设计与实现
  • llama.cpp 量化模型部署实战:从模型转换到 API 服务
  • JavaScript 中 var、let、const 的核心区别与实战应用
  • 六大核心芯片 MCU/SOC/DSP/FPGA/NPU/GPU 区别与应用解析
  • GitHub Copilot 兼容 OpenAI/Anthropic API 代理服务详解
  • C++ 基础实战:从循环控制到算法入门

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online