在人工智能技术落地过程中,检索增强生成(RAG) 系统凭借“检索外部信息+生成精准回答”的模式,已成为应对简单查询、输出上下文关联内容的主流工具,广泛应用于智能客服应答、知识库问答等场景。但随着产业对AI需求的深化,单一的“检索-生成”链路逐渐难以满足复杂场景需求——例如企业供应链优化、多步骤科学计算、个性化教育辅导等任务,不仅需要AI完成多环节操作,还需实时调整策略、记忆交互过程。正是在这一背景下,AI智能体(Agents) 应运而生:它们具备执行多步骤复杂任务的能力,能在多轮交互中持续维护任务状态,并根据新输入的信息动态调整执行路径,成为突破RAG能力边界的关键技术方向。

而要实现这类高级AI智能体的高效开发,LangGraph 作为LangChain生态的核心扩展工具,为开发者提供了关键支撑。它专为构建具备状态记忆(stateful)多角色协作(multi-actor)循环计算(cyclic computation) 能力的应用设计,让AI智能体能够在任务执行中形成“感知环境-分析决策-执行动作-反思结果-优化再行动”的闭环,大幅提升了AI应对复杂场景的能力。

本文将深入解析LangGraph如何改变传统AI应用的开发逻辑,并结合工商业太阳能板节能效益计算这一贴近实际场景的案例,逐步演示构建专属AI智能体的过程。通过案例你会发现,LangGraph的特性不仅能让系统更智能,还能使其更贴合业务场景需求,同时具备更强的动态适应能力,为复杂AI应用开发提供新范式。

一、什么是LangGraph?

LangGraph 并非独立工具,而是构建在 LangChain 基础上的高级开发库,其核心价值在于为大语言模型(LLM)应用赋予循环计算能力——这一能力正是区别于传统线性流程、实现智能体“自主决策迭代”的关键。

要理解LangGraph的定位,可通过与LangChain的核心差异对比:

  • LangChain 中,开发者构建的多为有向无环图(DAG):任务流程是线性的“一步接一步”,例如“接收用户问题→检索相关文档→生成回答”,流程一旦启动便无法根据中间结果回溯或重复某一步骤;
  • LangGraph 突破了“无环”限制:它支持流程中出现循环(cycles),例如在“生成初步回答后,检查是否符合精度要求→若不符合,重新检索补充信息→再次生成回答”,这种循环能力对实现类智能体的复杂行为至关重要——AI可以根据实时变化的条件(如补充的信息、用户的新反馈)动态决定下一步动作,而非机械遵循固定流程。

二、LangGraph的核心概念:有状态图(Stateful Graph)

LangGraph的设计围绕“有状态图”展开,这一结构由状态(State)节点(Nodes)边(Edges) 三大核心组件构成,三者协同实现“记忆-计算-流转”的完整逻辑:

1. 状态(State):智能体的“记忆中枢”

状态是LangGraph中持续被维护与更新的上下文集合,相当于智能体的“短期记忆”。它不仅包含用户输入、中间计算结果,还会记录任务执行进度、历史交互记录等关键信息。例如在太阳能板节能计算任务中,状态会实时存储“用户提供的厂房面积、当地日照时长、已计算出的日均发电量、待补充的设备成本参数”等内容,确保每一步决策都能基于累计数据,避免信息丢失或重复计算。

2. 节点(Nodes):任务流程的“功能单元”

节点是构成工作流的基本操作单元,每个节点对应一项具体任务——可以是“接收并解析用户需求”“调用外部API获取当地电价数据”“基于公式计算节能收益”“判断当前信息是否完整”等。LangGraph支持开发者自定义节点逻辑:既可以直接调用LangChain中的工具(如检索工具、计算工具),也能编写个性化代码(如针对不同地区调整日照系数的算法),灵活适配各类业务场景。

3. 边(Edges):流程流转的“智能导航”

边的作用是连接不同节点,定义计算从一个步骤到下一个步骤的流向规则。与传统线性流程的“固定流向”不同,LangGraph的边支持条件逻辑判断:它会根据当前状态的具体内容,动态选择下一个节点。例如在太阳能板计算中,当节点“检查信息完整性”完成后,边会判断“是否已获取设备寿命参数”——若已获取,则流向“计算总生命周期收益”节点;若未获取,则流向“向用户询问设备寿命”节点,实现流程的灵活分支与回溯。

