AI智能体开发框架LangChain & LangGraph快速入门实战(包含LangSmith)

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

最近乱七八糟的事太多,今天来点偏技术实战的,带大家用LangChain & LangGraph快速入门用编程创建智能体,用LangSmith进行追踪,Agent-Chat构建Agent UI。

基本概念

相信大家相比于LangGraph,LangChain能更熟悉一些,毕竟LangChain出现的更早,下面先来简单介绍下这两个框架。

LangChain:它是一个开发AI应用的基础框架,主要提供了开发AI应用的各种接口和工具,例如调用大模型的统一接口,提供了搜索、文档处理、向量数据库处理等工具,可以方便我们非常快速调用实现功能,加快开发速度,否则我们还得自己去封装。除此之外,LangChain还提供了链式调用(Chains)、记忆管理和提示词模版等基础功能。

官网地址:

Introduction | 🦜️🔗 LangChain

LangGraph:它更高级一些,它在LangChain上面,是一个基于LangChain的工作流编排框架,可以处理复杂的工作流编排和多智能体编排。所以从名字上也可以看出来,LangChain还是停留在链式(Chain)的调用,而LangGraph则是把复杂的智能体工作流抽象成一个图(Graph)了。LangGraph的核心功能包含了有状态的工作流处理、条件分支、循环、并行执行、检查点(Checkpoints)和状态管理等处理。

官网地址:

LangGraph

PS:可能有些人对于上面提到的LangGraph状态管理这个概念有些模糊,在此补充解释下。状态简单理解,就是工作流执行过程中需要保存和传递的数据,每个步骤的结果都会保存,后续步骤可以访问前面步骤的结果和数据,如果某个步骤失败,可以从失败点重新开始。

实战

接下来带大家实战一个项目,让大家快速入门LangChain & LangGraph生态。这里,我们开发工具就选择用Curosr了。

1、创建空项目,用cursor打开

第一步,我们在外头创建一个空项目文件夹,这里我选择叫【lang-demo】,然后用Cursor打开该文件夹。

2、创建虚拟环境

为了和其他python项目的环境进行隔离,我们用cursor的终端,使用conda命令先创建一个虚拟环境,这里我创建的虚拟环境叫clx,然后进入到该虚拟环境中。(注意,建议python版本要3.11以上,因为后续需要安装langgraph-cli[inmem],最低版本要求3.11)。

ini 复制代码
conda create -n clx python=3.12
conda activate clx

如何判断是不是已经进入到了上面创建的虚拟环境中呢?进入后,终端的命令行前会有虚拟环境的名称。

3、创建requirements.txt,安装依赖

项目中创建requirements.txt文件,内容如下:

然后在cursor终端输入命令安装依赖,命令如下:

复制代码
pip3 install -r requirements.txt

4、创建环境变量文件

接下来创建【.env】文件,里面配置各处申请的key。内容如下:

其中deepseek的API Key申请参照:

TAVILY的API Key申请参照:

LangSmith的API Key申请参照:

5、使用cursor生成一个LangChain & LangGraph的demo

对,你没看错,这里不是给大家讲我本地的项目如何做的,而是让大家用Cursor去给自己生成一个,并调试通,所以最后每个人的Demo肯定是不一样的。我生成Demo的Prompt如下:

bash 复制代码
请给我生成一个LangChain和LangGraph的Demo,要求如下:
1、尽可能多的用上【requirements.txt】和【.env】的技术内容进行设计。
2、Demo尽量简单,适合学习用,方便理解。
3、需要包含【README.md】文件,对项目结构和核心代码进行说明。
4、包含运行Demo的快捷入口文件。

然后就看Cursor发挥了,第一次生成后肯定跑不通,需要不停的让cursor进行调试,因为是Demo性质的,相对简单,逻辑也不会太复杂,一般在10轮Prompt交互之内即可得到Cursor创建的可正确运行的项目。

最后给大家演示下,给我生成的项目是什么功能:

给我生成了一个【run_demo.py】入口文件,

用python命令运行:

我选择【1】,然后输入我的问题:天空为什么是蓝色的

然后根据我的问题,Demo会识别主题是我的问题是一个简单的问答【general_chat】,调用模型给我回复了答案。除此之外,还对数据进行了分析,最后生成了一个可视化图表。

图表:

然后,我继续测试,换一个问题,问一个需要联网搜索的,例如我提问:请帮我搜索今天的热点AI新闻有哪些。然后他就会识别为【Search】主题,给我联网搜索生成结果,对数据进行分析后生成可视化图表。

到这里,我的Demo就演示完了,然后呢,如何方便你快速了解项目呢,当然从让其生成的【README.md】文件了。

Readme中介绍了项目的基本功能。

对项目的调用流程进行了说明。

说明了项目在哪使用了LangChain,都做了什么,并且对应的代码是多少行。

还说明了项目哪里使用了LangGraph,都做了什么,并且对应的代码是多少行。

具体不详细介绍了,给我生成的Readme中已经写的很详细了,完全可以看懂,下面总结说明下,给我生成的Demo代码哪些地方用到了LangChain,哪些地方用到了LangGraph。

LangChain相关:

  • 使用LangChain中ChatDeepSeek与模型进行交互。
  • 集成LangChain中TavilySearch工具进行搜索。
  • 使用langchain_core.messages统一消息格式。

LangGraph相关:

  • 进行状态管理。
  • 进行工作流编排。
  • 进行状态传递。

到此为止,给大家演示了Cursor给我生成的LangChain&LangGraph Demo。

6、Langgraph-cli和LangSmith的使用

下面我们继续,在控制台安装库langgraph-cli,方便后续调试和用LangSmith来追踪我们的项目。安装命令如下:

