告别机械流水线,让AI拥有自主判断、循环迭代的“思考力”
做AI开发时,你是否也曾陷入这样的困境?想让AI根据不同场景动态决策下一步动作,而非死板地走完固定流程;想让AI能根据执行结果自我调整、反复优化,却苦于没有简洁高效的实现方式?
无论是AI小白刚入门想搭建第一个智能体,还是程序员想优化复杂AI工作流,今天这篇收藏级实战文,带你吃透LangGraph——一款能让AI真正“活”起来的核心工具。
过去两年,我从个人实验项目到客户生产系统,从智能客服自动化到内部流程机器人,所有需要“推理-行动-调整”的AI应用,核心都离不开LangGraph。它不仅降低了复杂智能体的开发门槛,更让流程可调试、可维护,小白也能快速上手落地。
在动手实战前,我们先搞懂核心逻辑:LangGraph到底能解决什么问题,为什么它能让AI拥有“思考力”?
一、LangGraph 核心:让 AI 工作流“活”起来
简单说,LangGraph 是一个专注于为 LLM 应用提供显式控制流的库。
传统的 AI 流水线通常是有向无环图 (DAG):一路向前,永不回头。这能满足许多需求,但当你想要一个能迭代、重新评估、动态决定下一步的系统时,它就力不从心了。
LangGraph 的核心突破在于允许图中存在循环。节点可以被重复访问,决策可以基于结果反复调整。这使得构建能够规划、执行、观察结果并持续运行直至满足停止条件的智能体成为可能。
理解这三个概念,就理解了 LangGraph
状态:智能体的“记忆”
这是一个贯穿整个图的共享数据结构。每个节点都能读取当前状态,并返回更新。它包含了对话历史、决策结果、工具输出等所有需要跨步骤保留的信息。
节点:专注的“行为单元”
每个节点只做一件事:调用 LLM、执行工具、转换数据或做出路由决策。保持节点小巧、专注,能让智能体更易测试和迭代。
边:清晰的“控制流”
边定义了执行如何从一个节点转移到下一个节点。它们编码了代理的控制流,可以是:
- 顺序(始终移动到下一个节点)
- 条件式(根据状态选择下一个节点)
- 循环(返回到上一个节点)
LangGraph 通过显式定义边,使控制流在图中清晰可见,而不是将其隐藏在提示逻辑中。这使得理解代理何时循环、何时分支以及何时终止变得更加容易。
理论说完了,让我们动手。接下来,我们将一步步构建一个基于 Strava 的智能训练教练,看看如何用状态、节点和边,打造一个能根据真实训练数据自动调整计划的 AI 智能体。
二、手把手实战:构建你的 Strava 训练教练
第一步:将目标拆解为清晰步骤
首先,我们要把“自动训练教练”这个大目标,拆解成一个个清晰的、可执行的节点。
想象一下这个智能体的工作流:
- 连接到 Strava 帐户并查看最近的活动(跑步、越野跑等)。
- 了解你的目标(比赛距离/日期、目标配速/完赛目标、海拔变化情况)
- 生成简洁的一周训练计划,并遵守进度上限和减量训练计划。
- 对比计划工作与已完成工作,以发现错过/额外/困难的工时和超负荷风险。
- 当出现风险信号时,调整接下来一周的计划,并解释发生了哪些变化以及原因。
- 如果设置了 SMTP,则通过电子邮件发送计划;如果未设置,则在日志/终端中预览。
这个过程可以清晰地映射为下图中的节点和流向:
graph LR A[开始]-->B[同步 Strava 活动]B -->C[汇总近期训练]C -->D[评估进度 vs 目标]D -->E[生成下周计划]E -->F{推荐策略?}F -- keep/保持 -->G[撰写周报邮件]F -- adjust or deload/调整或减载 -->H[调整计划&添加警告]H -->G G -->I[发送邮件]I -->J[结束]第二步:定义每个节点的职责
每个节点需要什么?产出什么?我们将其分为三类:
- 数据节点:从外部获取信息。如
同步 Strava 活动,它需要 API 密钥,产出近期活动列表。 - LLM 节点:进行分析、推理和生成。如
评估进度 vs 目标,它需要活动汇总和目标,产出状态评估和风险提示。 - 行动节点:与外部世界交互。如
发送邮件,它需要邮件内容和地址,完成发送动作。
第三步:设计共享“状态”(State)
节点之间如何传递信息?靠状态。状态是智能体的共享内存。
对于训练教练,状态需要包含:
- 原始 Strava 活动
- 训练汇总数据
- 用户目标和约束
- 评估结果和风险标识
- 生成的训练计划
- 最终邮件内容
我们用 TypedDict 来定义它,确保结构清晰:
from typingimportTypedDict, Literal, List, Dict class StravaTrainingAgentState(TypedDict): activities: List[Dict]|None# 原始活动数据training_summary: Dict|None# 训练汇总goal: Dict# 用户目标sessions_per_week: int# 每周训练次数约束evaluation: Dict|None# 评估结果next_week_plan: List[Dict]|None# 下周计划weekly_email: str|None# 生成的邮件第四步:用代码实现每个节点
节点就是一个普通的 Python 函数:接收状态,返回要更新的部分。
以最核心的生成下周计划节点为例:
def generate_next_week_plan(state: StravaTrainingAgentState)->dict:"""LangGraph 节点:生成下周训练计划""" llm=LLMService()# 一个封装好的 LLM 调用服务goal=state["goal"]summary=state["training_summary"]sessions=state["sessions_per_week"]recommendation=state["evaluation"]["recommendation"]# 来自上一步的评估# 系统提示词:设定角色和规则system_prompt=""" 你是一名跑步教练。请只返回有效的 JSON 格式: 一个包含以下字段的会话列表:星期几、描述、时长(分钟)、强度。 严格遵守每周训练次数限制。除非是减载周,否则进度增幅不超过10%。"""# 用户提示词:注入具体上下文user_prompt=f""" 目标:{goal}近期训练汇总:{summary}当前建议:{recommendation}每周训练次数:{sessions}"""# 调用 LLM 生成计划plan_json=llm.structured_completion(system_prompt, user_prompt)return{"next_week_plan":json.loads(plan_json)}这个节点完全由状态驱动,职责单一,非常容易测试和优化。
第五步:将节点“组装”成智能体
这是让智能体“活”起来的关键——定义控制流。
from langgraph.graphimportStateGraph, START, END# 1. 创建图graph=StateGraph(StravaTrainingAgentState)# 2. 添加所有节点graph.add_node("sync_strava", sync_strava_activities)graph.add_node("summarize", summarize_recent_training)graph.add_node("evaluate", evaluate_progress_vs_goal)graph.add_node("generate_plan", generate_next_week_plan)graph.add_node("adjust_plan", adjust_plan_add_warnings)graph.add_node("compose_email", compose_weekly_email)graph.add_node("send_email", send_email)# 3. 添加边(定义执行顺序)graph.add_edge(START,"sync_strava")graph.add_edge("sync_strava","summarize")graph.add_edge("summarize","evaluate")graph.add_edge("evaluate","generate_plan")# 4. 关键!添加“条件边”,实现智能路由graph.add_conditional_edges("generate_plan",# 从哪个节点开始分支# 路由函数:根据状态中的“推荐策略”决定下一步lambda state: state["evaluation"]["recommendation"],{"keep":"compose_email",# 若策略为“保持”,直接去写邮件"adjust":"adjust_plan",# 若为“调整”,先去调整计划"deload":"adjust_plan",# 若为“减载”,也去调整计划})graph.add_edge("adjust_plan","compose_email")graph.add_edge("compose_email","send_email")graph.add_edge("send_email", END)# 5. 编译图,获得可执行的应用app=graph.compile()至此,一个具备判断和循环能力的 AI 智能体就构建完成了!运行app,它就会按照你设计的逻辑自动执行。
第六步:运行与部署
在本地测试成功后,你可以轻松地将其自动化。由于它只需每周运行一次,使用GitHub Actions的定时任务(cron job)是简单又免费的绝佳选择。将密钥保存在 GitHub Secrets 中,即可实现全自动每周训练计划生成与发送。
写在最后
这个教程的目的,不是构建最复杂的训练系统,而是展示LangGraph 如何让复杂智能体的构建变得清晰、可维护。
通过“图”的思维方式——用状态共享记忆,用小节点分解任务,用显式的边描述流程——你构建出的智能体,其行为将是可预测、可调试的,同时又能灵活适应各种输入。
这种模式的应用远不止于此:客户支持助手、数据分析智能体、内部审批工具……任何需要“推理-行动-循环”的场景,都是 LangGraph 的用武之地。
未来的改进方向有很多:设计更精准的提示词、接入睡眠/心率等更多数据源、加入用户反馈闭环。但最重要的是,这些改进都可以在现有图形化架构上渐进式地完成。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
大模型入门到实战全套学习大礼包
1、大模型系统化学习路线
作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
2、大模型学习书籍&文档
学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
3、AI大模型最新行业报告
2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
4、大模型项目实战&配套源码
学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
5、大模型大厂面试真题
面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
适用人群
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。