三、为什么选择LangGraph?

在复杂AI智能体开发中,LangGraph的核心优势在于通过对“图结构、状态、节点协调”的一体化管理,解决了传统开发中的“上下文丢失、流程僵化、多角色协作难”等痛点,具体可概括为四点:

1. 自动状态管理:让AI“记得住”,响应更精准

LangGraph会自动维护全流程的状态数据,无需开发者手动存储或传递上下文——例如在多轮交互中,用户后续补充的“厂房计划使用20年”“希望优先计算并网发电收益”等信息,会自动更新到状态中,AI在后续计算时可直接调用,避免出现“重复询问相同信息”或“忽略关键补充条件”的问题,让响应更贴合用户真实需求。

2. 精简的智能体协调:聚焦创新,降低开发成本

在多角色智能体场景(如“一个智能体负责需求分析、一个负责数据计算、一个负责结果可视化”)中,LangGraph会自动协调各节点的执行顺序与信息交换——开发者无需手动编写“节点间数据传递”“任务优先级判断”的代码,只需定义每个节点的功能与流转规则,即可将精力集中在“优化业务逻辑(如节能计算模型)”“设计用户交互体验”等创新环节,大幅降低开发复杂度。

3. 极高的灵活性:定制化开发,适配复杂场景

无论是“单智能体多步骤任务”(如上文的太阳能板计算),还是“多智能体协作任务”(如“市场分析智能体+产品设计智能体+成本核算智能体”协同完成新品规划),LangGraph都能通过调整“节点数量、边的条件规则、状态存储内容”实现灵活适配。同时,它支持与外部系统(如企业ERP系统、物联网设备数据接口)无缝对接,轻松构建跨平台的复杂AI应用。

4. 可扩展与容错:支撑企业级场景的稳健运行

针对企业级应用的高并发、高可靠性需求,LangGraph具备横向扩展能力——可通过增加节点实例、优化状态存储方式(如对接分布式数据库),应对大量用户同时使用的场景;同时,它内置了“节点执行失败重试”“状态备份与恢复”等容错机制,即便某一节点(如调用外部电价API时网络波动)临时故障,系统也能回溯到上一稳定状态,重新执行流程,保障业务连续运行。

四、分步指南

在了解了 LangGraph 的核心概念与优势之后,下面通过一个可落地的实战示例来动手实现:

我们将构建一个用于根据用户输入计算太阳能板潜在节能收益的 AI 智能体。该智能体可作为光伏销售网站上的潜在客户收集(lead generation)工具,与访客交互、给出个性化节省估算。通过收集诸如每月电费等关键数据,智能体既能帮助用户理解光伏的经济价值,也能为销售团队筛选高意向线索。此示例将展示 LangGraph 如何打造智能、动态的系统,实现复杂任务自动化并创造业务价值

第 1 步:导入必要库

首先,导入项目所需的 Python 库与模块。这些依赖为我们使用 LangChainLangGraph 以及 AWS 服务构建 AI 助手打下基础。

from langchain_core.tools import tool
from langchain_community.tools.tavily_search importTavilySearchResults
from langchain_core.prompts importChatPromptTemplate
from langchain_core.runnables importRunnable
from langchain_aws importChatBedrock
import boto3
from typing importAnnotated
from typing_extensions importTypedDict
from langgraph.graph.message importAnyMessage, add_messages
from langchain_core.messages importToolMessage
from langchain_core.runnables importRunnableLambda
from langgraph.prebuilt importToolNode
from langgraph.prebuilt import tools_condition
第 2 步:定义太阳能节省计算工具

接下来,我们定义一个工具(tool),用于根据用户提供的 月度电费 来估算使用太阳能后可能带来的节省。
这个工具将被智能体调用,以实现 数据驱动的交互


from langchain_core.tools import tool

@tool
def compute_savings(monthly_cost:float)->float:
"""
根据用户的月电费计算切换到太阳能后的潜在节省情况。

参数:
        monthly_cost (float):用户当前的月电费(单位:美元)

返回:
        dict:包含以下估算信息:
-'number_of_panels':所需太阳能板数量
-'installation_cost':预计安装成本
-'net_savings_10_years':扣除安装成本后,10年净节省
"""

