LangSmith 设置指南

什么是 LangSmith?

LangSmith 是 LangChain 团队开发的一个统一开发者平台,用于构建、测试、评估和监控基于大型语言模型(LLM)的应用程序。它提供了一套工具,帮助开发者更好地理解、调试和改进他们的 LLM 应用。

注册 LangSmith

在开始使用 LangSmith 前,您需要创建一个账户:

  1. 访问 LangSmith 网站
  2. 点击 “Sign Up” 创建新账户或使用现有账户登录
  3. 完成注册流程,您将获得访问 LangSmith 控制台的权限

API 密钥设置

要将您的应用与 LangSmith 集成,您需要获取 API 密钥:

  1. 登录到 LangSmith 控制台
  2. 点击右上角的个人资料图标,然后选择 “API 密钥”
  3. 创建新的 API 密钥并复制它

将此 API 密钥设置为环境变量:

# 在 Linux/MacOS 上
export LANGCHAIN_API_KEY="your-api-key-here"
export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_PROJECT="my-project-name"  # 可选,指定项目名称# 在 Windows 上
set LANGCHAIN_API_KEY=your-api-key-here
set LANGCHAIN_TRACING_V2=true
set LANGCHAIN_PROJECT=my-project-name

您也可以在代码中直接设置这些变量:

import osos.environ["LANGCHAIN_API_KEY"] = "your-api-key-here"
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = "my-project-name"

安装 LangSmith 客户端库

LangSmith 客户端库可以通过 pip 安装:

pip install langsmith

如果您已经安装了 LangChain,那么从 LangChain 版本 0.0.267 开始,LangSmith 跟踪功能已经被自动包含在其中。

项目设置

创建项目

LangSmith 中的项目用于组织和管理相关的运行和数据集:

  1. 在 LangSmith 控制台中,点击 “Projects” 标签
  2. 点击 “Create New Project” 按钮
  3. 输入项目名称和可选的描述
  4. 点击 “Create”

指定项目

您可以通过以下方式在代码中指定要使用的项目:

# 方法 1:环境变量
os.environ["LANGCHAIN_PROJECT"] = "my-project-name"# 方法 2:使用 langchain.smith 上下文管理器
from langchain.smith import RunEvalConfigwith RunEvalConfig(project_name="my-project-name"):# 您的 LangChain 代码在这里chain.invoke({"input": "Hello world"})

为监控配置应用

基本跟踪

要启用基本的 LangSmith 跟踪,只需设置环境变量:

os.environ["LANGCHAIN_TRACING_V2"] = "true"

这将自动捕获所有 LangChain 运行并将其发送到 LangSmith。

自定义跟踪

您可以添加额外的元数据和标签来丰富您的跟踪数据:

from langchain.callbacks.tracers import LangSmithTracer# 创建一个带有自定义元数据的跟踪器
tracer = LangSmithTracer(project_name="my-custom-project",tags=["production", "user-query"],metadata={"user_id": "user-123", "session_id": "abc-xyz"}
)# 将跟踪器添加到链的调用中
result = chain.invoke({"input": "Hello"}, config={"callbacks": [tracer]})

记录自定义步骤

您可以使用 LangSmith API 记录不是 LangChain 组件的自定义步骤:

from langsmith import Clientclient = Client()def process_data(data):# 创建一个新的运行with client.trace("data_processing", name="Process Raw Data") as run:try:# 您的数据处理代码result = transform_data(data)# 记录输出run.end(outputs={"processed_data": result})return resultexcept Exception as e:# 记录错误run.end(error=str(e))raise

LangChain 组件的自动监控

LangChain 与 LangSmith 深度集成,大多数 LangChain 组件都会自动发送遥测数据到 LangSmith,包括:

  • LLM 和 ChatModel 调用
  • 提示模板渲染
  • 链和序列执行
  • 检索器查询
  • 工具和代理操作

您只需要设置环境变量,无需额外的代码修改。

跨环境跟踪

开发环境

在开发环境中,您可能希望启用详细跟踪以便调试:

# 开发环境配置
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = "my-app-dev"

生产环境

在生产环境中,您可能希望限制跟踪范围或添加额外标签:

# 生产环境配置
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = "my-app-prod"# 使用标签区分不同环境或功能
from langchain.callbacks.tracers import LangSmithTracertracer = LangSmithTracer(project_name="my-app-prod",tags=["production", "region-asia"],metadata={"deployment_id": "v2.5"}
)

客户端库 API

