LangGraph实战教程(1)- 从零开始认识LangGraph

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

langGraph介绍

LangGraph 是一个由 LangChain 团队开发的库,用于构建复杂、有状态的应用程序,特别是那些需要循环和条件控制的 AI 工作流。它扩展了 LangChain 的核心功能,提供了更灵活的图形化编程模型。

核心概念

1.状态图(StateGraph): LangGraph 的核心数据结构,表示应用程序的不同状态和它们之间的转换。

2.节点(Nodes): 执行特定功能的函数,可以是:

  • 工具调用
  • 语言模型调用
  • 自定义函数

3.边(Edges): 定义节点之间的条件转换路径。

主要优势

  1. 可靠性和可控性。通过适度检查和人在循环审批来引导智能体操作。LangGraph为长时间运行的工作流持久化上下文,使智能体保持在正确的方向上。
  2. 低级和可扩展。使用完全描述性的低级原语构建自定义智能体,而不受限制自定义的严格抽象的影响。设计可伸缩的多智能体系统,每个智能体都为您的用例定制一个特定的角色。
  3. 优秀的流输出支持。通过逐个令牌的流和中间步骤的流,LangGraph为用户提供了对智能体的清晰可见性

使用langGraph搭建聊天机器人

python 复制代码
from typing import Annotated
from langchain_openai import ChatOpenAI
from typing_extensions import TypedDict
from langgraph.graph import StateGraph,START,END
from langgraph.graph.message import add_messages
from dotenv import load_dotenv
load_dotenv()
# 第一步: 创建StateGraph对象,StateGraph对象定义聊天机器人的消息状态结构,相当于上下文
class State(TypedDict):
messages: Annotated[list, add_messages]
graph_builder = StateGraph(State)
# 大模型api,这里主要使用阿里百炼的api,使用openAI的客户端进行调用,故需要在环境变量配置OPENAI_API_KEY=百炼key
llm = ChatOpenAI(model="qwen-max-latest", base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
def chatbot(state: State):
return {"messages": [llm.invoke(state["messages"])]}
# 第二步: 添加node节点
graph_builder.add_node("chatbot", chatbot)
# 第三步:定义流程入口和连线
graph_builder.add_edge(START, "chatbot")
graph_builder.add_edge("chatbot", END
# 第四步:编译graph
graph = graph_builder.compile()
# from IPython.display import Image, display
# 第五步:显示可视化图形
# try:
#     display(Image(graph.get_graph().draw_mermaid_png()))
# except Exception:
#     # This requires some extra dependencies and is optional
#     print("Mermaid graph visualization requires some extra dependencies.")
#     print("Please install the optional dependency `mermaid` to see the graph.")
# 第六步:执行流程
def stream_graph_updates(user_input: str):
for event in graph.stream({"messages": [{"role": "user", "content": user_input}]}):
for value in event.values():
print("Assistant:", value["messages"][-1].content)
while True:
try:
user_input = input("User: ")
if user_input.lower() in ["quit", "exit", "q"]:
print("Goodbye!")
break
stream_graph_updates(user_input)
except:
# fallback if input() is not available
user_input = "What do you know about LangGraph?"
print("User: " + user_input)
stream_graph_updates(user_input)
break

使用langGraph快速搭建一个langGraph流程主要有以下步骤:

第一步: 创建StateGraph对象,StateGraph对象定义聊天机器人的消息状态结构,相当于上下文

第二步: 添加node节点

第三步:定义流程入口和连线

第五步:显示可视化图形(可选)

这里编译后流程图形如下:

第六步:执行流程

vbnet 复制代码
User: hi
Assistant: Hello! How can I assist you today? 😊
User: what is langGraph?
Assistant: **LangGraph** is a framework designed to simplify the creation and management of complex, stateful applications that involve large language models (LLMs). It builds on top of **LangChain**, a popular library for working with LLMs, and extends its capabilities by introducing **state management**, **multi-agent workflows**, and **graph-based execution**. LangGraph allows developers to build more sophisticated, multi-step workflows where multiple agents or components interact in a coordinated manner.

LangGraph 和 LangChain 的区别

1. 核心设计理念

LangChain:

基于"链"(Chain)的概念构建

主要采用线性执行流程

设计用于顺序的、无状态的AI应用

LangGraph:

基于"图"(Graph)的概念构建

支持复杂的、有状态的工作流

专门设计用于需要循环和条件分支的应用

2. 执行模型

LangChain:

线性执行:A → B → C

有限的循环能力(需要额外配置)

主要通过SequentialChain实现简单流程

LangGraph:

图结构执行:支持任意拓扑

原生支持循环和条件分支

可以表示更复杂的控制流

3. 状态管理

LangChain:

主要是无状态的

信息通过链传递

需要显式管理中间结果

LangGraph:

内置状态管理

自动维护和更新状态对象

简化了多步骤交互中的状态跟踪

4. 适用场景

LangChain 更适合:

简单的问答系统

文档处理流水线

不需要复杂控制流的应用

LangGraph 更适合:

自主代理(Autonomous Agents)

多轮对话系统

需要反馈循环的应用

复杂决策系统

声明:本文的示例代码基于langGraph官网样例进行修改

学习资源推荐

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

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

相关推荐
Darling噜啦啦2 小时前
LLM 无状态本质与上下文工程:从 Prompt 到 Context 的进化——为什么 AI 总是"失忆"?
llm
星始流年2 小时前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
凌奕2 小时前
让你的 AI 编程助手「偷懒」:50k Star 的 Ponytail,让 Agent 少写一半代码
chatgpt·agent·claude
大模型真好玩2 小时前
什么是Loop Engineering?最通俗易懂的Loop Engineering核心概念
人工智能·agent·deepseek
智泊AI2 小时前
AI大模型到底是怎么训练出来的?完整预训练过程一次性讲明白!
llm
顾林海3 小时前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
阿祖zu3 小时前
优雅写作:开源两个我的文章写作 Skill
程序员·openai·agent
leeyi6 小时前
Deer-Go:字节 Deer-Flow 的 Go 移植,深度研究 Agent 全拆解
go·aigc·agent
米小虾7 小时前
Agent Skill 设计模式完全指南
人工智能·agent
米小虾8 小时前
Agent Skill 规范与 Skill-Creator 核心思想
人工智能·agent