以下是使用 LangSmith 的 Python 代码示例,展示如何通过其 SDK 调试和监控一个简单的 LLM 应用。此示例模拟一个电商客服机器人,根据用户输入分类问题类型并生成响应。
环境准备
首先安装必要的库:
bash
pip install langchain langsmith
示例代码:电商客服机器人调试
python
from langchain import PromptTemplate, LLMChain
from langchain.chat_models import ChatOpenAI
from langchain_community.utilities import GoogleSearchAPIWrapper
from langsmith import Client, run
from langsmith.scenarios import run_scenario
初始化 LangSmith 客户端
client = Client(
base_url="https://api.smith.langchain.com", # LangSmith 服务地址
api_key="YOUR_API_KEY", # 替换为你的 API Key
)
定义分类提示模板
classification_template = “”"
根据用户问题,分类到以下类别之一:
- 退款
- 物流
- 商品推荐
用户问题:{question}
分类结果:
"""
classification_prompt = PromptTemplate(template=classification_template, input_variables=["question"])
定义响应生成提示模板
response_template = """
根据用户问题和分类结果,生成回答:
分类:{category}
用户问题:{question}
回答:
"""
response_prompt = PromptTemplate(template=response_template, input_variables=["category", "question"])
初始化 LLM 和工具
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
search = GoogleSearchAPIWrapper()
创建分类链
classification_chain = LLMChain(llm=llm, prompt=classification_prompt, output_key="category")
创建响应生成链
response_chain = LLMChain(llm=llm, prompt=response_prompt, output_key="response")
定义完整流程(分类 → 响应生成)
def customer_service_agent(question: str) -> str:
# 分类问题
category_result = classification_chain.run(question=question)
# 生成响应
response = response_chain.run(category=category_result, question=question)
# 模拟外部工具调用(例如搜索)
if category_result == "商品推荐":
search_results = search.run(f"推荐 {question.split()[-1]} 相关商品")
response += f"\n相关商品:{search_results}"
return response
使用 LangSmith 调试单个调用
@run(client=client, name="电商客服机器人调试")
def debug_customer_service(question: str):
return customer_service_agent(question)
测试问题列表
test_questions = [
"如何申请退款?",
"我的包裹什么时候到?",
"推荐适合夏天的护肤品",
]
运行调试并上传到 LangSmith
for question in test_questions:
debug_customer_service(question)
在 LangSmith 中查看结果:
1. 访问 https://smith.langchain.com
2. 找到名为 “电商客服机器人调试” 的运行记录
3. 查看每个问题的输入、输出和中间步骤(如分类结果)
关键代码解释
LangSmith 客户端初始化
通过 Client 连接 LangSmith 服务,需提供 API Key(在 LangSmith 控制台获取)。
分类链与响应链
classification_chain:将用户问题分类为“退款”“物流”或“商品推荐”。
response_chain:根据分类结果生成回答。
外部工具集成
模拟调用 GoogleSearchAPIWrapper 在“商品推荐”场景中搜索相关商品。
调试与监控
使用 @run 装饰器将函数调用记录到 LangSmith,自动追踪输入、输出和中间结果。
在 LangSmith 控制台可查看每个问题的完整调用链和性能数据。
在 LangSmith 中的操作
查看运行记录
登录 LangSmith 控制台,找到名为“电商客服机器人调试”的运行。
点击单次运行,查看:
输入:用户问题(如“如何申请退款?”)。
输出:生成的回答。
中间步骤:分类结果(如“退款”)。
分析性能问题
如果发现分类错误,可在 LangSmith 中直接修改提示模板并重新运行测试。
通过“性能分析”标签页查看延迟和令牌消耗。
扩展场景
A/B 测试:修改提示模板后,用不同版本对比准确率和延迟。
错误处理:在 LangSmith 中标记错误响应(如分类错误),并添加自动重试逻辑。
通过此示例,你可以快速上手 LangSmith 的核心功能,并将其应用到更复杂的 LLM 应用中。