def calculate_solar_savings(monthly_cost):
# === 假设参数(可根据实际情况调整) ===
        cost_per_kWh =0.28# 每度电费用(美元/kWh)
        cost_per_watt =1.50# 每瓦太阳能安装费用(美元/W)
        sunlight_hours_per_day =3.5# 平均每日有效日照时长
        panel_wattage =350# 单块太阳能板功率(瓦)
        system_lifetime_years =10# 系统寿命周期(年)

# === 计算过程 ===
# 每月耗电量(千瓦时)
        monthly_consumption_kWh = monthly_cost / cost_per_kWh

# 每日所需发电量(kWh)
        daily_energy_production = monthly_consumption_kWh /30

# 系统总装机容量(kW)
        system_size_kW = daily_energy_production / sunlight_hours_per_day

# 需要的太阳能板数量 & 安装成本
        number_of_panels = system_size_kW *1000/ panel_wattage
        installation_cost = system_size_kW *1000* cost_per_watt

# 年节省与十年净节省
        annual_savings = monthly_cost *12
        total_savings_10_years = annual_savings * system_lifetime_years
        net_savings = total_savings_10_years - installation_cost

return{
"number_of_panels": round(number_of_panels),
"installation_cost": round(installation_cost,2),
"net_savings_10_years": round(net_savings,2)
}

# 返回估算结果
return calculate_solar_savings(monthly_cost)

这段函数会处理用户的月度电费并返回一份太阳能系统收益的详细估算,包括:所需面板数量、安装成本以及 10 年期净节省。为简化演示,计算里使用了若干默认假设(如平均电价、平均日照时长)。在更高级的版本里,可以从用户处收集这些参数,从而更贴合其具体情况地给出个性化估算。

第 3 步:状态管理与错误处理

稳健的 AI 系统离不开有效的状态管理错误处理。下面定义两个实用工具:

handle_tool_error:在工具执行出错时,生成与具体 tool call 关联的错误消息;
create_tool_node_with_fallback:创建带兜底回退能力的工具节点,出错时自动调用错误处理逻辑。


from langchain_core.messages importToolMessage
from langchain_core.runnables importRunnableLambda
from langgraph.prebuilt importToolNode

def handle_tool_error(state)-> dict:
"""
在工具执行过程中处理错误。

参数:
        state (dict):智能体当前状态,包含消息历史与 tool call 信息。

返回:
        dict:包含针对每个出错 tool 的错误消息(ToolMessage)的字典。
"""
# 从状态中取出异常
    error = state.get("error")

# 取出最后一条消息中的 tool_calls(LangChain/LangGraph 产生)
    tool_calls = state["messages"][-1].tool_calls

# 针对每一个 tool call,生成一条带有错误详情的 ToolMessage,并与其 id 关联
return{
"messages":[
ToolMessage(
                content=f"Error: {repr(error)}\n please fix your mistakes.",
                tool_call_id=tc["id"],
)
for tc in tool_calls
]
}

def create_tool_node_with_fallback(tools: list)-> dict:
"""
创建带回退(fallback)机制的Tool节点。

参数:
        tools (list):需要挂载到该节点的工具列表。

返回:
        dict:带错误兜底的工具节点;一旦发生异常,将调用 handle_tool_error。
"""
returnToolNode(tools).with_fallbacks(
[RunnableLambda(handle_tool_error)],# 用 RunnableLambda 包装错误处理函数
        exception_key="error"# 指定捕获异常的键
)

这些函数可确保在工具执行过程中一旦出现错误,系统能优雅降级并向用户提供有用的反馈。

第 4 步:定义 State(状态)与 Assistant 类

在这一步,我们将定义智能体如何管理会话状态(对话的持续上下文),并保证其能正确响应用户输入与工具输出。

为此,先用 Python 的 TypedDict 来定义状态结构 State——它描述在 LangGraph 中节点之间传递的消息格式。状态中会保存整段对话的消息列表,其中既包括用户输入,也包括智能体回复工具输出


from typing importAnnotated
from typing_extensions importTypedDict
from langgraph.graph.message importAnyMessage, add_messages

classState(TypedDict):
# 一个“可累积”的消息列表:
# - AnyMessage:统一抽象,兼容人类消息、AI 消息、工具消息(ToolMessage)等
# - add_messages:LangGraph 的 reducer,用于将新消息追加到状态中
    messages:Annotated[list[AnyMessage], add_messages]

