怎么用 LangGraph 创建属于你自己的 AI 智能体

📅 发布时间:2026/7/11 3:16:16 👁️ 浏览次数:
怎么用 LangGraph 创建属于你自己的 AI 智能体
在 AI 领域检索增强生成RAG系统已成为处理简单查询、生成上下文相关回答的常见工具。然而随着对更复杂 AI 应用的需求增长我们需要超越仅“检索生成”的能力。于是出现了AI 智能体Agents——它们能执行复杂的多步任务、在多轮交互中维护状态并能动态适应新信息。LangGraph是 LangChain 的强力扩展专为帮助开发者构建这类高级 AI 智能体而设计。它支持有状态stateful、多角色multi-actor、可循环计算cyclic computation的应用让智能体在执行中不断“感知—决策—行动—反思—再行动”。本文将介绍 LangGraph 如何改变 AI 开发方式并通过一个太阳能板节能计算示例手把手展示如何构建你自己的 AI 智能体。你将看到 LangGraph 的特性如何让系统更智能、更可适应、更贴近真实场景。什么是 LangGraphLangGraph是构建在LangChain之上的高级库用于为大模型应用引入循环计算能力。•在LangChain中你通常构建有向无环图DAG来描述线性流程•LangGraph则更进一步它支持循环cycles这对实现复杂、类似智能体的行为至关重要——模型可以在流程中反复迭代根据不断变化的条件动态决定下一步动作。LangGraph 的节点、状态与边LangGraph 的核心概念有状态图Stateful Graph•State状态表示在计算推进过程中被持续维护与更新的上下文/记忆。它确保每一步都能访问之前步骤的相关信息从而基于累计数据进行动态决策。•Nodes节点工作流的基本构件代表某个计算步骤或函数。每个节点执行特定任务如处理输入、做出决策、调用外部系统等节点可自定义以满足多种操作需求。•Edges边连接节点、定义计算从一步到下一步的流向 支持条件逻辑可根据当前状态改变执行路径负责数据与控制在节点间的传递从而实现复杂的多步流程。为什么选择 LangGraphLangGraph 通过对图结构、状态与协调的无缝管理重塑了 AI 应用的开发方式•自动状态管理在多轮交互中保留上下文让 AI 能对变化的输入做出更聪明的响应•精简的智能体协调保障精确执行与高效信息交换开发者可以把精力放在设计创新工作流上•极高的灵活性支持打造定制化、高性能应用•可扩展与容错即便在企业级场景下也能保持系统稳健与可靠。接下来你将学到什么•如何用 LangGraph搭建有状态、可循环的智能体流程•如何让智能体分步规划—执行—评估—再规划•以“太阳能板节能计算”为例如何将 LangGraph 的特性落地构建智能、可适应且可生产的 AI 系统。分步指南在了解了LangGraph的核心概念与优势之后下面通过一个可落地的实战示例来动手实现我们将构建一个用于根据用户输入计算太阳能板潜在节能收益的 AI 智能体。该智能体可作为光伏销售网站上的潜在客户收集lead generation工具与访客交互、给出个性化节省估算。通过收集诸如每月电费等关键数据智能体既能帮助用户理解光伏的经济价值也能为销售团队筛选高意向线索。此示例将展示 LangGraph 如何打造智能、动态的系统实现复杂任务自动化并创造业务价值。第 1 步导入必要库首先导入项目所需的 Python 库与模块。这些依赖为我们使用LangChain、LangGraph以及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_callsLangChain/LangGraph 产生 tool_calls state[messages][-1].tool_calls # 针对每一个 tool call生成一条带有错误详情的 ToolMessage并与其 id 关联 return{ messages:[ ToolMessage( contentfError: {repr(error)}\n please fix your mistakes., tool_call_idtc[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_keyerror# 指定捕获异常的键 )这些函数可确保在工具执行过程中一旦出现错误系统能优雅降级并向用户提供有用的反馈。第 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_messagesLangGraph 的 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_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN可选、AWS_DEFAULT_REGION•使用可被 AWS SDK 访问的credentials 文件通常位于~/.aws/credentials完成凭据与区域设置后即可创建 Bedrock Runtime 客户端并实例化 LangChain 的ChatBedrockimport boto3 from langchain_aws importChatBedrock def get_bedrock_client(region): return boto3.client(bedrock-runtime, region_nameregion) def create_bedrock_llm(client): returnChatBedrock( model_idanthropic.claude-3-sonnet-20240229-v1:0, clientclient, model_kwargs{temperature:0}, region_nameus-east-1 ) llm create_bedrock_llm(get_bedrock_client(regionus-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 持久化图的会话状态Statefrom langgraph.checkpoint.memory importMemorySaver memory MemorySaver() graph builder.compile(checkpointermemory)第 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_modevalues ) foreventin events: _print_event(event, _printed)结论通过以上步骤你已经成功构建了一个基于LangGraph的 AI 助手它能够根据用户输入计算太阳能板节能效益。本教程展示了 LangGraph 在管理复杂的多步骤流程中的强大能力并突出了如何结合先进的 AI 工具来高效解决现实问题。无论是开发用于客户支持、能源管理还是其他应用场景的 AI 智能体LangGraph 都提供了你所需的•灵活性Flexibility可定制复杂工作流•可扩展性Scalability支持从小规模实验到企业级部署•稳健性Robustness保证系统在长时运行与多轮交互中的可靠表现。 借助 LangGraph你可以更快地将 AI 创意转化为实用的智能系统并让它们在真实世界中创造价值。https://medium.com/lorevanoudenhove/how-to-build-ai-agents-with-langgraph-a-step-by-step-guide-5d84d9c7e832想入门 AI 大模型却找不到清晰方向备考大厂 AI 岗还在四处搜集零散资料别再浪费时间啦2025 年AI 大模型全套学习资料已整理完毕从学习路线到面试真题从工具教程到行业报告一站式覆盖你的所有需求现在全部免费分享扫码免费领取全部内容一、学习必备100本大模型电子书26 份行业报告 600 套技术PPT帮你看透 AI 趋势想了解大模型的行业动态、商业落地案例大模型电子书这份资料帮你站在 “行业高度” 学 AI1. 100本大模型方向电子书2. 26 份行业研究报告覆盖多领域实践与趋势报告包含阿里、DeepSeek 等权威机构发布的核心内容涵盖职业趋势《AI 职业趋势报告》《中国 AI 人才粮仓模型解析》商业落地《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》领域细分《AGI 在金融领域的应用报告》《AI GC 实践案例集》行业监测《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。3. 600套技术大会 PPT听行业大咖讲实战PPT 整理自 2024-2025 年热门技术大会包含百度、腾讯、字节等企业的一线实践安全方向《端侧大模型的安全建设》《大模型驱动安全升级腾讯代码安全实践》产品与创新《大模型产品如何创新与创收》《AI 时代的新范式构建 AI 产品》多模态与 Agent《Step-Video 开源模型视频生成进展》《Agentic RAG 的现在与未来》工程落地《从原型到生产AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。二、求职必看大厂 AI 岗面试 “弹药库”300 真题 107 道面经直接抱走想冲字节、腾讯、阿里、蔚来等大厂 AI 岗这份面试资料帮你提前 “押题”拒绝临场慌1. 107 道大厂面经覆盖 Prompt、RAG、大模型应用工程师等热门岗位面经整理自 2021-2025 年真实面试场景包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题每道题都附带思路解析2. 102 道 AI 大模型真题直击大模型核心考点针对大模型专属考题从概念到实践全面覆盖帮你理清底层逻辑3. 97 道 LLMs 真题聚焦大型语言模型高频问题专门拆解 LLMs 的核心痛点与解决方案比如让很多人头疼的 “复读机问题”三、路线必明 AI 大模型学习路线图1 张图理清核心内容刚接触 AI 大模型不知道该从哪学起这份「AI大模型 学习路线图」直接帮你划重点不用再盲目摸索路线图涵盖 5 大核心板块从基础到进阶层层递进一步步带你从入门到进阶从理论到实战。L1阶段:启航篇丨极速破界AI新时代L1阶段了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理、关键技术以及大模型应用场景。L2阶段攻坚篇丨RAG开发实战工坊L2阶段AI大模型RAG应用开发工程主要学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3阶段跃迁篇丨Agent智能体架构设计L3阶段大模型Agent应用架构进阶实现主要学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造Agent智能体。L4阶段精进篇丨模型微调与私有化部署L4阶段大模型的微调和私有化部署更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。L5阶段专题集丨特训篇 【录播课】四、资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容2025 年想抓住 AI 大模型的风口别犹豫这份免费资料就是你的 “起跑线”