LangGraph的底层原理
- 一、速了解LangGraph
- 二、 LangGraph到底是干什么的?
- 三、快速体验LangChain与LangGraph
- 3.1. 代码对比 (基础)
- 3.2. 代码对比 (添加工具)
- 总结
一、速了解LangGraph
LangGraph是一个功能非常强大的大语言模型本地应用构建框架。不只是包含
了各种基于大语言模型构建本地应用的工具,更重要的是,他积累了非常多使用大语言模型构建本地应用构建经验,并且将这些经验总结成了非常多的案例,让大家可以直接使用。
但是,LangGraph并不是一个独立的框架,他是LangChain框架的一个生态组。
LangChain的基础的,并且最好是看过我之前分享的LangChain视频。所以,如果脱离LangChain来介绍LangGraph,那纯粹是耍流氓。
件。因此后面的内容,是预设大家有LangChain的基础的,并且最好是看过我之前分享的LangChain视频。
目标:
- 理解LangGraph与LangChain
- 理解Agent智能体.
- 理解智能体编排
- 如何部署LangChain应用
核心概念
- Agent(智能体):在 LangChain/LangGraph 语境中,Agent 是一个能够感知环境、进行决策并执行动作(如调用工具、查询数据)的软件实体。它通常由一个大语言模型(LLM)驱动,能够理解用户意图、规划步骤并自主完成任务。
- 智能体编排:指对多个 Agent 或单个 Agent 内部不同步骤(思考、行动、观察)进行协调与调度的过程。LangGraph 的核心能力就是通过图(Graph)结构来定义和运行这种编排逻辑,确保任务按照预定流程高效、可靠地执行。
二、 LangGraph到底是干什么的?
LangChain,官网地址: 链接 。一个用于开发由大语言模型LLM提供支持的应用程序的框架。简单来说,就是一个用LLM快速构建本地的框架。使用的版本是V0.3。后续内容也以这个版本为准。
在LangChain中,除了LangChain外,还有LangGraph、LangSmith等一系列的生态组件。
三、快速体验LangChain与LangGraph
LangGraph和LangChain都是用于构建和管理大型语言模型应用的工具,它们都提供了一种简单易用的方式来构建和管理复杂的应用程序。只不过,LangChain更关注于应用程序的流程,而LangGraph更关注于如何处理特定的任务。
关于LangGraph的细节,在后溪章节中会详细介绍。这里,我们先用最简单直[白的方式来对比一下LangChain和LangGraph在和大语言模型做交互时的基础思想有什么区别。
要使用LangGraph,首先需要安装LangGraph的依赖库
pip install langgraph # 后面的案例中会用到langchain,所以同时也安装下langchain的依赖 pip install langchain pip install langchain_community3.1. 代码对比 (基础)
LangChain
import# 制定OpenAI的API_KEY。ifnotos.environ.get("OPENAI_API_KEY"):os.environ["OPENAI_API_KEY"]=load_key("OPENAI_API_KEY")fromlangchain.chat_modelsimportinit_chat_model#创建访问OpenAI的Model.# model = init_chat_model("gpt-4o-mini",model_provider="openai")#openai在国内是无法直接访问的,需要科学上网。这里指定base_Url是因为使用的是openai的国内代理,2233.ai。model = init_chat model( "gpt-4o-mini",model _provider="openai",base _Url="https://api.gptsapi.net/v1")model.invoke("你是谁?能帮我解决什么问题?")LangGraph
fromlanggraph.prebuiltimportcreate_react_agent agent=create_react_agent(model=model,tools=[],prompt="You are a helpful assistant"agent.invoke({"messages":[{"role":"user","content":"你是谁?能帮我解决什么问题?"}]})3.2. 代码对比 (添加工具)
LangChain
# 定义工具 注意要添加注释@tooldefget_current_date():""获取今天日期"."returndatetime.datetime.today().strftime("%Y-%m-%d")#大模型绑定工具llm_with_tools=llm.bind_tools([get_current_date])#工具容器all_tools={"get_current_date":get_current_date}#把所有消息存到一起query="今天是几月几号"messages=[query]#询问大模型。大模型会判断需要调用工具,并返回一个工具调用请求ai_msg = llm_with_tools.invoke(messages)ai_msgprint(ai_msg)messages.append(ai_msg)#打印需要调用的工具Xm_witiprint(ai_msg.tool_calls)ifai_msg.tool_calls:fortool_callinai_msg.tool_calls:selected_tool=all_tools[tool_call["name"].lower()]tool_msg=selected_tool.invoke(tool_call)messages.append(tool_msg)llm_with_tools.invoke(messages).contentLangGraph
fromlanggraph.prebuiltimportcreate_react_agent agent=create_react_agent(model=llm,tools=[get_current_date],prompt="You are a helpful assistant",agent.invoke({"messages":[{"role":"user","content":"今天是几月几号"}]})总结
通过以上两个简单的代码对比,我们可以直观地感受到 LangGraph 与 LangChain 在设计哲学上的差异:
LangChain更像一个流程编排器。它提供了丰富的组件(如模型、工具、记忆、链等),并允许你通过链(Chain)的方式将它们串联起来,构建复杂的应用工作流。开发者需要显式地定义每一步的输入、输出和连接关系,控制权较高,适合构建结构清晰、步骤固定的应用。
LangGraph则是一个智能体(Agent)运行时与编排框架。它的核心是“图”(Graph),用于定义智能体的状态和决策节点(如思考、执行工具、观察结果)。
create_react_agent这样的预构建智能体封装了 ReAct(推理+行动)等经典模式,开发者只需提供模型和工具,LangGraph 会自动管理智能体的推理循环、状态转移和工具调用。这大大简化了构建自主决策型 Agent 的复杂度。
简单来说,LangChain 帮你组装流水线,LangGraph 帮你驱动一个会自己思考的智能体。在后续章节中,我们将深入 LangGraph 的图结构、状态管理和更复杂的多智能体编排场景。