前言
LangChain.js是一个智能体开发框架,可以实现很多功能。而且它提供了很多中间件,让智能体支持多种编排模式,学习这些编排模式,可以让你更好的理解智能体的搭建和设计过程。
📦 一、现代架构(基于 LangGraph + createAgent)
1️⃣ ReAct Agent(推荐)
最强大的现代 Agent 模式,基于 LangGraph 状态图。
const agent = createAgent({ model: "openai:gpt-4o", tools: [searchTool, calculatorTool, weatherTool], systemPrompt: "You are a helpful assistant.",});
特点:
•
✅ 完整的状态管理(StateGraph)
•
✅ 中间件系统(17+ 内置中间件)
•
✅ 流式输出支持
•
✅ 结构化输出(Zod schema)
•
✅ 人机协作(HITL)
•
✅ 检查点持久化
•
✅ 时间旅行调试
执行流程:
思考 → 行动 → 观察 → 思考 → 行动 → ... → 结束
2️⃣ Supervisor Pattern(监督者模式)
多 Agent 协作的经典模式。
// 子 Agentconst calendarAgent = createAgent({ model: llm, tools: [createCalendarEvent, getAvailableTimeSlots], systemPrompt: "You are a calendar assistant.",});const emailAgent = createAgent({ model: llm, tools: [sendEmail], systemPrompt: "You are an email assistant.",});// 将子 Agent 包装为工具const scheduleEvent = tool( async ({ request }) => { const result = await calendarAgent.invoke({ messages: [{ role: "user", content: request }], }); return result.messages[result.messages.length - 1].text; }, { name: "schedule_event", description: "Schedule calendar events", schema: z.object({ request: z.string() }), });// 监督者 Agentconst supervisorAgent = createAgent({ model: llm, tools: [scheduleEvent, manageEmail], // 子 Agent 作为工具 systemPrompt: "You coordinate between calendar and email.",});
特点:
•
🎯 一个监督者协调多个专业 Agent
•
🔄 子 Agent 通过工具接口调用
•
📋 适合任务分解和委派
•
🔐 支持人机审批(HITL)
使用场景:
•
客服系统(路由到专业 Agent)
•
项目管理(任务分配)
•
复杂流程编排
3️⃣ Plan-and-Execute(通过中间件实现)
使用 todoListMiddleware 实现计划-执行模式。
const agent = createAgent({ model: "openai:gpt-4o", tools: [searchTool, fileTool, analysisTool], middleware: [ todoListMiddleware(), // 自动任务规划 ],});
执行流程:

特点:
•
📝 自动任务分解
•
📊 进度追踪
•
🔄 状态更新
•
🎯 适合复杂多步骤任务
4️⃣ Tool Selector Pattern(工具选择模式)
使用 llmToolSelectorMiddleware 进行智能工具筛选。
const agent = createAgent({ model: "openai:gpt-4o", tools: [ // 100+ 个工具 searchTool, fileTool, databaseTool, apiTool, ... ], middleware: [ llmToolSelectorMiddleware({ model: "openai:gpt-4o-mini", // 轻量级模型筛选 maxTools: 5, // 最多选择 5 个工具 selectionPrompt: "Select the most relevant tools for the task", }), ],});
执行流程:
用户查询 ↓1. 选择器 LLM 分析查询2. 从 100+ 工具中筛选出 5 个相关工具3. 主 LLM 只看到筛选后的 5 个工具4. 执行工具调用
特点:
•
🎯 减少 token 消耗
•
⚡ 提高推理速度
•
🔧 支持大规模工具库
•
📊 避免工具选择困惑
5️⃣ 自定义 LangGraph构建复杂工作流
以前也说过,langchain的底层**依赖LangGraph实现智能体的编排。**而LangGraph特别搭建构建工作流。
下面是一个简单的案例。
import { StateGraph, END } from "@langchain/langgraph";const workflow = new StateGraph({ channels: { messages: { reducer: (x, y) => x.concat(y) }, nextAgent: { reducer: (x, y) => y ?? x }, },});// 添加节点workflow.addNode("researcher", researcherAgent);workflow.addNode("writer", writerAgent);workflow.addNode("reviewer", reviewerAgent);// 添加边和条件路由workflow.addEdge("__start__", "researcher");workflow.addConditionalEdges("researcher", (state) => { if (state.researchComplete) return "writer"; return "researcher";});workflow.addEdge("writer", "reviewer");workflow.addConditionalEdges("reviewer", (state) => { if (state.approved) return END; return "writer"; // 返工});const app = workflow.compile();
特点:
•
🔄 完全自定义工作流
•
📊 复杂状态管理
•
🎯 条件分支路由
•
🔁 循环和反馈
•
💾 检查点支持
🎨 二、中间件增强的特殊模式
基于 createAgent + 中间件组合实现的高级模式:
1️⃣ Human-in-the-Loop(HITL)
让 AI Agent 在执行关键操作前暂停并等待人工审批,确保安全性和可控性。
humanInTheLoopMiddleware({ interruptOn: { send_email: true, // 发送邮件前需要审批 delete_file: { allowedDecisions: ["approve", "edit", "reject"] }, },})
2️⃣ Model Fallback(模型降级)
用于在主模型调用失败时自动按顺序尝试备用模型,提高系统的容错性。
•
自动回退:主模型失败时,按顺序尝试备用模型
•
顺序执行:按传入顺序依次尝试,直到成功或全部失败
modelFallbackMiddleware( "openai:gpt-4o", "openai:gpt-4o-mini", // 备用 "anthropic:claude-3-5-sonnet", // 再备用)
3️⃣ Context Editing(上下文管理)
用于在对话超过 token 阈值时自动清理旧的工具结果,从而管理上下文大小。它参考了 Anthropic 的上下文编辑能力,可用于任何 LangChain 聊天模型。
•
自动清理:当 token 数超过阈值时,自动清理旧的工具结果
•
保留最近结果:保留最近的 N 个工具结果(默认 3 个)
•
可配置策略:支持自定义编辑策略,可扩展
•
工具排除:可排除特定工具,避免被清理
•
可选清理工具输入:可选择是否同时清理工具调用的参数
import { contextEditingMiddleware, ClearToolUsesEdit } from "langchain";const agent = createAgent({ model: "anthropic:claude-3-5-sonnet", tools: [searchTool, calculatorTool], middleware: [ contextEditingMiddleware({ edits: [ new ClearToolUsesEdit({ triggerTokens: 50000, // 超过 50K tokens 时触发 clearAtLeast: 1000, // 至少回收 1K tokens keep: 5, // 保留最近 5 个工具结果 excludeTools: ["search"], // 不清理 search 工具的结果 clearToolInputs: true, // 同时清理工具调用参数 }), ], tokenCountMethod: "approx", // 使用近似计数(或 "model") }), ],});
4️⃣ Summarization(历史压缩)
用于在对话历史接近 token 限制时自动总结历史消息,保留最近的消息并压缩旧消息,从而控制 token 使用并保持上下文连续性。
•
自动监控:在每次模型调用前检查消息的 token 数量
•
智能总结:当 token 超过阈值时,自动总结旧消息
•
保持上下文:确保 AI/Tool 消息对不被拆分,保持对话的完整性
•
保留最近消息:保留最近的 N 条消息(默认 20 条),确保最新上下文不丢失
summarizationMiddleware({ model: "openai:gpt-4o-mini", maxTokensBeforeSummary: 50000, messagesToKeep: 5,})
5️⃣ PII Redaction(敏感信息脱敏)
piiRedactionMiddleware({ redact: ["email", "phone", "ssn", "credit_card"], model: "openai:gpt-4o",})
6️⃣ Tool Retry(工具重试)
toolRetryMiddleware({ maxRetries: 3, retryOn: ["NetworkError", "Timeout"],})
7️⃣ Call Limit(调用限制)
callLimitMiddleware({ maxCalls: 10, // 最多 10 次模型调用})
8️⃣ Prompt Caching(提示缓存)
anthropicPromptCachingMiddleware({ cacheSystemPrompt: true, cacheTools: true,})
📚 三、经典架构(langchain-classic)
这些是遗留的 Agent 类型,功能较简单但仍可用。
1️⃣ ReAct Agent(经典版)
import { createReactAgent } from "langchain/agents";const agent = createReactAgent({ llm: model, tools: [searchTool, calculatorTool], prompt: reactPrompt,});const executor = new AgentExecutor({ agent, tools });
2️⃣ Structured Chat Agent
import { createStructuredChatAgent } from "langchain/agents";const agent = createStructuredChatAgent({ llm: model, tools: [complexTool], prompt: structuredPrompt,});
3️⃣ OpenAI Functions Agent
import { createOpenAIFunctionsAgent } from "langchain/agents";const agent = createOpenAIFunctionsAgent({ llm: model, // OpenAI 模型 tools: [weatherTool], prompt: functionsPrompt,});
4️⃣ Tool Calling Agent
import { createToolCallingAgent } from "langchain/agents";const agent = createToolCallingAgent({ llm: model, tools: [searchTool], prompt: toolCallingPrompt,});
5️⃣ XML Agent
import { createXMLAgent } from "langchain/agents";const agent = createXMLAgent({ llm: model, // Anthropic Claude tools: [xmlTool], prompt: xmlPrompt,});
6️⃣ 对话式 Agent
import { ConversationalRetrievalQAChain } from "langchain/chains";const chain = ConversationalRetrievalQAChain.fromLLM( model, vectorStore.asRetriever(), { memory });
7️⃣ SQL Agent
import { createSQLAgent } from "langchain/agents/toolkits/sql";const toolkit = new SqlToolkit(db, model);const executor = createSQLAgent(model, toolkit);
最后
为什么要学AI大模型
当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!
DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。

最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
AI大模型系统学习路线
在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。
AI大模型入门到实战的视频教程+项目包
看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

海量AI大模型必读的经典书籍(PDF)
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。

600+AI大模型报告(实时更新)
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

AI大模型面试真题+答案解析
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下


这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
LangChain.js智能体十大编排模式详解

被折叠的 条评论
为什么被折叠?