在有了 State 之后,我们需要定义一个 Assistant 类 来驱动智能体的运行。
这个类的职责是:

•执行智能体的主循环;
•调用工具(如 compute_savings);
•管理对话流转(处理用户输入与工具结果);
•兜底错误与无效输出(re-prompt 用户或请求澄清)。

核心逻辑基于一个 Runnable(可运行单元),它定义了调用 LLM 和工具的具体流程。


from langchain_core.runnables importRunnable

classAssistant:
def __init__(self, runnable:Runnable):
"""
初始化Assistant。

参数:
            runnable (Runnable):定义 LLM 与工具交互流程的Runnable对象。
"""
self.runnable = runnable

def __call__(self, state:State):
"""
执行智能体主循环,确保最终返回有效输出。

参数:
            state (State):当前智能体状态,包含消息与上下文。

返回:
            dict:更新后的状态(包含新消息)。
"""
whileTrue:
# 运行当前流程
            result =self.runnable.invoke(state)

# 检查工具是否未返回有效输出
ifnot result.tool_calls and(
not result.content
or isinstance(result.content, list)
andnot result.content[0].get("text")
):
# 请求用户澄清或重试
                messages = state["messages"]+[("user","Respond with a real output.")]
                state ={**state,"messages": messages}
else:
# 一旦得到有效输出,就退出循环
break

# 返回包含新消息的最终状态
return{"messages": result}

这些配置对于维持对话流程并确保助手基于上下文做出恰当响应至关重要。

第 5 步:使用 AWS Bedrock 配置 LLM

本步骤我们为智能体接入 AWS Bedrock 上的 LLM(如 Anthropic Claude),作为语言能力引擎。
要调用 AWS 服务,你必须先正确配置 AWS 凭据,否则无法连接 Bedrock 并运行模型。

常见凭据配置方式包括:

