为什么选择LangGraph?一篇就够了,程序员必学收藏

为什么选择 LangGraph?

在 AI 世界中,检索增强生成(RAG)系统已广泛用于处理简单查询,生成上下文相关回答。

但随着 AI 应用复杂度不断提升,我们迫切需要一种能执行多步推理、保持状态和具备动态决策能力的智能体系统

这正是 LangGraph 登场的舞台:

💡LangGraph 是 LangChain 的高级扩展,支持具备状态管理与循环控制能力的多角色智能体。

✨ LangGraph 的核心优势

LangGraph 通过无缝管理图结构、状态和智能体协作,重新定义了 AI 应用的开发方式:

LangGraph 的结构概念图(包括节点、状态与边的关系)

✅ 功能亮点:

状态自动管理:跨轮对话中持续保留上下文•多工具调度协调:多角色、多工具之间高效协作•循环计算能力:支持反复推理与修正•灵活+可扩展+稳定:适用于原型验证到企业部署

🔨 项目目标示例

我们将通过一个实战案例来构建智能体:

💬根据用户每月电费计算太阳能节省效果的 AI 助手

📌 应用场景:

•可部署在太阳能销售网站上•与访客互动、收集数据、给出节省建议•同时辅助销售线索筛选,实现业务转化

🧱 开发步骤详解

🚦 第 1 步:导入必要的库

from langchain_core.tools import toolfrom langchain_community.tools.tavily_search importTavilySearchResultsfrom langchain_core.prompts importChatPromptTemplatefrom langchain_core.runnables importRunnablefrom langchain_aws importChatBedrockimport boto3from typing importAnnotatedfrom typing_extensions importTypedDictfrom langgraph.graph.message importAnyMessage, add_messagesfrom langchain_core.messages importToolMessagefrom langchain_core.runnables importRunnableLambdafrom langgraph.prebuilt importToolNode, tools_condition

🧮 第 2 步:定义节能计算工具

@tooldef 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# 每度电(千瓦时)价格(美元) cost_per_watt =1.50# 每瓦安装成本(美元) sunlight_hours_per_day =3.5# 平均每日日照时长(小时) panel_wattage =350# 单块太阳能板功率(瓦) system_lifetime_years =10# 系统使用年限 # 用户每月用电量(kWh) monthly_consumption_kWh = monthly_cost / cost_per_kWh # 系统所需功率(千瓦) daily_energy_production = monthly_consumption_kWh /30 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 # 年节省金额与10年净收益 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)
📈 工具返回结果:

•所需太阳能板数量•安装成本估算•十年期净节省金额

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

处理工具执行异常
def handle_tool_error(state)-> dict:"""工具执行出错时的错误处理函数。 参数: state (dict):当前 AI 智能体的状态,包含消息内容和工具调用信息。 返回: dict:包含每个出错工具对应错误消息的字典。"""# 从状态中提取错误信息 error = state.get("error") # 获取最近一条消息中的工具调用记录 tool_calls = state["messages"][-1].tool_calls # 返回包含错误提示的 ToolMessage 列表,每个消息关联一个 tool_call_idreturn{"messages":[ToolMessage( content=f"Error: {repr(error)}\n 请修复错误。", tool_call_id=tc["id"],)for tc in tool_calls]}
创建带回退机制的工具节点
def create_tool_node_with_fallback(tools: list)-> dict:"""创建包含错误回退机制的工具节点。 参数: tools (list):要包含在节点中的工具列表。 返回: dict:一个支持错误处理回退的工具节点。"""returnToolNode(tools).with_fallbacks([RunnableLambda(handle_tool_error)], exception_key="error")

🧠 第 4 步:定义状态结构与助手类

状态结构State

classState(TypedDict): messages:Annotated[list[AnyMessage], add_messages]

助手类Assistant

classAssistant:def __init__(self, runnable:Runnable):# 初始化,接收定义好流程的 runnable 对象self.runnable = runnable def __call__(self, state:State):whileTrue:# 使用当前状态调用 runnable result =self.runnable.invoke(state) # 如果没有工具调用结果,或者内容为空,则重新请求有效输出ifnot result.tool_calls and(not result.contentor isinstance(result.content, list)andnot result.content[0].get("text")): messages = state["messages"]+[("user","请返回有效输出。")] state ={**state,"messages": messages}else:break# 成功获取有效结果,退出循环 # 返回最终消息状态return{"messages": result}

🧱 第 5 步:使用 AWS Bedrock 配置 LLM

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'))

✅ 确保你已设置 AWS 凭证,否则助手无法访问 Bedrock 模型。

🧭 第 6 步:定义助手工作流程

话提示模板

primary_assistant_prompt =ChatPromptTemplate.from_messages([("system",'''你是 Solar Panels Belgium 的客户支持助手。你需要向用户获取以下信息:-每月电费支出 如果无法识别,请请求用户澄清,切勿胡乱猜测。收集完毕后,请调用相应工具。'''),("placeholder","{messages}"),])