手动创建运行

您可以使用 LangSmith 客户端库直接创建和管理运行:

from langsmith import Clientclient = Client()# 创建新的运行
run = client.create_run(name="Custom Process",run_type="chain",inputs={"query": "What's the weather like?"},project_name="my-project"
)try:# 执行一些操作output = process_query("What's the weather like?")# 更新运行状态为成功client.update_run(run.id,outputs={"result": output},end_time=datetime.datetime.utcnow())
except Exception as e:# 记录错误client.update_run(run.id,error=str(e),end_time=datetime.datetime.utcnow())

查询运行

您可以编程方式查询和分析 LangSmith 中的运行:

from langsmith import Clientclient = Client()# 获取特定项目中的运行
runs = client.list_runs(project_name="my-project",filter={"start_time": {"$gt": "2023-07-01"},"error": {"$exists": False}}
)# 分析运行结果
for run in runs:print(f"Run ID: {run.id}, Latency: {run.latency_ms} ms")

故障排除

常见问题

  1. 没有看到任何运行数据

    • 确保 LANGCHAIN_API_KEYLANGCHAIN_TRACING_V2 环境变量已正确设置
    • 检查网络连接,确保您的环境可以访问 LangSmith API
  2. 运行数据不完整

    • 确保运行已正确结束,所有链和代理都已完成执行
    • 检查是否有未捕获的异常中断了跟踪过程
  3. API 密钥错误

    • 验证您的 API 密钥是否正确
    • 检查 API 密钥是否已过期或被撤销

调试提示

启用详细日志记录以帮助调试 LangSmith 集成:

import logginglogging.basicConfig(level=logging.DEBUG)
logging.getLogger("langsmith").setLevel(logging.DEBUG)

其他资源

  • LangSmith 官方文档
  • LangSmith API 参考
  • LangChain 集成指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手撕TCP内网穿透及配置树莓派

注意: 本文内容于 2025-04-13 15:09:48 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:手撕TCP内网穿透及配置树莓派。感谢您的关注与支持! 之前入手了树莓派5,…

Java从入门到“放弃”(精通)之旅——程序逻辑控制④

Java从入门到“放弃”(精通)之旅🚀:程序逻辑的完美理解 一、开篇:程序员的"人生选择" 曾经的我,生活就像一段顺序执行的代码: System.out.println("早上8:00起床"); Syste…

学习笔记九——Rust所有权机制

🦀 Rust 所有权机制 📚 目录 什么是值类型和引用类型?值语义和引用语义?什么是所有权?为什么 Rust 需要它?所有权的三大原则(修正版)移动语义 vs 复制语义:变量赋值到底…

Cocos Creator Shader入门实战(八):Shader实现圆形、椭圆、菱形等头像

引擎:3.8.5 您好,我是鹤九日! 回顾 Shader的学习是一条漫长的道路。 理论知识的枯燥无味,让很多人选择了放弃。然而不得不说:任何新知识、新领域的学习,本身面临的都是问题! 互联网和AI给了我…

深入理解计算机操作系统(持续更新中...)

文章目录 一、计算机系统漫游1.1信息就是位上下文 一、计算机系统漫游 1.1信息就是位上下文 源程序实际上就是一个由值0和1组成的位(又称为比特),八个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符 大部分现代计…

YOLO V8的​​Anchor-Free​​、​​解耦头(Decoupled Head)、损失函数定义(含​​Varifocal Loss)

YOLOv8 的 ​​Anchor-Free​​ 设计摒弃了传统 YOLO 系列中依赖预定义锚框(Anchor Boxes)的机制,转而直接预测目标的中心点和边界框尺寸。这种设计简化了模型结构,降低了超参数调优的复杂度提升了检测速度和精度。以下是其核心实…

QuarkPi-CA2 RK3588S卡片电脑:6.0Tops NPU+8K视频编解码+接口丰富,高性能嵌入式开发!

QuarkPi-CA2 RK3588S卡片电脑:6.0Tops NPU8K视频编解码接口丰富,高性能嵌入式开发! 芯片框架 视频介绍 https://www.bilibili.com/video/BV1btdbYkEjY 开发板介绍 核心升级,产品炸裂 QuarkPi-CA2卡片电脑搭载瑞芯微RK3588S芯片…

【响应式编程】Reactor 常用操作符与使用指南

