第11章 LangSmith 调试与综合项目
第11章 LangSmith 调试与综合项目1. 本章目标前面章节已经完成了 LangChain 的核心能力调用 DeepSeek使用 Prompt 模板结构化输出LCEL 链式调用文档加载与切分Embedding 和向量数据库RAG 知识库问答Tool 和 Agent应用能跑起来之后如何调试、观察和评估效果学完本章后你应该能够理解 LangSmith 的作用开启 LangChain 调用追踪在 LangSmith 中查看模型调用、Prompt、Token 和耗时给不同项目设置追踪名称给运行过程添加标签和元数据编写简单的测试集评估 RAG 效果编写简单的测试集评估 Agent 工具调用完成一个课程综合项目理解上线前应该检查哪些关键问题2. 为什么需要 LangSmith在简单案例中我们通常只看终端输出你需要知道用户原始问题是什么Retriever 检索到了哪些文档Prompt 最终长什么样模型输入了多少 Token模型输出了什么哪一步耗时最长Agent 有没有调用工具工具参数是否正确工具返回了什么LangSmith 就是用来观察、调试和评估大模型应用的平台。它可以把一次 LangChain 调用记录成完整链路。3. LangSmith 能看到什么开启追踪后LangSmith 中可以看到内容作用Trace一次完整调用链路Run链路中的一个步骤Input当前步骤输入Output当前步骤输出Prompt发送给模型的提示词Tool CallAgent 调用工具的记录Token模型输入和输出消耗Latency每一步耗时Error报错信息Metadata自定义业务信息对于 RAG 项目重点看检索问题是否正确检索结果是否相关上下文是否传给模型模型是否根据资料回答对于 Agent 项目重点看是否调用了工具调用了哪个工具工具参数是否正确工具结果是否被模型正确使用4. 开通和配置 LangSmith访问https://smith.langchain.com登录后创建 API Key。在项目根目录创建.envDEEPSEEK_API_KEY你的DeepSeek API Key DEEPSEEK_BASE_URLhttps://api.deepseek.com LANGSMITH_TRACINGtrue LANGSMITH_API_KEY你的LangSmith API Key LANGSMITH_PROJECTlangchain-work-demo环境变量说明变量作用LANGSMITH_TRACING是否开启追踪LANGSMITH_API_KEYLangSmith API KeyLANGSMITH_PROJECT追踪记录所属项目DEEPSEEK_API_KEYDeepSeek API KeyDEEPSEEK_BASE_URLDeepSeek OpenAI 兼容接口地址如果暂时不想开启 LangSmith可以改成LANGSMITH_TRACINGfalse5. 安装依赖安装本章依赖pip install langsmith6. 案例一追踪一次普通模型调用创建01_trace_chat.pyfrom utils.model_factory import get_deepSeek_model modelget_deepSeek_model() responemodel.invoke(帅哥为什么这么帅) print(respone.content)运行结果如下终端界面如果.env中配置了LANGSMITH_TRACINGtrue LANGSMITH_API_KEY... LANGSMITH_PROJECTlangchain-course-demo运行后就可以在 LangSmith 项目中看到这次调用。你可以重点查看输入内容模型输出调用耗时Token 消耗模型名称langsmith界面打开这个项目可以看到7. 案例二追踪 LCEL Chain创建02_trace_chain.pyfrom langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from utils.model_factory import get_deepSeek_model model get_deepSeek_model() prompt_template ChatPromptTemplate.from_messages( [ ( system, 你是一名编程课程讲师回答要适合初学者。, ), ( human, 请用不超过 150 字解释{topic}, ) ] ) chain prompt_template | model | StrOutputParser() result chain.invoke( { topic:RAG检索增强生成 }, config { run_name:concept_explain_chain, tags:[chapter10,lcel], metadata:{ course:langChain, chapter:10 } } ) print(result)这里的config可以给本次运行增加信息config{ run_name: concept_explain_chain, tags: [chapter10, lcel], metadata: { course: LangChain, chapter: 10, }, }在 LangSmith 中run_name、tags和metadata可以帮助你筛选和定位调用记录。这些都是我们配置的信息过滤8. 案例三追踪 Agent 工具调用创建03_trace_agent.pyfrom langchain.agents import create_agent from langchain_core.tools import tool from utils.model_factory import get_deepSeek_model tool def get_order_status(order_id:str) - str: 根据订单号查询订单状态包括是否付款、是否发货、快递单号和签收状态。 fake_orders { A1001: 已付款等待发货, A1002: 已发货快递单号 SF123456, A1003: 已签收, } return fake_orders.get(order_id, 没有查询到该订单) model get_deepSeek_model() agent create_agent( model model, tools [get_order_status], system_prompt 你是一名电商客服助手必须根据工具结果回答订单问题。 ) result agent.invoke( { messages:[ { role:user, content:帮我查一下订单A1002发货了么 } ] }, config { run_name:order_agent_demo_run, # trace的名字 tags:[chapter10,agent,tool], metadata:{ name:order_agent_demo_meta, #Metadata_name biz: ecommerce }, } ) print(result[messages][-1].content)在 LangSmith 中可以看到用户问题 - 模型请求调用 get_order_status - 工具返回订单状态 - 模型生成最终回答用户提问 → 大模型识别需要调用工具 → 调用查询订单接口 → 获取接口数据 → 大模型把原始数据整理成自然语言回答用户这对调试 Agent 非常有用。如果 Agent 没有调用工具可以在 Trace 中检查工具描述是否传给模型用户问题是否包含订单号模型是否直接生成了答案工具调用参数是否错误

