小白也能从零搭智能体!用 LangGraph 做第一个 Agent,步骤超详细

一、Agent概念深度解析

在AI领域,Agent的定义众多,其中OpenAI研究主管Lilian Weng提出的框架极具代表性,她将Agent明确拆解为四大核心组件,即Agent = 大语言模型(LLM)+ 规划能力(Planning)+ 记忆系统(Memory)+ 工具调用(Tool Use) ,这一公式清晰揭示了Agent区别于单一模型的关键特质。

图片

图1 按照规划、记忆、工具、动作分解的Agent定义(OpenAI)

这四大组件各自承担着不可或缺的功能:

  • 规划能力(Planning):作为Agent执行复杂任务的“大脑指挥官”,它能将用户提出的模糊或庞大需求,拆解为逻辑连贯、可逐步落地的子任务序列。例如面对“策划一场周末家庭露营”的需求,规划模块会先拆解出“确定露营地点→查询天气→准备装备清单→规划出行路线”等具体步骤。
  • 记忆系统(Memory):相当于Agent的“知识库”与“经历库”,负责存储和快速检索信息。它既包含预先训练的通用知识,也能记录用户交互过程中的个性化信息(如用户偏好、历史对话内容),还能保存任务执行中的临时数据,为决策提供依据。
  • 工具调用(Tools):是Agent延伸能力边界的“手脚”,通过调用外部工具弥补自身功能局限。常见工具包括搜索引擎(获取实时信息)、计算器(完成精准运算)、代码执行器(实现编程任务)、数据库查询工具(提取结构化数据)等。

1)Agent与LLM的核心差异(以电子邮件回复场景为例)

为更直观体现二者区别,我们以“回复工作邮件”这一日常场景展开对比:

假设收到的邮件内容为:“你好,小明,明天是否有空当面快速同步下。继续聊下上次沟通过的一些想法”

若仅使用LLM进行回复,其输出更偏向“通用化语言生成”,缺乏对具体场景信息的整合,例如:
“请问明天你方便的时间段是什么时候?我们可以根据你的时间安排一个合适的会面时间。”

而Agent在回复前会启动完整的“信息检索-决策”流程,思考过程如下:
a)调用日历工具,检查明天全天的日程安排,确认是否存在时间冲突;
b)调取与发件人的历史聊天记录,明确“上次沟通的想法”具体涉及哪些项目细节(如产品方案优化、项目进度调整等);
c)检索近期与该发件人相关的工作文档或会议纪要,补充可能遗漏的关键信息;
d)结合自身记忆中存储的发件人偏好(如习惯上午沟通、倾向简短高效交流),综合判断后生成回复。

最终Agent可能给出的回复为:“明天上午10点到11点我暂无其他安排,咱们可以在公司三楼会议室沟通。另外,我已整理好上次聊到的产品方案优化要点,明天会带纸质版资料,方便咱们快速同步细节。”

2)Agent与Workflow的本质区别(参考知乎用户安小强观点)

Workflow(工作流)与Agent虽都用于处理流程化任务,但在灵活性与决策方式上存在根本差异:

  • Workflow:基于“预定义编排”的固定流程,所有步骤、顺序及触发条件均在任务执行前设定完毕,执行过程中无法根据实际情况调整。例如电商平台的“订单处理流程”,从“用户下单→支付验证→库存扣减→物流分配→订单完成”,每一步都按照预设规则机械执行,若出现“库存不足”这类异常情况,需人工介入才能调整流程。
  • Agent:具备“运行时自主决策”能力,能在任务执行过程中,根据实时获取的信息、环境变化及任务目标的动态调整,灵活优化行动方案。例如同样是“处理客户订单”,Agent若发现某商品库存不足,会自动触发备选方案:先查询相似替代品库存→向客户推送推荐清单→根据客户反馈确认是否替换商品→更新订单信息并继续流程,无需人工干预。

在这里插入图片描述

综上,相较于LLM,Agent的核心优势在于“主动信息整合”——通过调用工具、检索记忆,尽可能收集与任务相关的信息后再生成输出,避免回答的片面性;而与Workflow相比,Agent的关键特质是“动态适应性”——在运行中持续反思子任务完成情况,若发现与预期目标偏差,可实时调整工具调用策略、参数设置或步骤顺序,大幅提升任务处理的灵活性与成功率。

