跳到主要内容

LangGraph开发工具介绍

课程说明:

  体验课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《2025大模型Agent智能体开发实战》(夏季班)

bef0897853f861af5f4211442be446b

《2025大模型Agent智能体开发实战》(夏季班) 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!

a55d48e952ed59f8d93e050594843bc

部分项目成果演示

from IPython.display import Video
  • MateGen项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/MG%E6%BC%94%E7%A4%BA%E8%A7%86%E9%A2%91.mp4", width=800, height=400)
  • 智能客服项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D%E6%A1%88%E4%BE%8B%E8%A7%86%E9%A2%91.mp4", width=800, height=400)
  • Dify项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/2f1b47f42c65fd59e8d3a83e6cb9f13b_raw.mp4", width=800, height=400)
  • LangChain&LangGraph搭建Multi-Agnet
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/%E5%8F%AF%E8%A7%86%E5%8C%96%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90Multi-Agent%E6%95%88%E6%9E%9C%E6%BC%94%E7%A4%BA%E6%95%88%E6%9E%9C.mp4", width=800, height=400)

此外,若是对大模型底层原理感兴趣,也欢迎报名由我和菜菜老师共同主讲的《2025大模型原理与实战课程》(夏季班)

4a11b7807056e9f5b281278c0e37dad

两门大模型课程夏季班目前上新特惠+618年中钜惠双惠叠加,合购还有更多优惠哦~详细信息扫码添加助教,回复“大模型”,即可领取课程大纲&查看课程详情👇

img e873ea36c8a2263b2a88a0f86f9481b

LangGraph快速入门与Agent开发实战

Part 2.LangSmith工业级开发工具介绍

一、LangSmith 应用入门

  大模型具有不确定性,尤其是构建复杂AI Agent应用程序中,中间会涉及非常多的子步骤,如果想要了解每一步的运行状态和结果,一方面可以通过Debug来进行实时控制,而另一方面可以借助一些工具来观察和调试中间的交互流程。Langsmith就是这样一个工具平台, 由​​ LangChainLangGraph 背后的团队创建,主要作用是:为基于大语言模型构建的应用程序提供全面的监控、调试和可观察性。提供强大的跟踪、日志记录和实时分析功能。

image-20250624185740544

LangSmith官网:https://smith.langchain.com/

  通常,对于一个项目而言,可以是单个应用程序或服务。该项目将包含多个跟踪,每个跟踪都是运行的集合 - 一个运行代表应用程序中的一个基本操作,例如对DeepSeekAPI调用,或检索操作。如下图所示:

  • Project (项目): 蓝色方块代表整个项目,可能是一个单独的应用程序或服务。
  • Traces (轨迹): 绿色方块代表项目在不同条件或配置下的执行路径。每个轨迹可以是一个特定的用户会话、一个功能的执行,或者应用在特定输入下的行为。
  • Runs (运行): 每个轨迹下的黄色方块表示特定轨迹的单次执行。这些是执行的实例,每个实例都是轨迹在特定条件下的实际运行。
  • Feedback, Tags, Metadata (反馈、标签、元数据): 这部分显示了系统如何利用用户或自动化工具生成的反馈、标签和元数据来增强轨迹的管理和过滤。反馈可以用于改进未来的运行,标签和元数据可用于分类和筛选特定的轨迹或运行,以便在LangSmith的用户界面中更容易地管理和审查

  我们使用当前构建的 LangGraph图为例:

import os
from dotenv import load_dotenv
load_dotenv(override=True)

DeepSeek_API_KEY = os.getenv("DEEPSEEK_API_KEY")
from langchain.chat_models import init_chat_model

model = init_chat_model(model="deepseek-chat", model_provider="deepseek")
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
from langchain.chat_models import init_chat_model
from langgraph.checkpoint.memory import MemorySaver

# 1. 定义状态类(会自动合并 messages)
class State(TypedDict):
messages: Annotated[list, add_messages]

# 2. 初始化模型
model = init_chat_model(model="deepseek-chat", model_provider="deepseek")

# 3. 定义聊天节点
def chatbot(state: State) -> State:
reply = model.invoke(state["messages"])
return {"messages": [reply]}

# 4. 构建带 MemorySaver 的图
builder = StateGraph(State)
builder.add_node("chatbot", chatbot)
builder.add_edge(START, "chatbot")
memory = MemorySaver()
graph = builder.compile(checkpointer=memory)
from IPython.display import Image, display

