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

相关推荐
神秘的猪头2 小时前
🚀 拒绝“一本正经胡说八道”!手把手带你用 LangChain 实现 RAG,打造你的专属 AI 知识库
langchain·llm·openai
栀秋6663 小时前
重塑 AI 交互边界:基于 LangChain 与 MCP 协议的全栈实践
langchain·llm·mcp
潘锦3 小时前
RAG 优化常用的 5 种策略
agent
大模型真好玩4 小时前
LangChain DeepAgents 速通指南(三)—— 让Agent告别混乱:Tool Selector与Todo List中间件解析
人工智能·langchain·trae
HelloGitHub4 小时前
这个年轻的开源项目,想让每个人都能拥有自己的专业级 AI 智能体
开源·github·agent
Kagol15 小时前
🎉OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用!
前端·开源·agent
李剑一17 小时前
你以为OpenClaw在帮你赚钱?其实它是在赚你的钱
openai·agent
canonical_entropy17 小时前
AI Agent 的演进之路:从对话到自主代理操作系统
低代码·aigc·agent
EdisonZhou18 小时前
MAF快速入门(18)Agent Skill 快速开始
llm·aigc·agent
肥晨19 小时前
智能体(Agent)全面解析:什么是智能体agent
agent