简介

文章介绍了LangGraph底层API的基本概念与使用方法,包括图结构的三大核心要素:节点(功能模块)、边(数据传递)和状态(消息管理)。通过加减法示例演示了如何手动创建图流程,并介绍了使用Pydantic构建稳定状态的方法,提高了代码健壮性。文章指出掌握底层API是开发复杂智能体系统的必备技能。

从本期分享开始我们就深入到LangGraph底层API进行学习。

一、为什么要学习LangGraph底层API?

在整个系列分享的一开始我们绘制过如下的LangGraph核心设计的层级结构图。

第一层是预构建图的API,也就是预定义的图结构图模板,比如我们一直使用的create_react_agent表示使用一行命令创建基于预构建ReACT图的智能体,通过它我们可以方便的接入外部工具函数或者MCP服务。其它的图结构模板API与create_react_agent类似所以我们没有去深入讲解。

第二层是一些AgentNode API,有时我们并不会简单的使用ReACT等图模板,往往还需要添加一些组件。AgentNode API就是方便我们快速封装节点并引入图结构的API,例如一些规定模型如何调度,工具如何封装的节点API。

第三层是最底层的API,借助底层API,开发者可以更加灵活的完成各类智能体的开发,将任意的函数,大模型都编排成节点和边封装到图结构中。在很多场景下,比如人在环中(必须有人类参与协助的Agent结构,例如一些模型输出结果后要经过人类审核才能生成最终答案)或者搭建多智能体协作系统时,必须使用更加底层的图结构API才能完成,因此这也使得掌握底层API是目前大模型开发人员进阶的必备技巧。

这里也要说明底层API学习起来还是有些难度(可以想象一个图既有节点又有边,还是一个有向有环图,内部还有条件判别、循环等结构,肯定不是一行create_react_agent命令能完成的)

二、LangGraph图结构对象创建方法与核心语法

2.1 LangGraph图结构概念说明

在介绍API之前,我们先梳理一下LangGraph 底层 API的基本语法与设计理念,LangGraph的宗旨是创建一个图结构,该图结构包含大模型、外部工具等,通过点线间的连接构成灵活的处理链路。基于该宗旨,LangGraph定义了一套由点、边、状态组成的有向有环的结构图语法。

节点(Nodes)

任何可执行的功能包括大语言模型API,工具,甚至Agent都可以作为LangGraph图的点。

边(Edges)

边通常负责传递数据,也有一些边负责进行逻辑控制,例如if-else的判断和选择,从而让整个图状结构更加丰富。

State(状态)

LangGraph通过组合点和边去创建复杂的循环工作流程,节点产生的消息通过边传递给别的节点从而形成通路。为了维持节点和边之间的消息传递,LangGraph势必要对所有的消息进行统一管理,这就引出了概念“State(状态)”。在LangGraph构建的流程中,每次执行都会启动一个状态,图中的节点在处理时会传递和修改该状态。这个状态不仅仅是一组静态数据,而是由每个节点的输出动态更新,然后影响循环内的后续操作,确保图通路顺畅。

2.2 手动创建图流程

具备理论基础后接下来我们通过代码实战来理解LangGraph的设计原理。为了方便大家理解,我们先在不接入大模型的情况下构建一个加减法图工作流。

  1. LangGraph图结构构建的第一步是创建State, 构建state的方法非常简单,我们可以将图的状态设计为一个字典,用于在不同节点间共享和修改数据,然后使用StateGraph类进行图的实例化。代码如下, 需要注意的是builder也是后面要用到的图构建器(Graph Builder)对象,用于逐步添加节点、边、控制流逻辑,最终编译成可执行的图。
from langgraph.graph import StateGraph
  1. 接下来使用代码定义图结构的两个节点,对LangGraph来说,图结构节点的类型包括很多种,可以是大语言模型,工具函数等等,简而言之可以顺序式处理数据的节点都可以作为图节点。我们这里自定义两个简单函数:一个是加法函数接收当前State并将其中的x值加1,另一个是减法函数接收当前State并将其中的x值减2,代码如下:
defaddition(state):
  1. 接下来进行图结构的设计,添加名为additionsubtraction的节点,并关联到两个函数上。 对于LangGraph来说有两个名为STARTEND的特殊节点,这两个节点没有明确功能,只是起到标识开始和结束的作用。
from langgraph.graph import START, END

上述的代码语义非常明确,我们可以构建出如下图:

我们也可以通过builder.nodesbuilder.edges查看图的节点和边的相关情况:

  1. 执行图的编译,需要通过调用compile()方法将编排后的builder编译成一个可执行的图,添加如下代码:
graph = builder.compile()

编译后的图也支持可视化效果展示,笔者喜欢ascii风格的展示效果。我们首先在anaconda虚拟环境langgraphenv中执行pip install grandalf安装依赖环境,然后在代码中添加 graph.get_graph().print_ascii()打印字符风格的图,效果如下:

2.3 LangGraph图对象运行

当我们通过builder.compile()方法编译图后,编译后的graph对象提供了invoke方法,该方法用于启动图的执行。在图执行前我们需要通过invoke方法传递一个初始状态,这个状态作为图执行的起始输入:

initial_state={"x": 10}

可以看到最后的输出和我们的预期相符合,x初始值为10, 首先经过加法节点变为11后传递给减法节点,减法节点减去2后变为9输出为最终结果。

三、借助Pydantic构建稳定的State

以上的写法虽然灵活但有一个致命缺陷,我们的State状态缺乏预定义的模式,节点可以在没有严格类型约束的情况下自由地读取和写入状态,这样的灵活性虽然有利于动态数据处理,但这也要求开发者在整个图的执行过程中保持对键和值的一致性管理(例如我们在加减法函数中返回的都是只包含键值对x的字典对象)。因为在任何节点中尝试访问State中不存在的键,会直接中断整个图的运行状态。

3.1 Pydantic基本使用方法

通过集成pydantic中的BaseModel抽象类来定义状态State, 定义后的状态可以对键值对属性进行自动校验,我们编写如下代码,对x和y键定义不同的类型,错误的类型会报错。

from pydantic import BaseModel

3.2 Pydantic应用于StateGraph

下面我们使用Pydantic对第2节的代码进行修改,采用如下方法编写的代码可以对状态键内容和属性进行约束,代码健壮性更强。

from pydantic import BaseModel

四、总结

本期内容分享了LangGraph底层自定义图API点、边、状态State的设计理念,并通过简单的加减法串联结构图演示了LangGraph底层API的使用方法,同时介绍了如何使用Pydantic约束State使代码更健壮的基本方法。当然我们使用LangGraph构建的图不可能仅仅是串行关系这么简单。

五、如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

在这里插入图片描述

01.大模型风口已至:月薪30K+的AI岗正在批量诞生

在这里插入图片描述

2025年大模型应用呈现爆发式增长,根据工信部最新数据:

国内大模型相关岗位缺口达47万

初级工程师平均薪资28K(数据来源:BOSS直聘报告)

70%企业存在"能用模型不会调优"的痛点

真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!

02.大模型 AI 学习和面试资料

1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工

📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

更多推荐