arduino 复制代码
pip3 install -U "langgraph-cli[inmem]"

安装后输入下面命令启动项目:

复制代码
langgraph dev

启动后会发现有三个重要的路径,其中第一个和第三个是可以打开的。

第一个是项目API的Endpoint,打开后显示Not Found,这是正常的。因为默认没有这个get请求,不会重定向到任何地方,但是既然有结果返回,说明API的Endpoint是通的。

http://127.0.0.1:2024

第三个可以打开,打开后是LangGraph的API文档说明,并且可以在线测试API,这里就不给大家演示了,很简单。

http://127.0.0.1:2024/docs

但是第二个需要特殊说明,我们路径可以打开,但是获取不到项目的内容,这个肯定是不正常的。

smith.langchain.com/studio/?bas...

有一定软件基础能力的人很容易可以判断出来,因为下面这个路径跨域了,smith平台是不可能获取你本地服务API EndPoint的,访问不了很正常。

smith.langchain.com/studio/?bas...

所以为了解决这个问题,我们需要改一下启动的命令,使用下面命令启动:

css 复制代码
langgraph dev --tunnel

这次启动后大家可以看到,路径更长了,而且并不是之前本地的ip了,而是换成公网可访问的cloudflare的地址。

smith.langchain.com/studio/?bas...

这样,langsmith平台就可以正常地加载了。加载后大家可以看到,你也的业务流程完全变成了可追踪的可视化工作流。

然后,我就可以输入问题,在这个平台上进行调试,例如在对应的传递参数的地方,我提问:天为什么会下雨,在此平台就可以连接到你本地的工程,进行可视化调试和输出了。

并且可以切换到【Trace】选项卡查看其运行轨迹,进行追踪。

除此之外,现在你把这个页面关闭。然后再次进入到LangSmith的主页,点击【Tracing Projects】,也可以看到之前运行追踪的记录。

这意味着什么呢?这意味着只要你用【langgraph dev】启动了你本地的工程,你在何处访问你的项目,都会自动进行行为追踪并且在LangSmith平台上进行查看。

解惑:

大家通过我上面的操作,是不是感觉很神奇,都会存在这种疑问,不是一直在讲LangChain吗,怎么突然来了LangSmith,它是干嘛的,感觉像可以追踪行为用的,那我的项目,又是何时与LangSmith平台进行的联系呢?

LangSmith:其实我不用过多解释,通过上面的演示大家也能够感受到。LangSmith大家理解成一个在线监控和调试平台即可,提供了在线调试Debug(上面演示的工作流在线输入为什么会下雨的例子,可看到流程中每一步的结果)、Trace追踪(上面例子中的调用链路,可追溯)、还有生产监控Monitoring(上线后追踪用户真实交互,方便后续优化智能体)和评估Evaluation(支持对不用的Prompt/模型/AB测试/质量等进行评估)。

那如何建立的联系呢,大家最早在上面还有印象吧,让大家在【.env】中配置了LangSmith的相关信息,而且Tracing还设置为了True。

在生成的代码逻辑中,通过这些参数,就让你的工程与LangSmith平台关联上了。

代码中引入追踪的注解,在想追踪的方法上添加注解皆可

官网写的更是详细如何接入,包括未给大家演示的评估Evaluation功能,在此不详细解释了。

到这里,才算是,LangChain、LangGraph和LangSmith讲完了。

7、扩展部分:agent-chat UI的使用

这一部分属于拓展部分,刚才我们写的Agent事实上是没有UI的。LangChain生态也是想到了这一点,所以官方还推出了一个Agent-Chat开源项目,可以快速构筑UI,关联到我们刚才本地创建的智能体。

项目地址:

github.com/langchain-a...

使用和安装也是非常的简单,官网上写的很清楚,先clone项目到本地,然后进入到项目目录后,通过【pnpm install】进行安装,通过【pnpm dev】启动该项目。

启动成功后,即可通过3000端口进行访问。访问后,主页面上配置启动本地服务地址、项目ID与LangSmith API Key即可连接到本地启动的智能体。

配置成功后,我们就可以正常提问了,例如我下面问的:地球为什么是圆的。给我正常响应,并且在后台工程中也进行了数据分析和生成了图表。

总结下今天的内容,我们从0创建了一个空的项目,并且借助于Cursor,让其给我们生成了一个LangChain和LangGraph的Demo,除此之外,我们还关联到了LangSmith平台进行调试和追踪,最后通过Agent-Chat快速构建了UI去使用。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

相关推荐
大模型教程8 小时前
大模型“进修深造”(Fine-tuning):用微调打造“懂行”的智能客服
程序员·llm·agent
华仔啊8 小时前
为什么你技术扎实,却总在面试中说不清?
程序员
大模型教程8 小时前
30分钟内搞定!在本地电脑上部署属于你自己的大模型
llm·agent·ollama
FreeCode9 小时前
LangChain 1.0智能体开发:记忆组件
人工智能·langchain·agent
悟乙己9 小时前
使用 RAG、LangChain、FastAPI 和 Streamlit 构建 Text-to-SQL 聊天机器人
sql·langchain·fastapi
serve the people10 小时前
Prompt Serialization in LangChain
数据库·langchain·prompt
AI Echoes10 小时前
LangChain 使用语义路由选择不同的Prompt模板
人工智能·python·langchain·prompt·agent
Wilber的技术分享10 小时前
【大模型实战笔记 6】Prompt Engineering 提示词工程
人工智能·笔记·llm·prompt·大语言模型·提示词工程
DyLatte10 小时前
AI时代的工作和成长
java·后端·程序员
AI大模型13 小时前
这个 GitHub 项目太炸了,RAG 知识库神器!
程序员·llm·agent