关键词:LangSmith, LLMOps, Debug, Tracing, Evaluation

大家好,我是飞哥!👋

在上一篇 LangChain 零基础入门:用 Python 打造你的第一个大模型应用(附 DeepSeek 实战) 中,我们学会了怎么把大模型、Prompt 和 Output Parser 串成一条流水线(Chain)。

但随着你的 Chain 越来越复杂,你可能会遇到这些**“抓狂时刻”**:

  • 😫 黑盒焦虑:代码跑通了,但结果不对,不知道是 Prompt 没写好,还是模型抽风了,还是解析器错了?
  • 💸 账单刺客:刚才那次运行到底消耗了多少 Token?为什么比预期贵这么多?
  • 🐢 龟速排查:还在代码里到处写 print()?控制台全是日志,看得眼花缭乱?

今天,飞哥就带你认识一位新朋友——LangSmith,它是 LangChain 官方推出的“调试神器”。


一、 为什么要用 LangSmith?

1. 锚定已知:修车需要仪表盘

想象一下,你是一名汽车修理工。如果一辆车坏了,但是没有仪表盘,没有故障码,你只能靠听声音、闻味道来修车,这得多难?
现在的 AI 应用开发也是一样。大模型本身就是一个巨大的“黑盒”,如果你没有工具去监控它内部发生了什么,那你就是在“盲修”。

2. 生动类比:透视管道的“X光机”

如果把 LangChain 比作一套复杂的“自来水管道系统”(数据在里面流转),那么 LangSmith 就是这套管道的“全透明玻璃外壳” + “智能水表”。

  • 全透明:你能清清楚楚地看到,水(数据)从哪里流进去,流经了哪些阀门(步骤),在哪个弯道(节点)变脏了(出错),或者在哪里堵住了(延迟)。
  • 智能水表:它还能精确记录每一滴水(Token)的流向,告诉你哪一段管道最费水(最烧钱)。

3. 提炼骨架

所以,LangSmith 的本质就是一个 LLMOps(大模型运维)平台
它的核心价值就是三个词:追踪 (Trace)调试 (Debug)评估 (Eval)

用户输入 ➡️ [LangChain 流水线] ➡️ 最终结果
                 ⬇️
           [LangSmith 监控]
           👀 这里的 Prompt 是啥?
           ⏱️ 这里耗时多久?
           💰 这里花了多少钱?

二、 极速上手:三步点亮“上帝视角”

LangSmith 最棒的一点是:几乎不需要改代码!只要加几行配置就行。

第一步:获取 Key

  1. LangSmith 官网 注册一个账号。
  2. 在左下角设置里生成一个 LANGCHAIN_API_KEY

第二步:配置“魔法咒语” (环境变量)

在你的项目根目录下创建一个 .env 文件,填入以下内容:

# DeepSeek Key
DEEPSEEK_API_KEY=sk-...

# LangSmith 配置
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=ls-...
LANGCHAIN_PROJECT=飞哥的AI实验室

第三步:正常运行代码

我们直接复用上一节的“程序员夸夸机”代码,完全不用改业务逻辑

💡 注意:如果你用的是 DeepSeek,记得按第一节的方法配置 base_urlapi_key。这里展示的是完整的多轮对话版本,和我们的实战代码保持一致。

import os
import sys
# 加载 .env 里的配置 (包含 LangSmith 和 DeepSeek 的 Key)
from dotenv import load_dotenv
load_dotenv()

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.output_parsers import StrOutputParser
from langchain_core.messages import HumanMessage, AIMessage

# 1. 初始化模型 (适配 DeepSeek)
model = ChatOpenAI(
    model="deepseek-chat", 
    base_url="https://api.deepseek.com",
    api_key=os.getenv("DEEPSEEK_API_KEY")
)

# 2. 准备 Prompt (支持多轮对话)
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个富有诗意的程序员鼓励师,请把用户的丧气话改写成一句充满代码哲理的各种编程语言风格的短诗。"),
    MessagesPlaceholder(variable_name="history"), # ⭐️ 关键:记忆占位符
    ("user", "{text}")
])

# 3. 组装 Chain
chain = prompt | model | StrOutputParser()

# 4. 运行主循环
chat_history = [] # 初始化记忆
print("🚀 程序员夸夸机 v2.0 (多轮对话版) 已启动!")

while True:
    try:
        user_input = input("\n👤 你的心声 (输入 exit 退出): ").strip()
    except EOFError:
        break

    if user_input.lower() in ["exit", "quit"]:
        print("👋 Bye!")
        break
    
    if not user_input: continue

    # 调用 Chain
    result = chain.invoke({"text": user_input, "history": chat_history})
    print(f"🤖 AI 鼓励师:\n{result}")

    # 更新记忆
    chat_history.append(HumanMessage(content=user_input))
    chat_history.append(AIMessage(content=result))

🎉 见证奇迹的时刻
当你运行完这段代码,回到 LangSmith 网页控制台,刷新一下 Projects 页面。
你会发现,刚才的那次运行已经完整地、结构化地展示在那了!


三、 LangSmith 里的“宝藏功能”

1. 链路追踪 (Trace) —— 哪里出错点哪里

在控制台里,你可以看到一个树状结构。

  • 点击 RunnableSequence (你的 Chain),你能看到总耗时和总 Token。

  • 点击 ChatOpenAI,你能看到实际发给大模型的完整 Prompt(包含了 System 和 User 的所有内容)。这对于调试 Prompt 极其有用!你终于不用猜“我到底传了啥给模型”了。

2. Playground —— 在线调优

觉得刚才生成的回答不够味?
在 LangSmith 的 Trace 详情页,直接点击 “Open in Playground”

它会把刚才的 Prompt 原封不动地搬到一个在线调试界面。你可以直接在那里修改 System Prompt,换个模型参数,点击 Run,立马看到新结果。
调好了?直接复制 Prompt 回代码里,效率翻倍!
在这里插入图片描述

3. 数据集与评估 (Dataset & Evaluation) —— 告别“凭感觉”测试

(进阶玩法)
如果你开发了一个“客服机器人”,你怎么知道它好不好?

  • 以前:自己问几个问题,感觉“还行”。
  • 现在:在 LangSmith 里建一个 Dataset(包含100个常见问题和标准答案),然后一键运行测试。LangSmith 会自动计算准确率,甚至可以用另一个 AI 来给你的 AI 打分!

四、 总结

  • 一句话记住LangSmith 就是 AI 应用的“行车记录仪”,它让代码的每一次运行都“有迹可循”。
  • 核心三要点
    1. 无感接入:只需配置环境变量,无需改动业务代码。
    2. 全链路透明:输入、输出、耗时、Token,一切尽在掌握。
    3. 在线调试:发现问题直接在网页上 Playground 调试,改完即用。

创作不易,记得👇关注飞哥👇 ,点赞、收藏哦~~,下篇见👋

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