二、Agent开发框架LangGraph详解

LangGraph是由LangChain团队推出的一款专注于Agent开发的框架,其核心设计理念是“将Agent的交互逻辑抽象为有状态图(Stateful Graph)”。在这一框架中,Agent的每一步操作被封装为“节点(Node)”,操作间的流转关系通过“边(Edge)”定义,而所有节点与边共享的数据和上下文则由“状态(State)”统一管理,这种结构能高效支撑Agent复杂的决策与流程控制。

img

要理解LangGraph的工作原理,需重点掌握“节点、边、状态”三大核心组件:

1)节点(Nodes):Agent的“功能执行单元”

节点是构成LangGraph的基础模块,代表Agent工作流中一个独立的计算或操作步骤。其复杂度可灵活调整:

  • 简单节点:可直接是一个Python函数,例如“提取用户输入中的关键词”“对文本进行格式转换”等基础操作;
  • 复杂节点:能集成外部工具调用或嵌套子Agent,例如“调用搜索引擎获取实时天气数据”“启动子Agent完成多轮对话摘要生成”等功能。

每个节点接收“状态(State)”传递的数据作为输入,执行相应逻辑后,将处理结果反馈给状态,供后续节点使用。

2)边(Edges):Agent的“流程控制链路”

边负责连接不同节点,定义Agent从一个步骤到下一个步骤的流转规则,分为“直接边”和“条件边”两种类型:

  • 直接边:无额外判断条件,完成当前节点后自动跳转到目标节点。例如“完成关键词提取后,直接进入文本生成节点”;
  • 条件边:类似编程中的“if-else”逻辑,根据“状态”中的特定数据判断结果,选择不同的流转路径。例如“根据用户输入的需求类型,若为‘查询类’则跳转至‘工具调用节点’,若为‘创作类’则跳转至‘LLM生成节点’”。

通过条件边,LangGraph能实现复杂的分支逻辑,让Agent根据实际场景动态选择最优执行路径。

3)状态(State):Agent的“数据共享中枢”

状态是LangGraph中最核心且易被忽视的组件,它相当于Agent的“全局数据池”,承担三大关键作用:

  • 数据存储:汇总所有节点执行过程中产生的信息,包括用户输入、工具调用结果、中间计算数据等;
  • 上下文共享:确保所有节点和边能访问到一致的信息,避免数据孤岛。例如“节点A提取的用户偏好”可被“节点B的工具调用参数设置”和“节点C的回复生成”共同使用;
  • 状态持久化:在任务执行过程中持续保留数据,支持多轮交互中的信息累积。例如多轮对话中,前几轮的对话历史会保存在状态中,供后续节点生成连贯回复时参考。

正是依靠状态的统一管理,LangGraph才能实现复杂流程下的数据协同与高效流转。

三、基于LangGraph实现简易Agent:主题笑话生成器

下面我们将通过一个具体案例,演示如何使用LangGraph开发一个简单的Agent——根据用户输入的主题,自动生成对应的短笑话。

1)环境准备与依赖安装

首先需配置开发环境,安装必要的依赖包。建议使用Jupyter Notebook作为开发工具,便于代码调试与结果查看。

执行以下命令安装依赖:

# 安装LangGraph框架(用于构建Agent工作流)
pip install langgraph
# 安装LangChain-OpenAI适配器(用于集成LLM)
pip install langchain-openai

2)代码实现步骤

步骤1:导入核心库与初始化LLM

首先导入LangGraph、LangChain相关库,并配置大语言模型。本案例选用阿里云ModelScope平台的Qwen3-30B-A3B-Instruct模型(需先在ModelScope平台注册并获取API Key)。

# 导入LLM集成相关库
from langchain_openai import ChatOpenAI

# 配置ModelScope API信息(需替换为个人API Key)
base_url = 'https://api-inference.modelscope.cn/v1'  # ModelScope API基础地址
api_key = 'your_modelscope_api_key'  # 从ModelScope平台获取的个人API Key
model_name = 'Qwen/Qwen3-30B-A3B-Instruct-2507'  # 选用的LLM模型名称