文章目录 一、创建操作符1. just —— 创建包含指定元素的流2. fromIterable —— 从集合创建 Flux3. empty —— 创建空的 Flux 或 Mono4. fromArray —— 从数组创建 Flux5. fromStream —— 从 Java 8 Stream 创建 Flux6. create —— 使用 FluxSink 手动发射元素7. generat…

从静态绑定驱动模型到现代设备模型 —— 一次驱动架构的进化之旅

🔍 B站相应的视屏教程: 📌 内核:博文视频 - 从静态绑定驱动模型到现代设备模型 在 Linux 内核的发展历程中,设备驱动结构经历了从"硬编码 手动注册"的早期实现方式,到"设备模型统一管理&qu…

Embedding质量评估、空间塌缩、 Alignment Uniformity

Embedding质量的评估和空间塌缩的解决是自然语言处理(NLP)和推荐系统领域的关键问题。以下是综合多篇研究的总结: 一、Embedding质量评估方法 基准测试与任务指标 MTEB/C-MTEB:使用多语言或中文的基准测试集(如58个数据…

批量给dwg显示略缩图_c#插件实现(com)

如果,cad文件无略缩图: AutoCAD2021版本以上,命令行输入"netload "加载此dll插件,然后输入 “lst”,选择文件夹,即可一键实现给dwg增加略缩图。 效果如下: 附部分代码: …

婴幼儿托育服务与管理实训室:托育未来的基石

在社会对婴幼儿托育服务的重视程度不断加深的当下,专业托育人才的需求急剧增长。婴幼儿托育服务与管理专业作为培育这类人才的关键途径,要求学生熟练掌握婴幼儿身心发展、饮食营养以及卫生保健等基础知识,同时具备全面的照护与管理能力。要实…

(自用)若依生成左树右表

第一步: 在数据库创建树表和单表: SQL命令: 商品表 CREATE TABLE products (product_id INT AUTO_INCREMENT PRIMARY KEY,product_name VARCHAR(255) , price DECIMAL(10, 2) , stock INT NOT NULL, category_id INT NOT NULL); 商品分类…

Linux:DNS服务配置(课堂实验总结)

遇到的问题,都有解决方案,希望我的博客能为你提供一点帮助。 操作系统:rocky Linux 9.5 ​​一、配置DNS服务器的核心步骤​​ 步骤 1:安装 BIND 软件​​ ​​检查是否安装​​: rpm -qa | grep "^bind"…

搭建一个Spring Boot聚合项目

1. 创建父项目 打开IntelliJ IDEA,选择 New Project。 在创建向导中选择 Maven,确保选中 Create from archetype,选择 org.apache.maven.archetypes:maven-archetype-quickstart。 填写项目信息: GroupId:com.exampl…

若依前后端分离版运行教程、打包教程、部署教程

后端打包教程 注意:需要先运行redis 2、前端运行教程 2.1安装依赖 2.2运行 打开浏览器查看,地址:http://localhost:80 3、前端打包教程 3.1打包 3.2运行打包好的文件,先找到打包好的文件 这是nginx的文件结构 将打包好的文件放到html目录下…

SpringAi 会话记忆功能

在使用chatGPT,豆包等产品后,就会发现他们的会话有“记忆”功能。 那么我们用API接口的话,这个是怎么实现的呢? 属于比较粗暴的方式,把之前的内容与新的提示词一起再次发给大模型。让我们看到他们有记忆功能。 下面介绍…

基于Python的经济循环模型构建与可视化案例

一、代码结构概览 该代码构建了一个包含经济数据生成、可视化分析和政策模拟的交互式经济系统仿真平台,主要包括三大模块: 多部门经济数据生成:模拟包含产业关联的复杂经济数据 增强型可视化:提供多维度的经济数据分析视图 Das…

第十六届蓝桥杯大赛软件赛省赛 Python 大学 B 组 部分题解

题面链接Htlang/2025lqb_python_b 个人觉得今年这套题整体比往年要简单许多,但是G题想简单了出大问题,预估50101015120860,道阻且长,再接再厉 A: 攻击次数 答案:103?181?题目没说明白每回合是…

C++基础精讲-05

文章目录 1.构造函数初始化列表1.1 初始化列表的使用1.2 有参构造函数的默认值 2.对象所占空间大小2.1 大小的计算2.2 内存对齐机制 3. 析构函数3.1 基本概念3.2 总结 4.valgrind工具集4.1 介绍4.2 memcheck的使用 5. 拷贝构造函数5.1 拷贝构造函数定义5.2 浅拷贝/深拷贝5.3 拷…