相关新闻

C++学习实战指南:从环境配置到多线程编程的深度解析

C++学习实战指南:从环境配置到多线程编程的深度解析

1. 从“问题”到“体系”:C学习的必经之路最近在社区里看到不少朋友在讨论C学习时遇到的“拦路虎”,从最基础的语法报错,到复杂的多线程、内存管理问题,再到项目实战中的环境配置和库依赖,问题清单可以列得很长。这让我…

2026/10/16 0:38:18 阅读更多 →
Gromov-Witten理论与量子上同调:从数学基础到物理应用的完整解析

Gromov-Witten理论与量子上同调:从数学基础到物理应用的完整解析

这次我们来看一个数学物理交叉领域的重要理论——Gromov-Witten理论与量子上同调。这个主题虽然听起来很抽象,但它在弦理论、镜像对称和代数几何中有着核心应用价值。2026年夏季的这门课程将为研究者系统介绍这一理论的基础框架和最新进展。对于数学物理方向的研究生…

2026/10/16 6:10:24 阅读更多 →
GTA5终极防崩溃指南:YimMenu安全防护完整教程

GTA5终极防崩溃指南:YimMenu安全防护完整教程

GTA5终极防崩溃指南:YimMenu安全防护完整教程 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

2026/10/16 4:12:48 阅读更多 →

最新新闻

AI拉低攻击成本后,中小企业如何重新评估安全防线与防御策略

AI拉低攻击成本后,中小企业如何重新评估安全防线与防御策略

1. 当攻击成本被AI拉低,安全防线该怎么重新算账最近圈子里讨论比较多的一份报告,来自Anthropic的安全研究团队。标题翻译过来大概意思是:AI可能让更多公司变得“值得被攻击”。这句话乍看有点绕,但做过企业安全的人一眼就能品出味…

2026/10/17 9:53:48 阅读更多 →
superpowers:给Codex等AI编码助手补课的项目级工作流

superpowers:给Codex等AI编码助手补课的项目级工作流

如果你用过一段时间的 AI 编码助手,大概会有这种感觉:单看每一次对话,它回答得头头是道;可一旦放进真实项目,跨文件改需求、重构老代码、整理历史包袱,它就很容易跑偏。superpowers 这个名字听起来中二&…

2026/10/17 9:53:48 阅读更多 →
集合与树形结构:从哈希到二叉树,工程选型的关键权衡

集合与树形结构:从哈希到二叉树,工程选型的关键权衡

我用一个真实的工作场景切入吧。前阵子某项目要做用户兴趣标签系统,业务方最初的产品需求写得很简单:给每个用户打一堆标签,然后支持按标签筛选用户。最先上线的版本就是一个标准的集合操作——把标签存在集合里,查询的时候就做交…

2026/10/17 9:53:48 阅读更多 →
开源CLI代码审查工具:基于Git Diff与本地LLM的可审计方案

开源CLI代码审查工具:基于Git Diff与本地LLM的可审计方案

1. 项目概述:一个真正能落地的开源代码审查 CLI 工具到底长什么样?“open-code-review”这个名字乍一听像某个 GitHub 上刚建的空仓库,或是某篇论文里一闪而过的概念词。但如果你最近在团队里被 PR 堆得喘不过气、在 Code Review 时反复纠结“…

2026/10/17 9:53:48 阅读更多 →
一文拆解大型集团指标体系建设:分层设计、KPI选型与落地监控

一文拆解大型集团指标体系建设:分层设计、KPI选型与落地监控

简介:面向大型集团企业的战略、运营与人力资源管理者,这套指标体系设计方案提供了从顶层构想、设计框架到落地执行的完整路径。方案系统阐述了指标体系对战略规划、部门协同与决策效率的支撑作用,围绕SMART原则给出具体、可衡量、可达成等指标…

2026/10/17 9:53:48 阅读更多 →
储能电池被动均衡方案:MP2642GR-Z与PIC18F86J11实战

储能电池被动均衡方案:MP2642GR-Z与PIC18F86J11实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 9:52:47 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →