【强烈推荐】LangGraph核心概念解析:State管理+实战案例,一篇搞定大模型开发

AI Agent开发实战:从核心概念到复杂工作流构建指南 最近在推进大模型应用落地时,团队反复讨论一个核心问题:如何让大模型从“被动问答”升级为“主动执行复杂任务”?传统的提示工程(Prompt Engineering)在面对多步骤、需调用工具、有状态记忆的复杂场景时,显得力不从心。这正是 AI Agent(智能体) 技术要解决的核心痛点。它不再是简单的聊天机器人,而是能够感知环境、规划决策、调用工具并持续学习的“数字员工”。 本文将为你系统拆解 AI Agent 的开发全貌。无论你是刚接触大模型的开发者,还是希望将 Agent 能力集成到现有业务中的工程师,都能 阅读详情

本文详细介绍了LangGraph框架的核心概念——State管理。通过计算器示例和聊天机器人实战,演示了如何使用字典和TypedDict定义State,以及Reducer机制控制状态更新。特别讲解了add_messages函数如何智能管理对话历史,并提供了完整的聊天机器人实现代码。读者可掌握State、Node、Edge等基础概念,理解LangGraph工作原理,并能独立开发大模型应用。

一、先把环境准备好

咱们先把开发环境搞定,后面代码都能直接跑起来。打开终端,依次执行:

# 安装核心包
pip install langgraph langchain-openai
# 安装可视化工具(可选,但强烈推荐)
pip install pyppeteer ipython

创建一个langgraph_demo.py文件,把API Key配置好:

import os
import getpass
# 设置OpenAI API Key
if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("请输入你的OpenAI API Key: ")

好了,准备工作完成。接下来进入正题。

二、State到底是个啥?

很多教程上来就讲概念,我换个思路。咱们先看一个实际场景:

假设你要做一个简单的计算器程序,流程是这样的:

  1. 用户输入一个数字,比如10
  2. 第一步:给这个数字加1
  3. 第二步:用上一步的结果减2
  4. 最后输出结果

传统写法可能是这样:

def calculator(x):
x = x + 1  # 第一步
y = x - 2  # 第二步
return x, y
result = calculator(10)
print(result)  # (11, 9)

这没问题,但如果流程复杂了呢?比如有10个步骤,每个步骤可能用到前面多个结果,代码就会很乱。

LangGraph的解决方案是:用一个共享的"状态"(State)来存储所有中间结果。每个处理步骤只需要:

  • 读取State中需要的数据
  • 处理完后,把结果写回State
  • 不用管其他步骤的数据

这就是State的核心思想:一个在整个流程中共享的数据容器。

三、第一个例子:用字典做State

咱们把刚才的计算器用LangGraph实现一遍。完整代码如下,每行都加了注释:

from langgraph.graph import StateGraph, START, END
# 定义第一个节点:加法
def addition(state):
"""
这个函数会收到当前的state(一个字典)
从里面取出x的值,加1后返回
"""
print(f"加法节点收到的state: {state}")
current_x = state["x"]
new_x = current_x + 1
# 只返回更新的部分,不用担心其他数据会丢
return {"x": new_x}
# 定义第二个节点:减法
def subtraction(state):
"""
这个函数也会收到state
注意:这里的state已经包含了上一个节点更新后的x值
"""
print(f"减法节点收到的state: {state}")
current_x = state["x"]
y = current_x - 2
# 这里我们新增了一个y,x会保留
return {"y": y}
# 开始构建图
# StateGraph(dict)表示我们的state是一个普通字典
builder = StateGraph(dict)
# 添加两个节点
# 第一个参数是节点名称,第二个参数是对应的函数
builder.add_node("addition", addition)
builder.add_node("subtraction", subtraction)
# 定义节点之间的连接关系(边)
# START -> addition -> subtraction -> END
builder.add_edge(START, "addition")        # 起点连到addition
builder.add_edge("addition", "subtraction") # addition连到subtraction
builder.add_edge("subtraction", END)        # subtraction连到终点
# 编译成可执行的图
graph = builder.compile()
# 运行!传入初始状态
initial_state = {"x": 10}
final_state = graph.invoke(initial_state)
print(f"\n最终状态: {final_state}")

运行这段代码,你会看到:

加法节点收到的state: {‘x’: 10}
减法节点收到的state: {‘x’: 11}

最终状态: {‘x’: 11, ‘y’: 9}

看到了吗?关键点来了:

  1. addition节点只返回了{"x": 11},但y没有丢
  2. subtraction节点返回了{"y": 9},x也还在
  3. 最终状态包含了所有的更新

这就是LangGraph的魔法:节点只需要返回它要更新的部分,其他数据会自动保留。

看看图长什么样

代码能跑是一回事,理解结构又是另一回事。咱们把这个图可视化出来:

from IPython.display import Image, display
# 生成图的可视化
# xray=True表示显示详细信息
display(Image(graph.get_graph(xray=True).draw_mermaid_png()))

你会看到一个流程图,清楚地显示了节点的连接关系。开发的时候这个功能特别有用,能一眼看出逻辑对不对。

四、进阶:用TypedDict让代码更严谨

用字典虽然灵活,但有个大问题:如果你不小心写错了key的名字,程序运行到那里才会报错。

比如这样:

def buggy_function(state):
# 假设state里没有"z"这个key
return {"result": state["z"] + 1}  # 💥运行时报错
为了避免这种问题,实际开发中我们用
TypedDict
来定义State的结构:
from typing_extensions import TypedDict
# 定义State的结构
class State(TypedDict):
x: int  # x是整数
y: int  # y也是整数
# 现在用State来构建图
builder = StateGraph(State)
# 节点函数保持不变
def addition(state: State):  # 加上类型标注
return {"x": state["x"] + 1}
def subtraction(state: State):
return {"y": state["x"] - 2}
# 后面的代码完全一样
builder.add_node("addition", addition)
builder.add_node("subtraction", subtraction)
builder.add_edge(START, "addition")
builder.add_edge("addition", "subtraction")
builder.add_edge("subtraction", END)
graph = builder.compile()
# 运行
result = graph.invoke({"x": 10})
print(result)  # {'x': 11, 'y': 9}

用了TypedDict后,IDE会给你代码提示,写错了key名编辑器就会提醒你。虽然代码多了几行,但避免了很多低级错误。

五、Reducer:状态更新的幕后功臣

现在来解答一个关键问题:为什么节点只返回部分数据,State就能自动合并?

答案是Reducer函数。每个State的key背后都有一个Reducer,默认行为是"覆盖"。我画个图帮你理解:

当前State: {“x”: 10}
节点返回: {“x”: 11}
Reducer执行: 把x从10改成11
结果State: {“x”: 11}

当前State: {“x”: 11}
节点返回: {“y”: 9}
Reducer执行: x不变,新增y
结果State: {“x”: 11, “y”: 9}

默认的Reducer很简单,就是更新或新增。但我们可以自定义更复杂的行为。

六、实战:维护消息列表

聊天机器人需要记住对话历史,每次都要往消息列表里追加新消息。如果用默认的Reducer(覆盖),每次都会丢失之前的对话。

这时候就需要operator.add这个Reducer:

import operator
from typing import Annotated, List
from typing_extensions import TypedDict
# 注意这里的写法
class State(TypedDict):
# Annotated[类型, Reducer函数]
messages: Annotated[List[dict], operator.add]
# 测试一下
def node1(state):
# 返回一个包含新消息的列表
return {"messages": [{"role": "user", "content": "你好"}]}
def node2(state):
print(f"node2收到的消息: {state['messages']}")
# 再追加一条消息
return {"messages": [{"role": "assistant", "content": "你好啊"}]}
builder = StateGraph(State)
builder.add_node("node1", node1)
builder.add_node("node2", node2)
builder.add_edge(START, "node1")
builder.add_edge("node1", "node2")
builder.add_edge("node2", END)
graph = builder.compile()
# 初始状态包含一个空列表
result = graph.invoke({"messages": []})
print(f"\n最终消息列表: {result['messages']}")

运行结果:

node2收到的消息: [{'role': 'user', 'content': '你好'}]
最终消息列表: [
{'role': 'user', 'content': '你好'},
{'role': 'assistant', 'content': '你好啊'}
]

看到了吗?用了operator.add之后,每次返回的消息列表会追加到现有列表中,而不是覆盖。这就是Reducer的威力。

七、接入真实的AI模型

铺垫了这么多,终于到激动人心的部分了——接入GPT做一个真正能聊天的机器人!

完整代码如下,建议你创建一个新文件chatbot.py:

import os
import getpass
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_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
from IPython.display import Image, display
# 配置API Key
if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("请输入OpenAI API Key: ")
# 定义State结构
class State(TypedDict):
# add_messages是LangGraph提供的专门处理消息的Reducer
messages: Annotated[list, add_messages]
# 创建GPT模型实例
llm = ChatOpenAI(model="gpt-4o")
# 定义聊天节点
def chatbot(state: State):
"""
这个函数接收包含对话历史的state
把所有消息发给GPT,获取回复
"""
# state["messages"]是一个消息列表
# 直接传给模型就行
response = llm.invoke(state["messages"])
# 返回模型的回复,add_messages会自动追加到列表
return {"messages": [response]}
# 构建图
builder = StateGraph(State)
builder.add_node("chatbot", chatbot)
builder.add_edge(START, "chatbot")
builder.add_edge("chatbot", END)
# 编译
graph = builder.compile()
# 可视化看看(可选)
# display(Image(graph.get_graph(xray=True).draw_mermaid_png()))
# 单次对话测试
def test_single():
user_message = HumanMessage(content="你好,请介绍一下你自己")
result = graph.invoke({"messages": [user_message]})
print("用户:", user_message.content)
print("AI:", result["messages"][-1].content)
# 连续对话测试
def chat_loop():
print("聊天机器人已启动(输入'退出'结束对话)\n")
while True:
user_input = input("你: ").strip()
if user_input == "退出":
print("再见!")
break
if not user_input:
continue
# 每次都创建新的对话
# 如果要保持对话历史,需要把messages保存下来
for event in graph.stream({"messages": [HumanMessage(content=user_input)]}):
for value in event.values():
print(f"AI: {value['messages'][-1].content}\n")
# 运行
if __name__ == "__main__":
# test_single()  # 测试单次对话
chat_loop()      # 开启连续对话

运行这段代码,你就有了一个能对话的AI助手!

不过这个版本有个问题:每次对话都是独立的,没有记忆。要实现带记忆的版本,需要这样改:

def chat_with_memory():
"""带对话历史的聊天"""
print("聊天机器人已启动(输入'退出'结束对话)\n")
# 用这个列表保存整个对话历史
conversation_history = []
while True:
user_input = input("你: ").strip()
if user_input == "退出":
print("再见!")
break
if not user_input:
continue
# 把用户消息加入历史
conversation_history.append(HumanMessage(content=user_input))
# 用完整的历史调用模型
result = graph.invoke({"messages": conversation_history})
# 获取AI回复
ai_message = result["messages"][-1]
print(f"AI: {ai_message.content}\n")
# 把AI回复也加入历史
conversation_history.append(ai_message)
# 运行带记忆的版本
if __name__ == "__main__":
chat_with_memory()

现在你可以这样聊:

你: 我叫小明
AI: 你好小明!很高兴认识你…

你: 我刚才说我叫什么?
AI: 你刚才说你叫小明。

看,AI能记住之前的对话了!

八、add_messages的秘密

可能你注意到了,我们用的是add_messages而不是operator.add。这两个有什么区别?

operator.add很简单粗暴:直接把两个列表拼起来。

add_messages更聪明:

  1. 每条消息都有唯一ID
  2. 如果新消息的ID和已有消息相同,就更新那条消息
  3. 如果ID不同,就追加新消息

看个例子:

from langgraph.graph.message import add_messages
from langchain_core.messages import HumanMessage, AIMessage
# 场景1:追加新消息
msg1 = [HumanMessage(content="你好", id="1")]
msg2 = [AIMessage(content="你好啊", id="2")]
result = add_messages(msg1, msg2)
print("场景1 - 追加:", [m.content for m in result])
# 输出: ['你好', '你好啊']
# 场景2:更新已有消息
msg1 = [HumanMessage(content="你好", id="1")]
msg2 = [HumanMessage(content="你好呀", id="1")]  # 注意ID相同
result = add_messages(msg1, msg2)
print("场景2 - 更新:", [m.content for m in result])
# 输出: ['你好呀']  # 第一条消息被更新了

这个特性在人机协作场景特别有用。比如用户可以修改AI的回复,然后继续对话。

九、源码解析:add_messages是怎么实现的?

有些同学喜欢刨根问底,咱们快速过一下核心逻辑(不想看可以跳过):

def add_messages(left, right):
"""
left: 已有的消息列表
right: 新来的消息列表
"""
# 1. 确保都是列表
if not isinstance(left, list):
left = [left]
if not isinstance(right, list):
right = [right]
# 2. 给每条消息分配ID(如果没有的话)
for m in left:
if m.id is None:
m.id = str(uuid.uuid4())
for m in right:
if m.id is None:
m.id = str(uuid.uuid4())
# 3. 建立ID到消息的映射
left_idx_by_id = {m.id: i for i, m in enumerate(left)}
# 4. 合并:ID相同就更新,不同就追加
merged = left.copy()
for m in right:
if m.id in left_idx_by_id:
# ID存在,更新
merged[left_idx_by_id[m.id]] = m
else:
# ID不存在,追加
merged.append(m)
return merged

核心就是用ID来判断是更新还是追加。简单但很实用。

十、完整项目:支持多轮对话的智能助手

最后把所有知识点整合一下,做个功能完整的聊天助手:

import os
import getpass
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_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
# ===== 配置部分 =====
if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("请输入OpenAI API Key: ")
# ===== State定义 =====
class ChatState(TypedDict):
messages: Annotated[list, add_messages]
# ===== 创建模型 =====
llm = ChatOpenAI(
model="gpt-4o",
temperature=0.7,  # 控制回复的创造性
)
# ===== 定义节点 =====
def chatbot_node(state: ChatState):
"""处理用户消息,生成回复"""
messages = state["messages"]
response = llm.invoke(messages)
return {"messages": [response]}
# ===== 构建图 =====
builder = StateGraph(ChatState)
builder.add_node("chatbot", chatbot_node)
builder.add_edge(START, "chatbot")
builder.add_edge("chatbot", END)
graph = builder.compile()
# ===== 主程序 =====
def main():
print("=" * 50)
print("智能聊天助手 v1.0")
print("=" * 50)
print("提示:输入'退出'结束对话\n")
# 设置系统提示词
conversation = [
SystemMessage(content="你是一个友好、专业的AI助手。回答要简洁明了。")
]
while True:
# 获取用户输入
user_input = input("👤 你: ").strip()
# 退出判断
if user_input.lower() in ["退出", "exit", "quit"]:
print("\n👋 感谢使用,再见!")
break
# 跳过空输入
if not user_input:
continue
# 添加用户消息
conversation.append(HumanMessage(content=user_input))
try:
# 调用图进行处理
result = graph.invoke({"messages": conversation})
# 获取AI回复
ai_response = result["messages"][-1]
conversation.append(ai_response)
# 显示回复
print(f"🤖 AI: {ai_response.content}\n")
except Exception as e:
print(f"❌ 出错了: {str(e)}\n")
# 出错时移除最后添加的用户消息
conversation.pop()
if __name__ == "__main__":
main()

这个版本包含了:

  • ✅ 完整的对话历史管理
  • ✅ 系统提示词设置
  • ✅ 异常处理
  • ✅ 友好的交互界面

直接运行就能用!

十一、常见问题答疑

Q1: State可以存储什么类型的数据?

A: 理论上任何Python对象都行:字典、列表、自定义类、甚至函数。但建议用简单的数据结构,方便序列化和持久化。

Q2: 节点函数可以不返回任何东西吗?

A: 可以。如果节点只是做一些副作用操作(比如打印日志),可以返回空字典{}或者None。

Q3: 怎么调试State的变化?

A: 在每个节点函数里加print(state),就能看到每一步State的变化情况。

Q4: TypedDict是必须的吗?

A: 不是必须的,但强烈推荐。它能帮你在开发阶段就发现很多类型错误。

Q5: 对话历史会越来越长,怎么办?

A: 这是个好问题。可以定期裁剪历史,只保留最近N条消息。或者用摘要技术压缩历史信息。后面的文章会详细讲。

十二、总结

今天我们深入学习了LangGraph的核心——State管理:

  1. State是什么:在整个流程中共享的数据容器
  2. 基本用法:节点读取State,处理后返回更新的部分
  3. TypedDict:让代码更严谨,避免运行时错误
  4. Reducer机制:控制State的更新方式(覆盖、追加等)
  5. add_messages:智能管理消息列表的专用Reducer
  6. 实战应用:构建带记忆的聊天机器人

掌握了这些,你就能灵活构建各种LangGraph应用了。

如何学习大模型 AI ?

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

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

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

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

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

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

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

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

在这里插入图片描述

为什么要学习大模型?

我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。

在这里插入图片描述

在这里插入图片描述

大模型入门到实战全套学习大礼包

1、大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!

img


2、大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。

在这里插入图片描述

3、AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

img

4、大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。

img

5、大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

img

适用人群

在这里插入图片描述

第一阶段(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 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

LangGraph工作流编排:大模型应用开发的核心技术解析 工作流编排是现代AI应用开发中的关键技术,它通过将多个模型能力、业务逻辑和数据处理步骤有机串联,解决复杂任务的端到端处理问题。其核心原理基于状态管理和上下文传递机制,采用类似Actor模型的设计思想,支持管道、广播和聚合三种传递模式。在工程实践中,工作流编排能显著减少胶水代码量(实测降低60%),特别适合需要动态分支与循环控制的场景,如多模态数据处理和客服工单分类。LangGraph作为专为大模型设计的工作流框架,通过创新的状态管理器和声明式流程定义,在审批流等需要人工干预的场景中展现出独特优势。合理的缓存 阅读详情

相关推荐

构建现代AI Agent:LangGraph、MCP与Workflow三大核心架构形态解析

在AI应用开发领域,智能体(Agent)已从简单的API调用演变为需要管理复杂状态与业务流程的系统。其核心原理在于通过模块化设计,将任务分解为可复用的技能(Skill)与工具(Tool),并借助状态机和工作流引擎协调执行。这种架构的技术价值在于实现了高度的可维护性与扩展性,使开发者能够构建适应复杂场景的自治系统。典型的应用场景包括智能客服、自动化数据分析、以及跨系统任务编排等。本文聚焦于现代AI Agent开发的三大关键技术形态:LangGraph用于有状态的工作流编排,MCP(模型上下文协议)实现工具的统

weixin_33696822的博客 478

收藏备用!LangGraph核心之State状态管理全解析,小白也能上手大模型开发

State是什么:在整个流程中共享的数据容器基本用法:节点读取State,处理后返回更新的部分TypedDict:让代码更严谨,避免运行时错误Reducer机制:控制State的更新方式(覆盖、追加等):智能管理消息列表的专用Reducer实战应用:构建带记忆的聊天机器人掌握了这些,你就能灵活构建各种LangGraph应用了。如今技术圈降薪裁员频频爆发,传统岗位大批缩水,相反AI相关技术岗疯狂扩招,薪资逆势上涨150%,大厂老板们甚至开出70-100W年薪,挖掘AI大模型人才!

AI大模型的博客 1838

LangGraph实战:构建可编排的多智能体工作流系统

在人工智能工程实践中,多智能体协作系统是解决复杂任务的关键架构。其核心原理在于将多个具备特定能力的AI模块(智能体)通过状态管理和消息传递机制组织起来,实现协同工作。这种架构的技术价值在于突破了单一模型的能力局限,通过分工与协作提升任务处理的效率和可靠性。在实际应用场景中,多智能体系统广泛用于自动化客服、内容生成、数据分析等需要多步骤推理的领域。本文聚焦于**LangGraph**这一专门用于构建有状态、多智能体工作流的库,它通过**图(Graph)** 的抽象将复杂的智能体交互流程可视化、模块化。Lang

weixin_33913332的博客 450

【必学】LangGraph核心概念State详解:从小白到上手实战,建议收藏!

本文详细讲解了LangGraph框架中的State核心概念,包括State的定义与作用、使用字典和TypedDict定义State的方法、Reducer机制控制状态更新方式、add_messages管理消息列表的技巧,并通过实战案例展示了如何构建带记忆的聊天机器人。掌握这些知识,可以帮助开发者灵活构建各种LangGraph应用。

2401_85325726的博客 1283

LangGraph三节点图实战:State、Node、Edge核心原理精讲

LangGraph是一种面向AI工作流的状态驱动图计算框架,其核心在于将复杂业务逻辑解耦为可追踪、可验证、可并发的安全状态(State)、职责单一的计算单元(Node)和声明式的条件路由(Edge)。它基于Pydantic类型系统保障运行时数据契约,通过不可变状态合并与快照机制解决多节点并发写入冲突,并依托检查点(Checkpoint)实现断点续传与错误恢复。该范式广泛应用于内容审核、对话编排、RAG流程控制等需动态决策与状态累积的AI工程场景。本文以一个清洗→敏感词检测→条件审核的三节点极简图为例,深入剖

cuili5839的博客 337

关于图像傅里叶变换得到的频谱图的通俗理解

傅里叶变换过程: 经过傅里叶变化且频谱居中化处理的频谱图: 1.如果将图像某一行上的灰度变化看作是一个离散信号,那么整张图像可以看作是一个分布在二维平面上的信号,因此图像可看作是空间域信号。傅里叶变换则是将图像灰度分布(空间域信号)变换到了频域上,给我们提供了观察图像的另一个视角。 2.图像的频谱图(频谱居中后)的中心点是频率最低点,以该点为圆心,不同半径的上的点表示不同的频率。这里的图像频率是指对应原图像中的某灰度曲线变化的快慢(这么说不严谨,但是按照上面第1点的角度,似乎也可以这么理解

daimashiren的博客 2万+

大模型实战:LangGraph核心概念State详解,从零构建你的第一个智能对话系统!

本文详细解析了LangGraph框架的核心概念State,通过实际案例展示了State作为共享数据容器在智能体系统中的应用。文章介绍了State的基本用法、TypedDict类型定义、Reducer机制以及add_messages等高级功能。从简单的计算器到完整的智能对话系统,作者逐步演示了如何利用State管理数据流,构建可扩展的AI应用。适合初学者掌握LangGraph基础知识,为开发复杂智能系统打下坚实基础。

2401_85390073的博客 887

手把手教你用AI工具快速开发UniApp首页:从设计稿到完整页面的实战流程

本文详细介绍了如何利用Claude Code、Cursor等AI工具高效开发UniApp首页的完整工作流。从设计稿解析、Prompt工程、代码生成优化到调试适配,提供了一套可复用的实战流程,帮助前端开发者大幅提升从设计到代码的转化效率。

weixin_29199873的博客 317

LangGraph核心:State状态管理与智能聊天机器人实战

State是什么:在整个流程中共享的数据容器基本用法:节点读取State,处理后返回更新的部分TypedDict:让代码更严谨,避免运行时错误Reducer机制:控制State的更新方式(覆盖、追加等):智能管理消息列表的专用Reducer实战应用:构建带记忆的聊天机器人掌握了这些,你就能灵活构建各种LangGraph应用了。

优快云_224022的博客 682

40岁从智驾转具身智能之路

我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。

hzm8341的博客 638

vue微前端qiankun框架学习到项目实战,基座登录动态菜单及权限控制

技术无关,独立开发,独立部署,增量升级,独立运行,微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用。

前端开发工程师 9749

【强烈推荐】LangGraph实操指南:从入门到精通打造智能AI助手,零基础也能玩转大模型开发

【强烈推荐】LangGraph实操指南:从入门到精通打造智能AI助手,零基础也能玩转大模型开发

m0_48891301的博客 1843

[系统安全] 三十二.恶意代码检测(2)常用技术详解及总结

前文从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识,在学术界方面,用类似于综述来介绍攻击追踪溯源的不同方法;在产业界方面,主要参考李东宏老师从企业恶意样本分析的角度介绍溯源工作。这篇文章将详细总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。希望这篇文章对您有所帮助,如果文章中存在错误、理解不到位或侵权的地方,还请告知作者与海涵。且看且珍惜,加油~

杨秀璋的专栏 1万+

LangGraph核心教程:从零掌握State状态管理,收藏这篇就够了!

本文系统介绍了LangGraph框架的核心状态管理机制,重点解析了State的基本概念、实现方式及实际应用。文章从基础字典实现开始,逐步深入讲解如何通过TypedDict增强代码健壮性,详细说明了Reducer状态更新原理,并演示了如何使用operator.add实现消息列表的累积功能。通过构建带记忆的聊天机器人等实战案例,帮助开发者理解节点间的数据传递方式,掌握LangGraph的核心开发模式。内容涵盖从环境配置到可视化调试的全流程,适合各层次开发者学习状态管理在AI应用开发中的关键作用。

qq_46094651的博客 1342

大疆视觉算法面试,手推极线几何这关刷掉了一半人

摘要:大疆机器视觉算法工程师面试重点考察目标检测工程优化、深度估计几何原理和视觉SLAM全流程。目标检测侧重模型压缩和部署优化,需掌握知识蒸馏、量化及算子融合;深度估计要求推导双目几何并理解单目深度恢复方法;视觉SLAM需熟悉前后端流程及ORB-SLAM3/VINS-Mono区别。面试常要求手推PnP等公式,注重实践能力。准备需重点练习公式推导和代码实现,掌握工程落地细节。

郑伟强dev的专栏 193

【微服务】SpringBoot 整合Kafka 项目实战操作详解

SpringBoot 整合Kafka 实战操作详解

congge 5570

【收藏备用】LangGraph从零开始:State机制、节点通信与TypedDict实战指南

State是什么:在整个流程中共享的数据容器基本用法:节点读取State,处理后返回更新的部分TypedDict:让代码更严谨,避免运行时错误Reducer机制:控制State的更新方式(覆盖、追加等):智能管理消息列表的专用Reducer实战应用:构建带记忆的聊天机器人掌握了这些,你就能灵活构建各种LangGraph应用了。

EnjoyEDU的博客 922

QT+Halcon实现螺纹检测

工业上要检测螺丝的内外直径、内外牙距、内外角度,现在比较好用的图像处理库,开源的opencv,收费的有halcon。为了实现螺纹检测,和对比螺纹检测拿个库比较好。分别用opencv和halcon实现了螺纹检测,通过对比发现用halcon实现的效果比较。现在用博客把实现过程记录下来: 1、需要检测的螺纹数据如下: 2、为了实现检测螺丝以上数据,螺纹内径、螺纹外径、螺纹外牙距、螺纹...

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 7050

LangGraph实战:构建有状态AI智能体工作流,从链式到图式开发范式升级

在AI应用开发中,智能体(Agent)是实现复杂任务自动化的核心技术,它通过结合大语言模型(LLM)与外部工具,模拟人类的“思考-行动”循环。传统链式调用(Chain)在处理简单线性流程时有效,但在面对需要状态管理、分支决策和多轮交互的复杂场景时,往往显得力不从心,开发者需要手动编写大量胶水代码来维护状态和流程控制。LangGraph作为LangChain生态的关键增强,引入基于有向图的编程范式,将智能体开发提升到“有状态工作流”的维度。它通过显式定义State(状态)、Node(节点)和Edge(边),让

weixin_34174422的博客 316

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【强烈推荐】LangGraph实战教程:构建可扩展的智能对话系统,建议收藏!!

LangGraph是基于LangChain构建的库,用于创建有状态、多参与者的LLM应用程序。本文详细介绍了如何使用LangGraph构建智能聊天机器人,包括状态管理、意图分类、响应生成、条件逻辑和多智能体协调等核心功能。文章还涵盖了生产部署注意事项、错误处理、性能优化、集成模式、测试和质量保证,为开发者提供了从入门到生产环境的全面指南。

2401_85327249的博客 926

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

后端开发者如何用LangGraph构建企业级AI Agent:从状态管理到多智能体实战

在AI应用开发领域,智能体(Agent)通过模拟“思考-行动”循环来处理复杂任务,其核心在于对非确定性、有状态工作流的管理。理解其工作原理,需要掌握状态管理、工具调用与流程编排等关键技术,这些能力对于构建能够自主决策、与外部系统交互的智能应用至关重要。从工程实践角度看,一个稳定、可维护的Agent系统能显著提升业务流程的自动化水平与响应智能度。LangGraph框架正是为此而生,它借鉴了后端开发中熟悉的状态机和流程图思想,允许开发者以“图”的形式显式定义智能体的执行逻辑与数据流,从而平滑地将后端工程经验迁移

weixin_30947043的博客 360

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

从单智能体到多智能体都离不开的基础:LangGraph State详解与实践,小白友好,强烈建议收藏

本文详细讲解了LangGraph框架的核心概念State(状态)管理,包括State的定义、使用字典和TypedDict作为State的方法、Reducer机制以及add_messages函数的应用。通过从简单计算器到聊天机器人的多个实战示例,展示了如何利用State构建复杂的应用流程,并提供了完整的多轮对话智能助手实现。

2401_85325557的博客 978

下一代AI智能体开发实战:基于LangGraph与Ollama构建规划型智能体

AI智能体作为连接大模型能力与业务应用的关键技术,其核心在于通过感知环境、自主决策与工具调用实现目标。从技术原理看,智能体通过工作流编排、状态管理和工具集成,将大模型的语义理解转化为实际业务动作。其技术价值在于解决传统AI应用的成本高、稳定性差、集成困难等痛点,实现从“玩具”到“工具”的跨越。在应用场景上,智能体广泛应用于自动化客服、数据分析、流程自动化等领域。本文以LangGraph框架和Ollama本地模型为例,通过构建具备规划能力的调研智能体原型,展示了如何实现目标分解、循环执行与工具调用的完整工作流

weixin_34218579的博客 1363

【强烈推荐】从入门到精通:LangChain与LangGraph选型指南,大模型开发必看收藏!

本文深入对比了LangChain和LangGraph两大大模型开发框架。LangChain提供丰富组件库和LCEL编排能力,适合简单一次性任务;LangGraph专注于构建有状态Agent系统,采用图结构支持复杂状态管理和多智能体协作。文章从技术架构、应用场景等维度分析,提供决策矩阵,帮助开发者根据项目需求选择合适的框架,或组合使用发挥各自优势。

bugyinyin的博客 846

LangGraph实战:构建有状态多步骤AI智能体的核心架构与工程实践

在AI应用开发领域,智能体(Agent)已成为连接大语言模型与复杂业务逻辑的关键技术范式。其核心原理在于通过规划、决策与工具调用,使AI系统能够自主执行多步骤任务,从而突破单一问答的局限,实现自动化工作流。这一技术的核心价值在于将大模型的认知能力与外部工具、数据源相结合,构建出具备记忆、推理与执行能力的智能系统。典型的应用场景包括自动化客服、数据分析流水线、研究助手等需要状态管理与动态决策的复杂任务。本文聚焦于LangGraph框架,它通过图(Graph)结构清晰定义智能体的工作流,有效解决了传统promp

weixin_30460489的博客 525

【强烈推荐】LangGraph实战:构建结构化大模型Agent的系统化指南(收藏必学)

本文详细介绍了LangGraph框架的核心概念和设计理念,讲解如何通过节点、边和条件边构建结构清晰的大模型Agent。从环境准备、工具封装到AgentState定义、节点创建和条件边设置,提供了完整的代码实现和实战案例。通过与传统手写Agent的对比,展示了LangGraph在构建多轮智能体流程中的显著优势,帮助读者掌握高效构建复杂智能体系统的能力。

2401_85325726的博客 683
上一篇: 收藏必备!一文读懂MCP协议:大模型与外部数据源的完美桥梁
下一篇: 收藏!程序员转型大模型:不是从零开始,而是降维升级
冻感糕人~
博客等级 码龄3年 8926粉丝 2384原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值