🎯 课程主题
介绍LangSmith——LangChain生态系统中专门用于LLM应用调试、监控、评估和管理的平台,涵盖注册配置、API Key获取、环境变量设置以及基本的 Tracing 追踪使用。
📝 核心知识点
1. LangSmith 是什么
- 概念说明:LangSmith 是 LangChain 生态系统中专门用于大模型应用调试、监控、评估和管理的平台。
- 关键细节:提供 Tracing(追踪)、Monitoring(监控)、Datasets & Experiments(数据集与实验)、Evaluators(评估器)、Annotation Queues(标注队列)等功能。
2. 注册与获取 API Key
- 概念说明:访问 LangSmith 官网 (smith.langchain.com) 进行注册/登录,并在 Settings 中创建 API Key。
- 关键细节:
- 支持 Google 账户、GitHub 账户或邮箱注册方式登录
- 左侧边栏底部 Settings → API Keys → Create API Key
- 创建时设置名称和过期时间(建议 Never 不过期)
- API Key 仅显示一次,点击后无法再次查看,务必保存好
3. 环境变量配置
- 概念说明:在项目
.env文件中配置 LangSmith 相关环境变量,使工程中的所有运行都被 LangSmith 追踪。 - 关键细节:
LANGCHAIN_TRACING_V2=true # 是否启用追踪 LANGCHAIN_ENDPOINT=https://api.smith.langchain.com # Web UI 地址 LANGCHAIN_API_KEY=你的API_KEY # API Key LANGCHAIN_PROJECT=项目名称 # 项目名称,在 Web UI 中可见
4. 基本 Tracing 使用
- 概念说明:配置好环境变量后,任何模型调用(invoke)都会被自动追踪并记录到 LangSmith 平台。
- 关键细节:
- 无需额外代码,配置环境变量后即自动追踪
- 在 Web UI 中刷新即可看到追踪记录,显示输入、输出、执行时长、错误等信息
- 模型名称(如
ChatDeepSeek、ChatOpenAI)会自动显示为 Run Name
5. config 参数增强追踪信息
- 概念说明:在
invoke调用时传入config参数,可自定义追踪显示的名称、标签和元数据。 - 关键细节:
run_name:自定义每次运行的名称,在 LangSmith UI 中显示tags:为运行打标签,便于分类和筛选metadata:附加元数据(如user_id、session_id),在 trace 详情中可见- 在 Thread 视图下可按 session_id 筛选同一会话的多次交互
🏗️ 架构与工作流
LangSmith 集成流程:
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ .env 配置 │ ──→ │ Python 代码 │ ──→ │ LangSmith UI │
│ API Key │ │ model.invoke │ │ Tracing │
│ Project │ │ (自动追踪) │ │ 监控面板 │
└─────────────┘ └──────────────┘ └──────────────┘
💻 代码实战
# ===== 环境变量配置(.env 文件)=====
# LANGCHAIN_TRACING_V2=true
# LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
# LANGCHAIN_API_KEY=lsv2_pt_xxxxx
# LANGCHAIN_PROJECT=LangChain-1.2-Tutorial
# ===== 举例1:基本 Tracing =====
from langchain_deepseek import ChatDeepSeek
model = ChatDeepSeek(model="deepseek-chat")
response = model.invoke("你好,介绍一下LangChain")
print(response.content)
# 执行后刷新 LangSmith UI 即可看到追踪记录
# ===== 举例2:使用 init_chat_model =====
from langchain.chat_models import init_chat_model
model = init_chat_model(
model="gpt-4o-mini",
model_provider="openai"
)
response = model.invoke("什么是LangSmith?")
print(response.content)
# ===== 举例3:config 参数自定义追踪信息 =====
response = model.invoke(
"请用一句话介绍Python",
config={
"run_name": "Python介绍-测试",
"tags": ["test", "intro", "python"],
"metadata": {
"user_id": "user_001",
"session_id": "sess_2024_001"
}
}
)
print(response.content)
# 在 LangSmith UI 中:
# - run_name 显示为 "Python介绍-测试"
# - tags 显示为 ["test", "intro", "python"]
# - metadata 中的 user_id 和 session_id 在详情中可见
⚠️ 常见问题与避坑指南
- API Key 生成后仅在创建时显示一次,务必即时复制保存,否则需重新生成
- 项目名称通过
LANGCHAIN_PROJECT环境变量指定,不同工程建议使用不同项目名便于区分 - 追踪信息不是实时显示,可能需要手动刷新页面
- 未指定
run_name时,默认使用模型类名(如ChatDeepSeek)作为 Run Name
💡 个人总结与延伸
LangSmith 的核心价值在于零代码侵入的自动追踪:配置好环境变量后,所有模型调用自动记录。config 参数中的 run_name、tags 和 metadata 是提升追踪可读性和可检索性的关键工具,建议在项目中养成规范命名的习惯。LangSmith 的 Tracing 是后续章节学习复杂链式调用(Chain)、RAG 和 Agent 调试的基础设施,是 LangChain 生态中不可或缺的工具。