Agent实战教程:LangGraph图结构深度解析,构建大模型智能体的核心组件与实战,看到就是赚到!!

图结构(Graphs)

LangGraph 的核心是将智能体工作流建模为图结构。你可以通过三个关键组件来定义智能体的行为:

状态(State)

这是一个共享的数据结构,代表你应用程序的当前快照。它可以是任何数据类型,但通常使用共享状态模式来定义。

简单理解:就像是一个"记事本",记录着当前程序运行到什么状态了。

节点(Nodes)

这些是包含智能体逻辑的函数。它们接收当前状态作为输入,执行一些计算或操作,然后返回更新后的状态。

简单理解:就像是"工作站",负责干活,处理数据,完成具体任务。

边(Edges)

这些函数决定接下来要执行哪个节点,基于当前状态来判断。它们可以是条件分支或固定的转换路径。

简单理解:就像是"交通指挥员",告诉程序下一步该去哪里。

核心思想

通过组合节点和边,你可以创建复杂的、循环的工作流,让状态随时间不断演化。LangGraph 的真正优势来自于它如何管理这些状态。需要强调的是:节点和边本质上就是函数 - 它们可以包含大语言模型,也可以只是普通的代码。

简而言之:节点负责干活,边负责指路。

运行机制

LangGraph 的底层图算法使用消息传递来定义通用程序。当一个节点完成操作后,它会沿着一条或多条边向其他节点发送消息。接收消息的节点然后执行自己的函数,将结果消息传递给下一组节点,这个过程持续进行。这个设计灵感来自Google的Pregel系统,程序以离散的"超步骤"进行。

超步骤(super-step )的概念

  • 一个超步骤可以看作是对图节点的一次完整迭代
  • 并行运行的节点属于同一个超步骤
  • 顺序运行的节点属于不同的超步骤

执行流程

  1. 图执行开始时,所有节点都处于非活跃状态
  2. 当节点在任何传入边(或"通道")上收到新消息(状态)时,它变为活跃状态
  3. 活跃节点运行其函数并返回更新结果
  4. 在每个超步骤结束时,没有收到传入消息的节点会"投票停止",将自己标记为非活跃
  5. 当所有节点都是非活跃状态且没有消息在传输时,图执行终止

这就像是一个智能的流水线系统,每个工作站(节点)完成任务后,会自动将结果传递给下一个需要工作的站点,直到整个任务完成。

构建一个最简单的图结构

让我们构建一个包含3个节点和一个条件边的简单图。

状态(State)

首先,定义图的状态。

状态模式作为图中所有节点和边的输入模式。

我们使用Python typing模块中的TypedDict类作为模式,它为键提供类型提示。

import random
from typing import Literal
from typing import TypedDict

from langgraph.graph import StateGraph, END, START

# 定义状态 State
classState(TypedDict):
    graph_state: str

节点(Nodes)

节点就是Python函数。

第一个位置参数是状态,如上所定义。

因为状态是一个具有上述模式的TypedDict,每个节点都可以通过state['graph_state']访问键graph_state

每个节点返回状态键graph_state的新值。

默认情况下,每个节点返回的新值将覆盖之前的状态值。

# 定义节点 None

defnode_1(state: State):
    print("我在运行节点1的功能")
return {"graph_state": state["graph_state"] + ",我的心情是:"}

defnode_2(state: State):
    print("我在运行节点2的功能")
return {"graph_state": state["graph_state"] + "开心的!"}

defnode_3(state: State):
    print("我在运行节点3的功能")
return {"graph_state": state["graph_state"] + "伤心的!"}defnode_1(state):
    print("---节点 1---")
return {"graph_state": state['graph_state'] + " 我是"}

defnode_2(state):
    print("---节点 2---")
return {"graph_state": state['graph_state'] + " 开心的!"}

defnode_3(state):
    print("---节点 3---")
return {"graph_state": state['graph_state'] + " 伤心的!"}

边(Edges)

边连接节点。

普通边:如果你想要总是从node_1跳转到node_2,可以使用普通边。

条件边:如果你想要在节点之间进行可选路由,可以使用条件边。

条件边被实现为函数,根据某些逻辑返回下一个要访问的节点。

defdecide_mood(state: State) -> Literal["node_2", "node_3"]:
# 用户的输入决定了下一个访问节点
    user_input = state["graph_state"]

if random.random() < 0.5:
return"node_2"
return"node_3"

图构建(Graph Construction)

现在,我们从上面定义的组件构建图。

StateGraph类是我们可以使用的图类。

首先,我们用上面定义的State类初始化一个StateGraph。

然后,添加节点和边。

我们使用START节点(一个将用户输入发送到图的特殊节点)来指示图的起始位置。

END节点是表示终端节点的特殊节点。

最后,我们编译图以对图结构执行一些基本检查。

我们可以将图可视化为Mermaid图表。

# 构建图:基于节点+边
builder = StateGraph(State)
# 添加节点
builder.add_node("node_1", node_1)
builder.add_node("node_2", node_2)
builder.add_node("node_3", node_3)

# 添加边
builder.add_edge(START, "node_1")
builder.add_conditional_edges("node_1", decide_mood)
builder.add_edge("node_2", END)
builder.add_edge("node_3", END)

# 编译图
graph = builder.compile()
# 显示工作流
png_data = graph.get_graph().draw_mermaid_png()
with open("graph.png", "wb") as f:
    f.write(png_data)

图的调用(Graph Invocation)

编译后的图实现了可运行协议。

这提供了执行LangChain组件的标准方式。

invoke是此接口中的标准方法之一。

输入是一个字典{"graph_state": "你好,我是Lance。"},它为我们的图状态字典设置初始值。

当调用invoke时,图从START节点开始执行。

它按顺序通过定义的节点(node_1、node_2、node_3)进行。

条件边将使用50/50决策规则从节点1跳转到节点2或3。

每个节点函数接收当前状态并返回一个新值,该值覆盖图状态。

执行持续到到达END节点。

response = graph.invoke({"graph_state": "你好,我是小明"})
print(response)

输出:

我在运行节点1的功能
我在运行节点2的功能
{'graph_state': '你好,我是小明,我的心情是:开心的!'}

执行说明

invoke同步运行整个图。

它等待每个步骤完成后再移动到下一个步骤。

它在所有节点执行完毕后返回图的最终状态。

在这个例子中,它返回node_2完成后的状态:

{'graph_state': '你好,我是小明,我的心情是:开心的!'}

最后

为什么要学AI大模型

当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!

DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

在这里插入图片描述

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
在这里插入图片描述
最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。

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

AI大模型系统学习路线

在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。

img

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。

AI大模型入门到实战的视频教程+项目包

看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

在这里插入图片描述
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

海量AI大模型必读的经典书籍(PDF)

阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
在这里插入图片描述

600+AI大模型报告(实时更新)

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

AI大模型面试真题+答案解析

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
在这里插入图片描述

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值