工具绑定与执行流定义

# 定义助手会使用的工具part_1_tools =[ compute_savings] # 将工具绑定到助手的工作流程中part_1_assistant_runnable = primary_assistant_prompt | llm.bind_tools(part_1_tools)

🔄 第 7 步:构建 LangGraph 图结构

在这一步中,我们使用LangGraph来构建 AI 助手的图结构,控制它如何处理用户输入、调用工具并在不同阶段之间流转。

builder =StateGraph(State)builder.add_node("assistant",Assistant(part_1_assistant_runnable))builder.add_node("tools", create_tool_node_with_fallback(part_1_tools)) builder.add_edge(START,"assistant")# 从助手开始builder.add_conditional_edges("assistant", tools_condition)# 根据输入跳转到工具builder.add_edge("tools","assistant")# 工具执行后返回助手 memory =MemorySaver()graph = builder.compile(checkpointer=memory)

▶️ 第 8 步:运行 AI 助手

import uuid # 示例用户问题列表tutorial_questions =['hey','can you calculate my energy saving',"my montly cost is $100, what will i save"] # 创建唯一线程 ID,用于会话追踪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)

✅ 总结

通过以上 8 个步骤,你成功构建了一个支持多轮交互、状态记忆、错误处理与工具调度的智能太阳能节能助手

🎯 LangGraph 的价值体现在:

•高度模块化与逻辑清晰的图式结构•灵活调用工具,响应用户个性化需求•支持真实业务场景(如能源、客服、营销)部署

💡 不论是构建客服智能体、节能顾问,还是更复杂的 AI 应用,LangGraph 都为你提供强大的基础设施和开发范式。

普通人如何抓住AI大模型的风口?

领取方式在文末

为什么要学习大模型?

目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。

随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:

人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!

最后

只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!

在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】

大模型全套学习资料展示

自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!

01教学内容

  • 从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!

  • 大量真实项目案例:带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!

02适学人群

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

vx扫描下方二维码即可
【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】

本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!

03入门到进阶学习路线图

大模型学习路线图,整体分为5个大的阶段:

04视频和书籍PDF合集

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)

05行业报告+白皮书合集

收集70+报告与白皮书,了解行业最新动态!

0690+份面试题/经验

AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)

07 deepseek部署包+技巧大全

由于篇幅有限

只展示部分资料

并且还在持续更新中…

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1199452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决显存不足难题,Unsloth高效微调实践

解决显存不足难题,Unsloth高效微调实践 在大模型时代,显存不足成了许多开发者和研究者面前的一道“拦路虎”。尤其是当我们想要对像 Llama3、Qwen 这样的 8B 级别大模型进行微调时,动辄几十 GB 的显存需求让人望而却步。有没有一种方法&…

盘点好用的精密背心袋制袋机,瑞安市天晟包装机械受青睐

在包装机械行业加速智能化、柔性化转型的当下,一台性能稳定、适配多元需求的背心袋制袋机,是食品商超、日化零售、电商快递等领域企业提升包装效率的核心装备。面对市场上功能各异、品质参差的背心袋制袋机品牌厂家,…

MinerU教育场景应用:试卷数字化系统搭建案例

MinerU教育场景应用:试卷数字化系统搭建案例 在教育信息化推进过程中,大量纸质试卷、历年真题、模拟考卷亟需转化为结构化数字资源。但传统OCR工具面对多栏排版、手写批注、复杂公式、嵌入图表的试卷时,常常出现文字错位、公式丢失、表格断裂…

YOLOv9推理精度下降?权重加载与输入尺寸调优指南

YOLOv9推理精度下降?权重加载与输入尺寸调优指南 你是不是也遇到过这种情况:刚部署完YOLOv9模型,信心满满地跑起推理,结果发现检测框不准、漏检严重,甚至一些明显目标都识别不出来?别急,这很可…

2026年塑料袋制袋机实力供应商推荐,选哪家更靠谱

2026年包装产业加速向智能化、柔性化转型,塑料袋制袋机、背心袋制袋机等设备的品质与适配性,直接决定下游食品、日化、电商等行业的包装效率与成本控制。当前市场中,制袋机制造厂数量众多,但多数企业仅能提供单一设…

2026年尼康相机存储卡推荐:影像存储趋势排名,涵盖高速读写与数据安全痛点

研究概述 在数码影像创作日益普及与专业化的今天,存储卡已不再是简单的数据容器,而是直接影响拍摄体验、工作流效率乃至作品安全的关键组件。对于尼康相机用户而言,面对从入门APS-C到旗舰无反的多样化机型,以及从静…

Z-Image-Turbo自动清除记录功能,隐私保护再升级

Z-Image-Turbo自动清除记录功能,隐私保护再升级 你是否担心AI生成的图片会留下痕迹?尤其是在处理敏感内容时,比如设计草图、内部宣传素材,甚至是一些私人创作,不希望被他人看到历史记录?现在,Z…

