从零开始理解 Agent:LangChain / LangGraph / DeerFlow 小白入门指南

发布时间:2026/7/23 2:51:56
从零开始理解 Agent:LangChain / LangGraph / DeerFlow 小白入门指南 这篇文章帮你搞懂三件事Agent 到底是什么三个热门框架是什么关系怎么从零开始搭建一个 Agent 运行时 一、先搞懂一个概念Agent 不是 ChatBot 很多人把 Agent 和 ChatBot 搞混。区别其实很简单ChatBot 只会对话聊天而Agent 会做事。 Agent 的核心能力是调用工具。它不是一个只会聊天的模型而是一个能理解需求、选择工具、执行操作、观察结果、循环推理的系统。 这个理解→决策→执行→观察→循环的过程有一个学术名称ReActReasoning Acting。 Agent 的四个核心组件组件作用类比LLM大脑理解语言、推理决策人的大脑Tool工具执行具体操作搜索、计算、读写文件等手和脚Memory记忆记住对话历史和跨会话信息人的记忆Harness身体运行 Agent 的环境管理状态、调度工具人的身体Harness就是这篇文章的重点——它是让 Agent 真正跑起来的运行时。 二、LangChain / LangGraph / DeerFlow什么关系 这三个技术是一个自底向上的三层栈LangChain 是基础——它定义了什么是工具怎么和 LLM 对话这些底层能力。所有 LLM 应用几乎都绕不开它。LangGraph 建立在 LangChain 之上——LangChain 早期的 Agent 实现比较简陋一个简单的 while 循环LangGraph 用图的方式重新定义了 Agent 的工作流节点是处理步骤边是流转方向支持条件分支和循环。LangGraph 是 LangChain 团队自己出的是 Agent 编排的官方推荐方案。DeerFlow 建立在 LangGraph 之上——LangGraph 给了你造车的零件DeerFlow 直接给你一辆能开的车。它把 LangGraph 的 Agent 包装成完整的运行时加了前端界面、API 网关、沙箱执行、技能系统、记忆系统等工程化能力。字节跳动开源已经在生产环境中验证过。三、第一阶段用 LangChain 跑通第一个 Agent2-3 天3.1 第一个 Agent10 行代码 code-snippet__jsfrom langchain_openai import ChatOpenAIfrom langchain_core.tools import toolfrom langchain.agents import create_react_agent1. 定义一个工具tooldef calculate(expression: str) - str:“”“计算数学表达式例如 ‘2 3’ 或 ‘100 * 0.85’”“”try:result eval(expression)return f计算结果: {result}except Exception as e:return f计算错误: {e}2. 创建 Agentllm ChatOpenAI(model“gpt-4o-mini”, temperature0)agent create_react_agent(llm, tools[calculate])3. 运行response agent.invoke({“messages”: [{“role”: “user”, “content”: “帮我算一下 15% 的税后 8500 是多少”}]})print(response[“messages”][-1].content)输出: 8500 × 0.85 7225税后是 7225 元* 理解LLM 分析用户意图 → 用户要算税后金额 * 决策LLM 选择工具 → 调用 calculate(8500 * 0.85) * 执行工具执行 → 返回7225 * 观察LLM 检查结果 → 信息足够生成最终回答 这就是 **ReAct 循环**——所有 Agent 框架的核心逻辑都是这个。 3.3 Agent多工具调用 code-snippet__js tool def search_web(query: str) - str: 搜索网页信息 # 这里用真实的搜索 API from langchain_community.tools import DuckDuckGoSearchRun return DuckDuckGoSearchRun().run(query) tool def read_file(file_path: str) - str: 读取文件内容 with open(file_path, r) as f: return f.read() tool def write_file(file_path: str, content: str) - str: 写入文件 with open(file_path, w) as f: f.write(content) return f文件已保存: {file_path} # 给 Agent 多个工具 agent create_react_agent(llm, tools[calculate, search_web, read_file, write_file]) response agent.invoke({ messages: [{role: user, content: 搜索一下 Python 3.13 的新特性然后保存到文件里}] } plaintext至此你已经掌握了 Agent 的基本写法。但 create_react_agent 是一个黑盒——你无法控制循环逻辑、无法加条件分支、无法管理复杂状态。这就是 LangGraph 要解决的问题。 四、第二阶段用 LangGraph 构建有状态的 Agent1-2 周 4.1 为什么需要 LangGraph LangChain 的 create_react_agent 是一个简单循环LLM → 工具 → LLM → ... → 结束。 但真实的 Agent 场景远比这复杂 需要条件分支根据不同结果走不同路径 需要并行执行同时调用多个工具 需要状态管理记住之前做了什么 需要人机交互中间暂停等人确认后继续 需要检查点出错后能恢复到之前的某个状态 LangGraph 用图Graph来描述这些复杂的工作流。 4.2 核心概念 概念 说明 类比 State状态 在整个图中流转的数据 流水线上的产品 Node节点 处理状态数据的函数 流水线上的工位 Edge边 节点之间的连接可以带条件 传送带的分叉口 Checkpoint检查点 保存中间状态支持回滚 存档点 4.3 代码示例一个有状态的研究 Agent from typing import TypedDict, Annotated from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage, AIMessage from langgraph.graph import StateGraph, START, END from langgraph.graph.message import add_messages # 1. 定义状态 class ResearchState(TypedDict): messages: Annotated[list, add_messages] # 消息历史 research_results: str # 研究结果 report_ready: bool # 报告是否就绪 # 2. 定义节点 llm ChatOpenAI(modelgpt-4o-mini) def research_node(state: ResearchState): 研究节点分析问题 messages state[messages] response llm.invoke(messages) return { messages: [response], research_results: response.content } def write_report_node(state: ResearchState): 写报告节点基于研究结果写报告 prompt f基于以下研究结果写一份报告:\n\n{state[research_results]} response llm.invoke([HumanMessage(contentprompt)]) return { messages: [response], report_ready: True } # 3. 定义条件路由 def should_continue(state: ResearchState): 判断是否需要写报告 if 写报告 in state[messages][-1].content if state[messages] else : return write_report return research # 4. 构建图 graph StateGraph(ResearchState) graph.add_node(research, research_node) graph.add_node(write_report, write_report_node) graph.add_edge(START, research) graph.add_conditional_edges(research, should_continue) graph.add_edge(write_report, END) # 5. 编译并运行 app graph.compile() result app.invoke({ messages: [HumanMessage(content帮我研究一下 2026 年 AI Agent 的发展趋势然后写一份报告)], research_results: , report_ready: False }) print(result[messages][-1].content 4.4 LangGraph 的威力 上面的代码做了什么 定义了一个 有状态的工作流 不只是简单循环 用 条件边 控制流向研究结果够好才写报告 每个节点只关心自己的输入输出 互不耦合 LangGraph 自动管理 检查点 ——出错了可以回滚 当你理解了这段代码你就理解了 DeerFlow 的核心——因为 DeerFlow 的 Lead Agent 就是一个用 LangGraph 构建的复杂图。 4.5 带工具的 LangGraph Agent from langgraph.prebuilt import create_react_agent # LangGraph 提供了开箱即用的 ReAct Agent # 这比 LangChain 的 create_react_agent 更强大 # - 支持检查点可回滚 # - 支持流式输出 # - 支持中断和恢复 # - 支持人机交互Human-in-the-loop agent create_react_agent( modelChatOpenAI(modelgpt-4o-mini), tools[calculate, search_web, read_file, write_file], # 可以加中间件 state_modifier你是一个助手请简洁回答。 ) # 带检查点的版本可恢复 from langgraph.checkpoint.memory import MemorySaver agent_with_memory create_react_agent( modelChatOpenAI(modelgpt-4o-mini), tools[calculate, search_web], checkpointerMemorySaver() ) # 流式输出 for chunk in agent.stream( {messages: [HumanMessage(content搜索 LangChain 的最新版本号)]}, stream_modevalues ): if chunk[messages]: chunk[messages][-1].pretty_print() 五、第三阶段用 DeerFlow 搭建 Harness2-3 周 5.1 什么是 Harness 一个完整的 Agent Harness 需要解决这些问题 问题 LangChain/LangGraph DeerFlow Agent 怎么运行 你自己写 while 循环 内置运行时引擎 怎么和用户交互 自己写 CLI 或 API 自带 Next.js 前端 FastAPI 怎么安全执行代码 自己想办法 内置 Docker 沙箱 怎么管理长上下文 手动截断 自动摘要压缩中间件 怎么记住跨会话信息 自己实现 内置记忆系统 怎么复用业务能力 手写工具 技能系统Skill 怎么委派子任务 自己编排 子 Agent 自动协调 怎么部署上线 自己搞 Docker Docker Compose 一键部署 5.2 中间件Middleware 中间件是包裹每次 LLM 调用的插件在调用前和调用后执行自定义逻辑用户消息 → [摘要压缩] → [记忆注入] → [计划更新] → LLM → [标题生成] → [记忆排队] → 响应 内置中间件 - SummarizationMiddleware自动压缩旧消息防止上下文溢出 - MemoryMiddleware跨会话记忆注入 - TodoMiddleware计划模式跟踪任务进度 - TokenUsageMiddleware追踪 Token 用量和成本 - LoopDetectionMiddleware检测死循环 5.3 技能Skill 技能是面向任务的能力包按需加载——不污染基础 Agent 的上下文。 # skills/custom/weekly-report/SKILL.md --- name: weekly-report description: 生成工作周报 category: productivity --- # 工作周报生成技能 ## 指令 当用户请求生成周报时按以下步骤 1. 询问本周完成的主要工作 2. 询问下周计划 3. 生成结构化周报 4. 保存为 Markdown 文件 5.4 沙箱Sandbox Agent 执行代码和文件操作的隔离环境 - 本地沙箱开发用直接在本地文件系统操作 - Docker 沙箱生产用完全隔离的容器环境 5.5 子 AgentSubAgent 处理委派子任务的专注执行者 Lead Agent主控 ├─ 子 Agent 1并行搜索资料 ├─ 子 Agent 2并行分析数据 └─ 子 Agent 3并行生成报告 六、常见问题 Q1我需要先学完 LangChain 再学 LangGraph 吗 不需要。 LangChain 的概念很杂Chain、Agent、Memory、Retriever...建议只学最基础的LLM 调用 Tool 定义然后直接上 LangGraph。LangGraph 的 API 更清晰、更现代是官方推荐的方向。 Q2DeerFlow 和 Dify / Coze 有什么区别 对比 DeerFlow Dify / Coze 定位 Agent 运行时开发者向 Agent 搭建平台产品向 目标用户 工程师 产品经理 / 运营 定制深度 源码级定制 配置级定制 代码控制力 完全可控 有限 适合场景 需要深度定制的 Agent 平台 快速搭建不需要写代码的 Agent 简单说想拖拽就搭的用 Dify/Coze想写代码深度定制的用 DeerFlow。 Q3DeerFlow 和 LangChain 的 Open Agent 有什么区别 LangChain 的 Open Agent 是 LangChain 团队自己的 Agent 运行时项目定位和 DeerFlow 类似。区别 Open AgentLangChain 官方出品和 LangChain 生态深度绑定 DeerFlow字节跳动出品在 LangGraph 之上构建有生产验证 两者技术上很相似都基于 LangGraph选哪个更多是看社区活跃度和团队偏好。 Agent 开发不像你想的那么神秘。本质上就是三件事 让 LLM 能调用工具 LangChain 用图编排复杂工作流 LangGraph 把工作流包装成可运行的服务 DeerFlow 从第一个 10 行代码的 Agent 开始到搭建一个企业级 Agent 运行时路径是清晰的。关键是动手写代码——看再多文章不如自己跑一遍。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】