display(Image(graph.get_graph().draw_mermaid_png()))

  跟踪是请求通过图逻辑的步骤的详细记录。将其视为显示从开始到结束的确切顺序的路线图,在当前的设置中,LangGraph 很简单:

  • 它以__start__节点开始
  • 经过大模型生成回复的chatbot节点
  • 结束于__end__节点。

  每次用户与程序进行交互时,该图都会展开,并且此过程中的每个步骤都会记录为跟踪的一部分。借助 Langsmith,我们可以实时可视化和分析这些痕迹。设置 Langsmith并不复杂,我们需要依次执行如下操作步骤。

  • Step 1. 创建一个 LangSmith 帐户

  要开始使用 LangSmith,我们需要创建一个帐户。可以在这里注册一个免费帐户进入LangSmith登录页面: https://smith.langchain.com/ , 支持使用 Google、GitHub、Discord 和电子邮件登录。

  注册并等登录后,可以直接查看到仪表板:

image-20250624190009348 image-20250624190049558 image-20250624190123279 image-20250624190228537

  在构建程序跟踪前,首先需要创建一个 API 密钥,该密钥将允许我们的项目开始向 Langsmith 发送跟踪数据。

  • Step 2. 已创建账号的API密钥创建流程

  单击 Langsmith 仪表板左侧菜单中的“设置”图标。

  导航至“API 密钥”部分,然后单击Create API Key

  LangSmith 支持两种类型的 API 密钥:服务密钥和个人访问令牌。两种类型的令牌都可用于验证对 LangSmith API 的请求,但它们有不同的用例。这里选择“密钥类型令牌的个人访问” ,因为我们将使用此密钥作为用户进行个人访问。

  单击“创建 API 密钥” ,复制并确认已保存。这和DeepSeekAPI密钥一样,一旦创建完成,则不允许再次复制。

  注意:退出后无法再复制,只能删除重建。

  现在,就可以将其集成到我们的项目中了。

  • Step 3. 创建环境变量

  将LANGCHAIN_API_KEY替换为我们刚刚创建的 API 密钥。定义的方法如下:

import os

# 设置环境变量
os.environ["LANGSMITH_TRACING"] = "true" # 开启追踪
os.environ["LANGSMITH_API_KEY"] = "lsv2_pt_***" # 注意:这里替换为自己的LangSmith API Key
os.environ["LANGSMITH_PROJECT"] = "langraph_chatbot" # 任意项目名

# 验证环境变量是否设置成功
print(os.getenv("LANGSMITH_TRACING"))
print(os.getenv("LANGSMITH_API_KEY"))

  在环境变量中设置以后,我们的代码不需要做任何的改变,即可构建LangSmith的消息跟踪。

import os
from dotenv import load_dotenv
load_dotenv(override=True)

DeepSeek_API_KEY = os.getenv("DEEPSEEK_API_KEY")
from langchain.chat_models import init_chat_model

model = init_chat_model(model="deepseek-chat", model_provider="deepseek")
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
from langchain.chat_models import init_chat_model
from langgraph.checkpoint.memory import MemorySaver

# 1. 定义状态类(会自动合并 messages)
class State(TypedDict):
messages: Annotated[list, add_messages]

# 2. 初始化模型
model = init_chat_model(model="deepseek-chat", model_provider="deepseek")

# 3. 定义聊天节点
def chatbot(state: State) -> State:
reply = model.invoke(state["messages"])
return {"messages": [reply]}

# 4. 构建带 MemorySaver 的图
builder = StateGraph(State)
builder.add_node("chatbot", chatbot)
builder.add_edge(START, "chatbot")
memory = MemorySaver()
graph = builder.compile(checkpointer=memory)
from IPython.display import Image, display

display(Image(graph.get_graph().draw_mermaid_png()))

  接下来正常进行多轮对话的问答,代码如下:

thread_config = {"configurable": {"thread_id": "session_1"}}
state1 = graph.invoke({"messages": [{"role":"user","content":"你好,好久不见,我叫陈明。"}]}, config=thread_config)
state1
state1['messages']
state1['messages'][-1].content

  当触发Graph执行时,可以在LangSmith控制面板上实时查看到该应用程序执行过程中各个状态的输入和输出情况。如下图所示:

image-20250624190558402

  点击进去可以查看到更加具体的追踪信息:

image-20250624190640491

  至此,大家已经可以运行起LangSmith应用工具。在初次构建AI应用程序时,建议从最简单的工作流实现开始,结合 LangSmith 这样的评估工具是能够极大程度上帮助大家理解其中间过程。而随着构建应用程序的越来越复杂,其中间状态也会变得越来越多。

