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。

相关推荐
Pniubi14 分钟前
A2A协议
agent
jerrywus21 分钟前
我用 GPT-6.1-sol 做了台会讲解的 3D 售货机:60 罐饮料,一口没喝上
前端·agent·claude
阿里云大数据AI技术1 小时前
MaxAgent 实战课堂(一):从开通到第一次有效提问
人工智能·agent
GoGeekBaird2 小时前
别再给每个 AI 做自我介绍了:我做了一个「个人上下文」管理系统
后端·github·agent
.Bryce.2 小时前
从零到一开发技术名词大全:从需求分析到 AI Agent 工程
java·网络·人工智能·agent·需求分析·agent评测
小七-七牛开发者3 小时前
Coding Agent 推理性能优化:Decode、KV Cache 与多 Session 调度
ai·agent·kvcache·ai coding·speculativedecoding
GISer_Jing4 小时前
SuperAgent
ai·langchain
程序员柒叔4 小时前
Diagram Design 解构:45 种图型如何用语义路由与 SVG 质量门交付
人工智能·github·agent·skills
YYYing.4 小时前
【Agent系列 (十一) 】上下文工程
人工智能·python·ai·agent·上下文工程
前端精髓5 小时前
langchain 短期记忆(状态)动态运行时上下文
python·langchain