•通过 AWS CLI 登录并写入本地凭据(aws configure
•设置环境变量:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN(可选)、AWS_DEFAULT_REGION
•使用可被 AWS SDK 访问的 credentials 文件(通常位于 ~/.aws/credentials

完成凭据与区域设置后,即可创建 Bedrock Runtime 客户端,并实例化 LangChain 的 ChatBedrock


import boto3
from langchain_aws importChatBedrock

def get_bedrock_client(region):
return boto3.client("bedrock-runtime", region_name=region)

def create_bedrock_llm(client):
returnChatBedrock(
        model_id='anthropic.claude-3-sonnet-20240229-v1:0',
        client=client,
        model_kwargs={'temperature':0},
        region_name='us-east-1'
)

llm = create_bedrock_llm(get_bedrock_client(region='us-east-1'))

这一步的集成保证了助手能够有效理解并响应用户输入

第 6 步:定义 Assistant 的工作流(Workflow)

在配置好 LLM工具 之后,我们需要定义智能体的工作流。 工作流决定了智能体如何:

  • 与用户沟通;
  • 何时收集所需信息(如月度电费);
  • 何时调用工具(如 compute_savings);
  • 如何将结果返回给用户。

核心部分是创建一个提示模板(Prompt Template),明确智能体的身份、对话目标与交互规则。


from langchain_core.prompts importChatPromptTemplate

primary_assistant_prompt =ChatPromptTemplate.from_messages(
[
(
"system",
'''You are a helpful customer support assistant for Solar Panels Belgium.
You should get the following information from them:
- monthly electricity cost
If you are not able to discern this info, ask them to clarify!Donot attempt to wildly guess.

After you are able to discern all the information, call the relevant tool.
''',
),
("placeholder","{messages}"),
]
)
  • system 消息:作为智能体的“行为守则”,引导其向用户询问月度电费,若信息不明确就不要猜测,并持续追问直至收集到必要数据。
  • placeholder:用于动态注入对话历史,让助手能基于上下文持续对话,并让用户的上一轮输入影响下一步动作。

接下来,定义智能体交互中会用到的工具;主要工具是 compute_savings,它会基于用户的月度电费计算潜在节省。将工具列在清单里后,通过 llm.bind_tools() 绑定到助手工作流,使智能体在对话中按需触发工具,实现人与工具的无缝衔接。


# 定义助手在本阶段将使用的工具
part_1_tools =[
    compute_savings
]

# 将工具绑定到助手工作流(Prompt → LLM(已绑定工具))
part_1_assistant_runnable = primary_assistant_prompt | llm.bind_tools(part_1_tools)
第 7 步:构建图结构

本步骤使用 LangGraph 搭建智能体的状态图,控制助手如何处理用户输入、何时触发工具、以及各阶段之间的流转。
图中包含用于核心动作的节点(nodes),以及决定节点间走向的边(edges)

用于计算太阳能节省的 AI 智能体流程图

在 LangGraph 中,每个 节点 代表一个操作步骤(如与用户交互或执行工具)。本示例定义两个关键节点:

  • Assistant 节点:管理对话流程,向用户询问月度电费并处理响应;
  • Tool 节点:执行工具(如 compute_savings)来计算节省结果。

from langgraph.graph importStateGraph

builder =StateGraph(State)

# 1) 助手节点:驱动对话与决策(是否需要调用工具等)
builder.add_node("assistant",Assistant(part_1_assistant_runnable))

# 2) 工具节点:实际执行 compute_savings,并带有错误兜底
builder.add_node("tools", create_tool_node_with_fallback(part_1_tools))

用于定义节点之间的流向。在本例中:

  • 助手(assistant)先发起对话;
  • 当收集到所需输入后,转入工具节点
  • 工具执行完成后,返回助手节点继续对话或收尾。

builder.add_edge(START,"assistant")# 从起点进入 assistant
builder.add_conditional_edges("assistant", tools_condition)# 收到必要输入后转入 tools
builder.add_edge("tools","assistant")# 工具执行结束后回到 assistant

为确保对话在多步交互中能记住上下文,我们使用 MemorySaver 持久化图的会话状态(State):


from langgraph.checkpoint.memory importMemorySaver

memory =MemorySaver()
graph = builder.compile(checkpointer=memory)
第 8 步:运行助手

最后,通过初始化图工作流并开始对话来运行助手。


# import shutil
import uuid

# 构造一个示例对话,模拟用户与助手的交互
tutorial_questions =[
'hey',
'can you calculate my energy saving',
"my montly cost is $100, what will i save"
]

thread_id = str(uuid.uuid4())

config ={
"configurable":{
"thread_id": thread_id,
}
}

_printed =set()
for question in tutorial_questions:
    events = graph.stream(
{"messages":("user", question)}, config, stream_mode="values"
)
foreventin events:
        _print_event(event, _printed)

结论

通过以上步骤,你已经成功构建了一个基于 LangGraph 的 AI 助手,它能够根据用户输入计算太阳能板节能效益

本教程展示了 LangGraph 在管理复杂的多步骤流程中的强大能力,并突出了如何结合先进的 AI 工具来高效解决现实问题

无论是开发用于 客户支持能源管理 还是其他应用场景的 AI 智能体,LangGraph 都提供了你所需的:

  • 灵活性(Flexibility):可定制复杂工作流;
  • 可扩展性(Scalability):支持从小规模实验到企业级部署;
  • 稳健性(Robustness):保证系统在长时运行与多轮交互中的可靠表现。

👉 借助 LangGraph,你可以更快地将 AI 创意转化为实用的智能系统,并让它们在真实世界中创造价值。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套 AI 大模型突围资料包

  • ✅ 从零到一的 AI 学习路径图
  • ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
  • ✅ 百度/阿里专家闭门录播课
  • ✅ 大模型当下最新行业报告
  • ✅ 真实大厂面试真题
  • ✅ 2025 最新岗位需求图谱

所有资料 ⚡️ ,朋友们如果有需要 《AI大模型入门+进阶学习资源包》下方扫码获取~
在这里插入图片描述

① 全套AI大模型应用开发视频教程

(包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点)
在这里插入图片描述

② 大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
在这里插入图片描述

③ 大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
在这里插入图片描述

④ AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
在这里插入图片描述

⑤ 大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
在这里插入图片描述

⑥ 大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余

图片

以上资料如何领取?

在这里插入图片描述

为什么大家都在学大模型?

最近科技巨头英特尔宣布裁员2万人,传统岗位不断缩减,但AI相关技术岗疯狂扩招,有3-5年经验,大厂薪资就能给到50K*20薪!

图片

不出1年,“有AI项目经验”将成为投递简历的门槛。

风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!
在这里插入图片描述
在这里插入图片描述

这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
在这里插入图片描述
在这里插入图片描述

以上全套大模型资料如何领取?

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