聊聊高速制袋机供应商,哪家性价比更高?

2026年包装产业智能化转型加速,全自动制袋机、高速制袋机的性能与适配性直接决定下游企业的生产效率与成本控制能力,而制袋机制造厂的合作案例丰富度则是其技术实力与市场认可度的核心证明。无论是食品饮料行业对包装…

揭秘IntelliJ IDEA启动失败真相:如何快速修复“Command line is too long“问题

第一章:揭秘IntelliJ IDEA启动失败的根源 IntelliJ IDEA 作为 Java 开发领域的旗舰级 IDE,其稳定性广受认可。然而在实际使用中,部分用户仍会遭遇启动失败的问题。这类问题往往并非由单一因素引起,而是多种潜在原因交织所致。深入…

NewBie-image-Exp0.1创意应用:基于n>miku的二次元角色生成案例

NewBie-image-Exp0.1创意应用:基于n>miku的二次元角色生成案例 1. 引言:开启你的二次元创作之旅 你是否曾幻想过,只需输入几行描述,就能让一个活灵活现的二次元角色跃然于屏幕之上?现在,这一切不再是梦…

亲测CAM++说话人验证效果,两段语音是否同一人一试便知

亲测CAM说话人验证效果,两段语音是否同一人一试便知 1. 上手前的期待:声纹识别真的靠谱吗? 你有没有过这样的经历?接到一个电话,对方声音有点熟,但又不敢确定是不是认识的人。如果有个工具能告诉你“这确…

开源大模型趋势一文详解:NewBie-image-Exp0.1引领动漫生成新范式

开源大模型趋势一文详解:NewBie-image-Exp0.1引领动漫生成新范式 1. NewBie-image-Exp0.1:开启高质量动漫生成的新篇章 在当前AI图像生成技术飞速发展的背景下,专注于特定风格的垂直领域大模型正逐渐成为主流。NewBie-image-Exp0.1 就是其中…

cv_unet_image-matting实战案例:社交媒体头像自动生成平台搭建步骤

cv_unet_image-matting实战案例:社交媒体头像自动生成平台搭建步骤 1. 项目背景与目标 你有没有遇到过这种情况:想换个社交平台头像,但手头的照片背景太乱,修图又麻烦?现在,借助AI图像抠图技术&#xff0…

Python反向遍历的4种写法,第3种连老手都容易出错,

第一章:Python反向循环遍历列表的几种方式在Python开发中,反向遍历列表是常见需求,例如删除满足条件的元素、构建逆序结果或实现栈式处理逻辑。由于直接使用 for item in reversed(list) 或索引递减方式存在语义差异与性能权衡,需…

FSMN-VAD与GPT-4联动,构建智能语音系统

FSMN-VAD与GPT-4联动,构建智能语音系统 在智能语音技术快速发展的今天,如何高效地从音频流中提取有效信息成为关键挑战。传统的语音处理流程往往将语音活动检测(VAD)、语音识别(ASR)和语义理解割裂开来&am…

Llama3-8B日志分析实战:运维助手搭建详细步骤

Llama3-8B日志分析实战:运维助手搭建详细步骤 1. 引言:为什么需要一个AI驱动的运维助手? 在现代IT运维场景中,系统日志每天产生海量数据。从Nginx访问日志到Kubernetes容器日志,再到数据库慢查询记录,这些…

旧设备兼容性如何?WEBP格式支持情况说明

旧设备兼容性如何?WEBP格式支持情况说明 1. 背景与问题引入 你有没有遇到过这种情况:辛辛苦苦生成了一张高清卡通人像,结果发给朋友却打不开?或者在老款手机、公司电脑上查看图片时一片空白?这很可能不是你的操作问题…

YOLOv9 tqdm进度条显示:训练过程实时监控技巧

YOLOv9 tqdm进度条显示:训练过程实时监控技巧 你有没有在跑YOLOv9训练时,盯着终端发呆,心里直打鼓:“这到底跑完没有?”“还剩多少轮?”“卡在哪儿了?”——别担心,这不是你的错&am…

【Arthas实战调优指南】:掌握JVM性能分析的10个核心命令

第一章:Arthas入门与环境搭建 Arthas 是阿里巴巴开源的一款 Java 诊断工具,能够在不重启 JVM 的前提下,实时监控、诊断和排查生产环境中的 Java 应用问题。它提供了丰富的命令集,支持类加载、方法调用追踪、线程状态分析等功能&am…

【Java 8 Stream排序进阶指南】:掌握多字段排序的5种高效写法

第一章:Java 8 Stream排序核心机制解析 Java 8 引入的 Stream API 极大地简化了集合数据的操作,其中排序功能通过 sorted() 方法实现,支持自然排序和自定义排序。该方法基于惰性求值机制,在终端操作触发前不会执行实际排序&#…