二、LangGraph Studio 可视化

  LangSmithLangGraph Studio 都是 LangChain AI 生态中非常核心的工具,前者是用于跟踪和分析大模型的使用情况,而langGraph Studio则是对于LangGraph来说,则是比LangSmith更加方便和高效的可视化调试工具平台。

  大家可以思考一个问题:基于LangGraph框架可以开发出各种复杂的应用、AgentWorkflow等,那么这些应用、AgentWorkflow等在生产中如何部署和运行呢? 解决方案就是把它们部署成一个Server。 而对如何方便高效的把LangGraphGraph部署成一个ServerLangGraph官方提供了LangGraph Platform,其完整架构如下所示:

  • LangGraph Studio:桌面版应用(目前仅支持Mac)和本地运行(适用于所有操作系统);
  • LangServer:最终构建出来的服务,提供Assistant API接口;
  • Python/JS SDK:通过接口可以直接和 LangServer 提供的各个API接口连接;
  • Remote Graph:类似于之前LangServe的用法,可以直接用 Graph 的接口去调用,这样拿到的Graph就是一个 Runable对象,就可以去调用它的invokebatch 等。

  LangGraph Studio 是专为 LangGraph 图式代理打造的本地/云端 IDE,具备可视化节点和状态及实时调试功能。LangGraph Studio 在本地可视化运行时会自动把调用过程上传到 LangSmith;而在 LangSmith 网页端查看任何 Trace 时,又能一键Run in Studio回放整条执行链,所以它是通过统一 Trace SDKLangSmith 紧密集成。

  接下来我们就来详细的讲解下如何使用LangGraph Studio

  首先需要说明的是,如果想要把一个定义的Graph添加到LangGraph Studio中,需要严格按照官方要求的项目结构进行构建,需要执行的步骤依次是:

  • Step 1. 创建一个LangGraph项目文件夹

  我们这里创建一个langraph_chatbot文件夹,如下图所示:

image-20250624190858497
  • Step 2. 创建requirements.txt文件

  在langgraph_chatbot文件夹中,新建一个requirements.txt文件,里面需要填写在运行该项目时需要安装的依赖项,如下所示:

FENCE0

image-20250624191027491
  • Step 3. 创建.env文件

  在langgraph_chatbot文件夹中,新建一个.env文件,将敏感信息(如API密钥)放在环境变量中而不是硬编码。如下所示:

image-20250624191259742
  • Step 4. 创建graph.py文件

  在langgraph_chatbot文件夹中,新建一个graph.py文件,在该文件中编写构建图的具体运行逻辑,如状态、节点、变、图的编译等。注意:这里不要使用init_chat_model方法,而是使用ChatDeepSeek方法,因为会存在异步阻塞问题。代码如下所示:

FENCE0

image-20250624191412113
  • Step 5. 创建langgraph.json文件

  在langgraph_chatbot文件夹中,新建一个langgraph.json文件,在该json文件中配置项目信息,遵循规范如下所示:

  • 必须包含 dependenciesgraphs 字段
  • graphs 字段格式:"图名": "文件路径:变量名"
  • 配置文件必须放在与Python文件同级或更高级的目录

  注意: 项目文件的名称必须为langgraph.json。如下所示:

image-20250624191532218

  其中:

  • dependencies: ["./"] - 告诉LangGraph在当前目录查找依赖项(会自动读取requirements.txt
  • chatbot: "./graph.py:graph" - 定义图名为chatbot,来自graph.py文件中的graph变量
  • env: ".env" - 指定环境变量文件位置

  最终完整项目结构如下所示:

FENCE0

image-20250624191613003

  完整的代码已经上传至百度网盘中的langgraph_chatbot文件夹中,大家可以扫描下方二维码免费领取

image-20250624191855635 e873ea36c8a2263b2a88a0f86f9481b

  然后,安装langgraph-cli依赖,执行如下代码:

FENCE0

image-20250624192025273

  最后,进入到langgraph_chatbot文件夹,执行LangGraph dev即可启动项目

FENCE0

image-20250624192113062

  启动成功后,即可点击Studio UI中显示的链接,在浏览器中打开并访问Studio,如下所示:

image-20250624195356912

完整演示流程如下所示:

Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/LangSmith%26Studio%20%E9%97%AE%E7%AD%94%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%8F%AF%E8%A7%86%E5%8C%96%E8%B0%83%E8%AF%95.mp4", width=800, height=400)