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

相关推荐
算家计算3 小时前
Kimi新功能来了,全新Agent模式上线,命名致敬传奇音乐专辑?
人工智能·agent·资讯
OpenTiny社区4 小时前
基于华为云大模型服务MaaS和OpenTiny框架实现商城商品智能化管理
前端·agent·mcp
聚客AI6 小时前
🍇Embedding模型怎么选?一文解决RAG应用中最头疼的难题
人工智能·llm·agent
AI大模型7 小时前
干货分享 | 如何使用Cherry Studio快速上手AI学习实践
程序员·llm·agent
kyle-fang8 小时前
langchain概述
langchain
科技峰行者10 小时前
阿里云无影发布首个Agentic Computer形态的个人计算产品
人工智能·阿里云·ai·agent
刘立军11 小时前
本地大模型编程实战(37)使用知识图谱增强RAG(3)
后端·架构·llm
Baihai_IDP11 小时前
GPU 网络通信基础,Part 1(横向与纵向扩展;训练中的通信环节...)
人工智能·llm·gpu