# 初始化LLM客户端
llm = ChatOpenAI(
    api_key=api_key,
    base_url=base_url,
    model_name=model_name,
    temperature=0.7,  # 控制生成内容的随机性,0.7适中(原0调整为0.7,增加笑话趣味性)
    max_tokens=None,  # 不限制生成 tokens 数量(根据笑话长度自适应)
    timeout=30,  # 超时时间设置为30秒,避免请求阻塞
    max_retries=2,  # 失败时重试2次,提升稳定性
)

# 导入类型定义库,用于定义State数据结构
from typing_extensions import TypedDict
步骤2:定义状态(State)数据结构

使用TypedDict定义状态的结构,明确存储的数据字段。本案例中,状态需包含“用户输入的笑话主题(topic)”和“Agent生成的笑话(joke)”两个核心字段。

class JokeAgentState(TypedDict):
    """定义笑话生成Agent的状态结构"""
    topic: str  # 输入字段:用户指定的笑话主题(如“小猫咪”“程序员”)
    joke: str   # 输出字段:Agent生成的短笑话
步骤3:定义节点(Node)逻辑

创建“笑话生成节点”,该节点接收状态中的“topic”字段作为输入,调用LLM生成对应主题的短笑话,并将结果更新到状态的“joke”字段中。

def generate_joke_node(state: JokeAgentState) -> JokeAgentState:
    """
    笑话生成节点:根据状态中的主题,调用LLM生成短笑话
    :param state: 输入状态,包含笑话主题(topic)
    :return: 更新后的状态,包含生成的笑话(joke)
    """
    # 构造LLM提示词(增加细节要求,确保笑话简洁有趣)
    prompt = f"""请围绕“{state['topic']}”生成一个简短有趣的笑话,要求:
    1. 长度控制在2-3句话内,避免过长;
    2. 风格轻松幽默,适合日常分享;
    3. 不包含低俗或敏感内容。"""
    
    # 调用LLM生成笑话
    llm_response = llm.invoke(prompt)
    
    # 将生成的笑话更新到状态中
    return {"joke": llm_response.content}
步骤4:构建LangGraph工作流

通过StateGraph类搭建Agent的工作流,定义节点的添加、边的连接规则,并编译为可执行的链条。

# 导入LangGraph核心组件与可视化工具
from langgraph.graph import StateGraph, START, END
from IPython.display import Image, display

# 1. 初始化状态图(指定状态结构为JokeAgentState)
joke_workflow = StateGraph(JokeAgentState)

# 2. 添加节点(将笑话生成函数注册为节点,节点名称为“generate_joke”)
joke_workflow.add_node("generate_joke", generate_joke_node)

# 3. 定义边的连接规则
joke_workflow.add_edge(START, "generate_joke")  # 从“开始节点”直接进入“笑话生成节点”
joke_workflow.add_edge("generate_joke", END)    # 生成笑话后直接进入“结束节点”

# 4. 编译工作流,生成可执行的Agent链条
joke_agent_chain = joke_workflow.compile()

# 5. 可视化工作流(生成流程图,便于查看节点与边的关系)
display(Image(joke_agent_chain.get_graph().draw_mermaid_png()))

执行上述代码后,将生成如下工作流可视化图,清晰展示“开始→笑话生成→结束”的简单流程:

img

步骤5:运行Agent并查看结果

调用编译后的Agent链条,输入具体主题(如“小猫咪”),执行笑话生成任务,并打印结果。

# 调用Agent,输入主题“小猫咪”
result_state = joke_agent_chain.invoke({"topic": "小猫咪"})

# 打印生成的笑话
print("生成的笑话:")
print("-" * 50)
print(result_state["joke"])

3)实际运行结果

执行上述代码后,Agent将输出基于“小猫咪”主题的短笑话,示例结果如下:

生成的笑话:
--------------------------------------------------
小猫咪蹲在键盘上不肯走,主人无奈问:“你是想帮我写代码吗?”
小猫咪爪子按了下“Ctrl+S”,慢悠悠喵了一声:“不,我只是怕你忘保存。”

若需生成其他主题的笑话,只需修改invoke方法中的topic参数(如{"topic": "程序员"}),Agent将自动生成对应主题的内容,体现出良好的灵活性。

如何学习大模型 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大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

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

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

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值