news 2026/9/27 9:18:56

LangSmith实战:从零构建高效LLM应用监控系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangSmith实战:从零构建高效LLM应用监控系统

1. 为什么你需要LangSmith来监控LLM应用

当你用LangChain开发应用时,最头疼的问题是什么?我猜八成是调试。想象一下:你的应用调用了3次大模型,中间还穿插着数据库查询和API调用,突然返回的结果不对劲了。这时候如果没有监控工具,就像在黑夜里修车——连螺丝刀往哪捅都不知道。

LangSmith就是为这种场景设计的X光机。它能完整记录每次LLM调用的:

  • 输入输出内容(包括隐藏的系统提示词)
  • 各步骤耗时(精准定位性能瓶颈)
  • token消耗明细(避免账单爆炸)
  • 中间过程数据(比如RAG应用检索到的文档片段)

上周我遇到个典型问题:用户反馈问答机器人突然开始胡言乱语。通过LangSmith的追踪日志,发现是第三方知识库API返回了HTML标签污染了提示词。整个过程排查只用了15分钟——这在以前至少要半天。

2. 5分钟快速搭建监控环境

2.1 准备工作清单

在开始前确保你有:

  1. 有效的LangSmith账号(注册时会自动分配API KEY)
  2. Python 3.8+环境
  3. 已安装LangChain基础包
# 一次性安装所有依赖 pip install -U langsmith langchain openai

2.2 关键配置项详解

很多人直接复制粘贴环境变量配置,其实每个参数都有门道:

import os os.environ["LANGCHAIN_TRACING_V2"] = "true" # 必须显式开启V2版本 os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com" # 企业版需替换 os.environ["LANGCHAIN_API_KEY"] = "ls_xxxxxx" # 前缀必须是ls_ os.environ["LANGCHAIN_PROJECT"] = "MyChatBot" # 建议按业务线命名

特别提醒:千万别把API KEY硬编码在代码里!我推荐用python-dotenv管理:

from dotenv import load_dotenv load_dotenv() # 自动加载.env文件

3. 实战:给现有应用添加监控

3.1 基础集成方案

假设你有个现成的问答链:

from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI prompt = ChatPromptTemplate.from_messages([ ("system", "你是个严谨的技术顾问"), ("human", "{question}") ]) chain = prompt | ChatOpenAI(model="gpt-4")

只需添加两行代码立即获得监控:

from langsmith import Client client = Client() # 自动读取环境变量 response = chain.invoke({"question": "LangSmith怎么收费?"}) print(client.list_runs()) # 验证数据是否上报

3.2 高级追踪技巧

当遇到复杂代理(Agent)时,可以这样增强监控:

from langchain.agents import AgentExecutor from langsmith import traceable @traceable # 关键装饰器 def custom_tool(query): # 自定义工具逻辑 return result agent = AgentExecutor(...) result = agent.run("查询用户订单状态") # 自动记录所有子步骤

在LangSmith后台你会看到这样的调用树:

AgentExecution ├── LLMInvocation ├── Tool_1(custom_tool) │ └── SubFunction └── LLMInvocation

4. 生产环境必备的监控策略

4.1 告警规则配置

在项目设置中可以设置:

  • 异常响应检测(比如包含"抱歉"等关键词)
  • 耗时阈值报警(超过5秒的调用)
  • 费用消耗预警(每日token超限)
# 编程式创建监控规则 client.create_alert( name="耗时警报", condition={ "type": "duration", "threshold": 5000 # 毫秒 }, channels=["email", "slack"] )

4.2 数据持久化方案

默认日志只保留7天,重要数据需要导出:

import pandas as pd runs = client.list_runs(project_name="MyChatBot") df = pd.DataFrame([run.dict() for run in runs]) df.to_parquet("monitoring_data.parquet") # 列式存储更省空间

建议用cron设置每周自动备份,我常用的字段包括:

  • execution_time
  • total_tokens
  • feedback_score(用户评分)

5. 调试实战:定位诡异问题

最近遇到个典型案例:用户投诉机器人深夜总回答"我去睡觉了"。通过LangSmith的时间筛选功能,发现是运维在23:00-6:00切换到了测试用的廉价模型。解决方法很简单:

from datetime import datetime def model_router(): hour = datetime.now().hour if 8 <= hour < 23: return ChatOpenAI(model="gpt-4") return ChatOpenAI(model="gpt-3.5-turbo") # 非高峰时段降级

这个案例告诉我们:没有监控的AI应用就像没有仪表的飞机,出问题全靠猜。LangSmith的价值不仅在于事后排查,更能帮你建立预防机制。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 9:42:07

GP2A红外距离传感器硬件设计与STM32驱动实战

1. GP2A 系统概述Sharp GP2A 系列是日本夏普&#xff08;Sharp&#xff09;公司推出的模拟输出型红外反射式距离传感器&#xff0c;广泛应用于工业控制、自动门、电梯防夹、机器人避障及消费电子设备的接近检测场景。该系列并非单一型号&#xff0c;而是一个具有共性电气特性和…

作者头像 李华
网站建设 2026/9/27 9:17:42

人脸识别OOD模型在Web应用中的集成方案

人脸识别OOD模型在Web应用中的集成方案 1. 引言 在现代Web应用中&#xff0c;人脸识别技术已经成为身份验证、安全访问和个性化服务的重要组成部分。然而&#xff0c;传统的人脸识别系统在面对低质量图像、噪声干扰或分布外数据时&#xff0c;往往表现不稳定&#xff0c;导致…

作者头像 李华
网站建设 2026/8/23 9:42:08

ILRepack:轻量级 .NET 程序集合并工具的技术实践与演进

ILRepack&#xff1a;轻量级 .NET 程序集合并工具的技术实践与演进 【免费下载链接】il-repack Open-source alternative to ILMerge 项目地址: https://gitcode.com/gh_mirrors/il/il-repack 在分布式部署与模块化开发日益普及的今天&#xff0c;.NET 应用常面临多程序…

作者头像 李华
网站建设 2026/8/23 9:42:08

LeetCode刷题实战:如何用动态规划解决哈密尔顿路径问题(附C++代码)

LeetCode实战&#xff1a;动态规划破解哈密尔顿路径问题的核心思路与代码实现 在算法竞赛和LeetCode刷题中&#xff0c;哈密尔顿路径问题因其NP完全的特性和巧妙的解法设计&#xff0c;常被视为检验动态规划功力的试金石。不同于教科书上的理论推导&#xff0c;本文将带您直击L…

作者头像 李华
网站建设 2026/8/23 9:42:08

Qwen3-14B-Int4-AWQ在人工智能教学中的应用:个性化习题生成与解答

Qwen3-14B-Int4-AWQ在人工智能教学中的应用&#xff1a;个性化习题生成与解答 1. 教育场景的痛点与机遇 在人工智能课程教学中&#xff0c;教师常常面临两大挑战&#xff1a;一是准备高质量习题需要耗费大量时间&#xff0c;特别是编程题和案例分析题&#xff1b;二是难以针对…

作者头像 李华