深入浅出 LangGraph —— 第12章:多Agent系统架构

使用LangGraph构建多Agent系统架构? Agent是一个使用大语言模型决定应用程序控制流的系统。随着这些系统的开发,它们随时间推移变得复杂,使管理和扩展更困难。Agent拥有太多的工具可供使用,对接下来应该调用哪个工具做出糟糕决策上下文过于复杂,以至于单个Agent无法跟踪系统中需要多个专业领域(例如规划者、研究员、数学专家等)。为解决这些问题,你可能考虑将应用程序拆分成多个更小、独立的代理,并将它们组合成一个多Agent系统。这些独立的Agent可以简单到一个提示和一个LLM调用,或者复杂到像一个ReActAgent(甚至更多!使用。 阅读详情

📖 本章学习目标

  • ✅ 理解多 Agent 系统相比单 Agent 的核心优势
  • ✅ 掌握监督者-工作者(Supervisor-Worker)架构模式
  • ✅ 学会使用 createReactAgent 快速创建工作者 Agent
  • ✅ 理解 Agent 间的通信与任务传递机制
  • ✅ 能够设计并实现一个协同工作的多 Agent 团队
  • ✅ 避免常见的多Agent设计陷阱

一、为什么需要多 Agent

1、单 Agent 的瓶颈

当任务越来越复杂,单个 Agent 会遇到以下瓶颈:

  • 上下文窗口有限:单个 Agent 处理长任务时历史消息超限
  • 工具太多:绑定几十个工具后,LLM 调用准确率下降
  • 专业化不足:一个 Agent 什么都做,什么都做得不精
  • 并行能力弱:单 Agent 只能串行处理任务
  • 维护困难:单一Agent逻辑复杂,难以调试和维护

多Agent就是处理以上问题的解决方案。

多Agent团队

用户请求

监督者Agent
任务分解

搜索Agent

分析Agent

写作Agent

结果汇总

高质量完成

2、多 Agent 的优势

搜索任务

分析任务

写作任务

🧑‍💼 监督者 Agent
任务规划与分配

🔍 搜索 Agent
专注信息检索

📊 分析 Agent
专注数据分析

✍️ 写作 Agent
专注内容生成

📋 最终结果

维度单 Agent多 Agent
专业性通才,样样略懂专家,各司其职
并行能力串行执行并行分工
上下文管理单一上下文各 Agent 独立上下文
可扩展性难以扩展按需增加专家 Agent
可靠性单点故障容错性强
维护性复杂难维护模块化易维护

实际应用场景:

  • 📰 新闻生成:搜索→分析→写作→审核
  • 💻 代码开发:需求分析→架构设计→编码→测试
  • 🔬 学术研究:文献检索→数据分析→论文撰写
  • 🏥 医疗诊断:症状分析→检查建议→治疗方案

二、监督者-工作者架构

1、架构设计

最经典的多 Agent 模式:一个监督者(Supervisor) 负责规划和任务分配,多个工作者(Worker)Agent 各负责专门的任务。

工作流程:

  1. 监督者接收用户请求
  2. 监督者分析任务,决定下一步
  3. 路由到对应的工作者Agent
  4. 工作者执行任务,返回结果
  5. 回到监督者,继续决策
  6. 直到任务完成(FINISH)

2、使用 createReactAgent 创建工作者

LangGraph 提供了 createReactAgent 预构建函数,快速创建 ReAct 工作者 Agent:

步骤1:导入依赖
import * as dotenv from 'dotenv';
dotenv.config();

import { createReactAgent } from '@langchain/langgraph/prebuilt';
import { ChatOpenAI } from '@langchain/openai';
import { tool } from '@langchain/core/tools';
import { z } from 'zod';
import { HumanMessage, SystemMessage } from '@langchain/core/messages';

const model = new ChatOpenAI({ model: 'gpt-4o-mini' });
步骤2:创建搜索Agent
// 搜索工作者的工具
const webSearchTool = tool(
  async ({ query }) => `搜索"${query}":找到了相关结果...`,
  { 
    name: 'web_search', 
    description: '搜索互联网信息', 
    schema: z.object({ query: z.string() }) 
  }
);

// 创建搜索 Agent
const searchAgent = createReactAgent({
  llm: model,
  tools: [webSearchTool],
  stateModifier: new SystemMessage(
    '你是专业的信息检索助手,擅长搜索并整理网络信息。请返回详细的搜索结果。'
  ),
});
步骤3:创建分析Agent
// 分析 Agent
const codeAnalysisTool = tool(
  async ({ code }) => `代码分析结果:发现3个潜在问题...`,
  { 
    name: 'analyze_code', 
    description: '分析代码质量和潜在问题', 
    schema: z.object({ code: z.string() }) 
  }
);

const analysisAgent = createReactAgent({
  llm: model,
  tools: [codeAnalysisTool],
  stateModifier: new SystemMessage('你是专业的代码审查助手,擅长发现代码问题和提供改进建议。'),
});

每个工作者有专门的工具和角色定义,在设计工作者时,通常遵循以下原则:

  1. 单一职责:每个Agent只做一件事
  2. 专业化工具:只绑定相关的工具
  3. 明确角色:SystemMessage清晰定义职责

3、实现监督者

定义路由Schema
import { 
  Annotation, StateGraph, MessagesAnnotation, 
  END, START 
} from '@langchain/langgraph';
import { AIMessage, BaseMessage } from '@langchain/core/messages';
import { z } from 'zod';

// 工作者列表
const workers = ['search_agent', 'analysis_agent', 'writer_agent'] as const;
type Worker = typeof workers[number];

// 监督者的路由决策 Schema
const SupervisorDecision = z.object({
  next: z.enum([...workers, 'FINISH']).describe('下一个要执行的工作者,FINISH 表示任务完成'),
  reason: z.string().describe('选择原因'),
  instructions: z.string().describe('给工作者的具体指令'),
});
  • 代码解读:
  • workers:定义所有可用的工作者名称
  • SupervisorDecision:约束监督者的输出格式
  • next:下一步路由目标(工作者或FINISH)
  • reason:决策原因,便于调试
  • instructions:给工作者的具体指令
实现监督者节点
// 监督者节点:决定下一步派谁去做
async function supervisorNode(state: typeof MessagesAnnotation.State) {
  const supervisorModel = model.withStructuredOutput(SupervisorDecision);
  
  const decision = await supervisorModel.invoke([
    new SystemMessage(
      `你是团队监督者,负责将任务分配给以下工作者:\n` +
      `- search_agent:负责信息搜索\n` +
      `- analysis_agent:负责数据分析\n` +
      `- writer_agent:负责内容写作\n` +
      `根据对话历史决定下一步,任务完成时回复 FINISH。`
    ),
    ...state.messages,
  ]);
  
  return {
    messages: [
      new AIMessage({
        content: `[监督者] → ${decision.next}: ${decision.instructions}`,
      }),
    ],
    next: decision.next,
  };
}

代码解读:

  • withStructuredOutput:约束监督者只能返回合法的工作者名称
  • 监督者消息包含**“给工作者的指令”**,工作者会看到这条消息
  • next 字段用于路由到对应的工作者或结束

监督者的职责:

  • 理解用户需求
  • 分解任务步骤
  • 分配合适的工作者
  • 判断任务是否完成

提示词技巧:

  • 明确列出所有工作者及其职责
  • 说明终止条件(FINISH)
  • 要求给出决策原因

4、组装多 Agent 图

扩展State
import { messagesStateReducer } from '@langchain/langgraph';

// 扩展 State 添加路由字段
const MultiAgentState = Annotation.Root({
  messages: Annotation({
    reducer: messagesStateReducer,
    default: () => [],
  }),
  next: Annotation<Worker | 'FINISH'>(),
});
创建工作者节点包装器
import { CompiledStateGraph } from '@langchain/langgraph';

// 工作者节点:调用对应的 Agent,将结果加入消息历史
async function makeWorkerNode(agentGraph: CompiledStateGraph, agentName: string) {
  return async (state: typeof MultiAgentState.State) => {
    const result = await agentGraph.invoke({ messages: state.messages });
    const lastMsg = result.messages[result.messages.length - 1];
    return {
      messages: [
        new AIMessage({ content: `[${agentName}] ${lastMsg.content}` })
      ],
    };
  };
}

makeWorkerNode是工厂函数,用于创建工作者节点。

  • agentGraph:编译好的工作者Agent(createReactAgent返回)
  • agentName:工作者名称,用于标识消息来源
  • 调用工作者Agent,获取结果
  • 将结果包装后添加到messages

工作流程:

  1. 接收当前messages
  2. 调用工作者Agent处理
  3. 获取工作者的最后一条消息
  4. 添加前缀标识(如[搜索助手])
  5. 返回更新后的messages
组装完整图
const multiAgentGraph = new StateGraph(MultiAgentState)
  .addNode('supervisor', supervisorNode)
  .addNode('search_agent', await makeWorkerNode(searchAgent, '搜索助手'))
  .addNode('analysis_agent', await makeWorkerNode(analysisAgent, '分析助手'))
  .addEdge('__start__', 'supervisor')
  // 监督者根据 next 字段路由
  .addConditionalEdges('supervisor', (state) => state.next, {
    search_agent: 'search_agent',
    analysis_agent: 'analysis_agent',
    writer_agent: 'writer_agent',
    FINISH: '__end__',
  })
  // 所有工作者执行后都回到监督者
  .addEdge('search_agent', 'supervisor')
  .addEdge('analysis_agent', 'supervisor')
  .compile();

每个工作者完成后都回到 supervisor,让监督者决定下一步,这形成了**“监督者→工作者→监督者→…”** 的循环,直到 FINISH。state.next 是监督者设置的路由目标,条件边据此分发。

关键点:

  • 监督者是中心节点
  • 工作者之间不直接通信
  • 所有决策由监督者做出
  • 通过next字段控制路由

多Agent协作流程图:

search_agent

analysis_agent

writer_agent

FINISH

__start__

监督者节点
决策下一步

next字段?

搜索Agent
执行搜索

分析Agent
执行分析

写作Agent
生成内容

__end__


三、运行多 Agent 系统

async function runMultiAgentSystem() {
  const result = await multiAgentGraph.invoke({
    messages: [
      new HumanMessage(
        '请帮我:1.搜索LangGraph的最新版本信息,2.分析其主要特性,3.写一篇介绍文章'
      ),
    ],
    next: 'supervisor', // 初始路由到监督者
  });
  
  // 打印所有消息(展示协作过程)
  for (const msg of result.messages) {
    if (msg instanceof AIMessage) {
      console.log(msg.content);
      console.log('---');
    }
  }
}

await runMultiAgentSystem();
// 输出示例:
// [监督者] → search_agent: 请先搜索LangGraph最新版本信息
// ---
// [搜索助手] LangGraph最新版本是0.2.0,主要更新包括...
// ---
// [监督者] → analysis_agent: 请分析这些特性的价值
// ---
// [分析助手] 这些特性提升了开发效率,主要体现在...
// ---
// [监督者] → writer_agent: 请基于以上信息写介绍文章
// ---
// [写作助手] LangGraph是一个强大的Agent框架...
// ---
// [监督者] → FINISH: 任务已完成
// ---

invoke时传入初始消息和next字段,next:'supervisor'表示从监督者开始。整个过程全自动,监督者智能分配任务。 最终result.messages包含完整的协作历史。

调试技巧:

  • 打印所有messages查看协作过程
  • 使用streamEvents观察每一步
  • 检查next字段的决策是否正确

四、对等协作架构(Peer-to-Peer)

1、适用场景

当 Agent 之间需要双向通信时(如辩论、互相审阅),使用对等架构:

反馈

修订

批准

Agent A
提出方案

Agent B
审阅方案

完成

典型应用:

  • 🗣️ 辩论系统:正反方交替发言
  • 👀 代码审阅:开发者与审阅者交互
  • ✍️ 内容创作:作者与编辑协作
  • 🎯 方案设计:提案者与评审者迭代

2、实现辩论Agent

// 提案 Agent
async function proposerNode(state: typeof MessagesAnnotation.State) {
  const response = await model.invoke([
    new SystemMessage('你是方案提出者,根据需求给出具体解决方案,简洁有力'),
    ...state.messages,
  ]);
  return { messages: [response] };
}

// 审阅 Agent
async function reviewerNode(state: typeof MessagesAnnotation.State) {
  const response = await model.invoke([
    new SystemMessage('你是严格的方案审阅者,指出问题和改进点,如果方案足够好回复"APPROVED"'),
    ...state.messages,
  ]);
  return { messages: [response] };
}

// 路由:审阅结果决定继续还是结束
function reviewRouter(state: typeof MessagesAnnotation.State): string {
  const lastMsg = state.messages[state.messages.length - 1];
  return (lastMsg.content as string).includes('APPROVED') ? '__end__' : 'proposer';
}

const collaborativeGraph = new StateGraph(MessagesAnnotation)
  .addNode('proposer', proposerNode)
  .addNode('reviewer', reviewerNode)
  .addEdge('__start__', 'proposer')
  .addEdge('proposer', 'reviewer')
  .addConditionalEdges('reviewer', reviewRouter)
  .compile({
    recursionLimit: 10
  });

执行流程:

  1. proposer提出方案
  2. reviewer审阅
  3. 如果不满意,回到proposer修改
  4. 如果满意(APPROVED),结束

注意事项:

  • 必须设置recursionLimit防止无限循环
  • APPROVED关键词要明确

对比两种架构:

特性Supervisor-WorkerPeer-to-Peer
控制方式集中式(监督者)分布式(平等)
通信模式星型拓扑网状拓扑
适用场景任务分解与分配双向协作与迭代
复杂度中等简单
扩展性好(易添加工作者)一般

五、最佳实践和踩坑指南

💡 实践 1:防止无限循环

// 添加最大循环次数限制
const MAX_ITERATIONS = 10;

const safeMultiAgentGraph = new StateGraph(MultiAgentState)
  // ... nodes and edges ...
  .compile({
    recursionLimit: MAX_ITERATIONS, // 超过限制自动停止
  });

原因:多Agent系统容易陷入无限循环,必须设置安全限制。

💡 实践 2:监督者的提示词要明确

// ✅ 明确的终止条件
const goodSupervisorPrompt = `
任务完成标准:
- 搜索结果已获取 AND
- 内容已撰写 AND
- 用户问题已完整回答
满足以上所有条件时,回复 FINISH。
`;

// ❌ 模糊的终止条件
const badSupervisorPrompt = `
你觉得差不多了就结束吧。
`;

原因:模糊的终止条件会导致监督者无法判断何时结束。

💡 实践 3:工作者上下文管理

// ✅ 只传相关消息给工作者
async function smartWorkerNode(agentGraph: CompiledStateGraph, agentName: string) {
  return async (state: typeof MultiAgentState.State) => {
    // 只传最近5条消息,避免Token超限
    const relevantMessages = state.messages.slice(-5);
    const result = await agentGraph.invoke({ messages: relevantMessages });
    // ...
  };
}

// ❌ 传递全部历史
const badWorkerNode = async (state) => {
  const result = await agentGraph.invoke({ messages: state.messages }); // 可能超限
};

原因:工作者不需要完整历史,只传相关内容可节省Token。

⚠️ 常见陷阱

问题现象解决方案
监督者无限循环图永远不返回 FINISH设置 recursionLimit,优化终止条件提示词
工作者上下文太长Token 超限报错传给工作者的 messages 只传相关的,不传全部历史
Agent 输出格式不一致监督者无法解析工作者结果为每个工作者定义明确的输出格式规范
并行工作者写入同一字段状态合并冲突为工作者的输出设计追加 Reducer
工作者之间直接通信绕过监督者,逻辑混乱所有通信经过监督者协调
忘记初始化next字段第一次路由失败invoke时必须传入next:'supervisor'

📝 本章小结

核心知识点回顾

知识点关键要点应用场景
createReactAgent快速创建 ReAct 工作者工作者 Agent 的快速搭建
Supervisor 模式中央调度 + 专家分工复杂多步骤任务
Peer-to-Peer 模式Agent 间双向协作辩论、审阅、协商
recursionLimit防止无限循环所有多 Agent 系统
状态转换工作者结果汇入messages多Agent通信
路由控制next字段决定下一步Supervisor决策

🎯 动手练习

练习 1:研究团队

  • 目标:构建"规划者+搜索者+写作者"三 Agent 团队
  • 要求:
    1. 监督者分配任务
    2. 结果汇总后由写作者输出最终报告
    3. 支持多轮迭代优化
  • 验收标准:
    • 给定研究主题,自动生成完整的研究报告
    • 报告结构清晰,内容准确
    • 协作过程可追溯

练习 2:辩论 Agent

  • 目标:两个 Agent 对一个观点进行正反方辩论(3轮)
  • 要求:
    1. 双方各持立场
    2. 每轮针对对方观点反驳
    3. 最后由第三个 Agent 裁判得出结论
  • 验收标准:
    • 3轮辩论后输出裁判结论
    • 辩论逻辑清晰,有理有据
    • 不超过最大轮数限制

练习 3:代码审查团队

  • 目标:4个 Agent 分别负责安全审查、性能审查、可读性审查、最终汇总
  • 要求:
    1. 前三个并行执行
    2. 最后汇总输出综合评分
    3. 每个Agent有专门的检查清单
  • 验收标准:
    • 给定代码,输出四个维度的审查报告
    • 每个维度有具体问题和建议
    • 综合评分客观公正

练习 4:动态工作者注册

  • 目标:实现工作者动态注册和注销
  • 要求:
    1. 监督者能感知可用工作者列表
    2. 运行时可以添加新工作者
    3. 工作者可以主动退出
  • 验收标准:
    • 新增工作者无需修改监督者代码
    • 工作者列表动态更新
    • 系统稳定运行

📚 延伸阅读


下一章:第13章 —— Functional API:函数式工作流

深入浅出LangGraph AI Agent智能体开发教程(一)—全面认识LangGraph 本期分享从LangGraph与LangChain的对比出发,介绍了LangGraph的三层核心架构、完整生态工具,带大家全面认识最火热最全面的智能体开发框架LangGraph。 阅读详情

相关推荐

Langgraph实战-多Agent-主副Agent协同

如果单个Agent需要专门从事多个领域的工作或管理许多工具,它可能会很吃力。为了解决这个问题,你可以将Agent分解成更小的、独立的Agent,并将它们组合成一个多Agent系统。 在多Agent系统中,Agent之间需要相互通信。它们通过 “交接”(handoffs)进行通信。“交接 ”是一种描述将控制权交给哪个Agent以及向该Agent发送有效载荷的基本要素。

zg_hover的专栏 1600

️LangGraph实现基于管理者Agent的Multi-agent(多代理)

使用LangGraph构建图比较简单,但在图中实现多代理,如何将Agent放入节点和如何实现节点间的方向关系以及图的状态机该如何定义是多代理的难点.

huang9604的博客 3807

多Agent系统架构实战:从核心原理到LangGraph/CrewAI框架应用

多Agent系统是分布式人工智能的核心范式,其原理在于通过多个专业化智能体(Agent)的分工与协作,突破单一模型的局限性。每个Agent通常由规划、记忆、工具使用与学习等模块构成,通过结构化通信机制(如消息传递或共享状态)协同工作。这一架构的技术价值在于能够处理更复杂、动态的现实世界任务,例如自动化流程编排、复杂决策支持等。在应用场景上,多Agent系统广泛适用于自动化报告生成、智能客服、数据分析流水线等领域。本文基于LangGraph、CrewAI等主流框架,深入探讨了集中式编排、去中心化协同等架构模式

weixin_34218579的博客 309

如何用LangGraph构建多Agent系统架构,收藏这一篇就够了!!

在这种架构中,我们添加个别Agent作为图节点,并提前定义Agent被调用的顺序,以自定义工作流。显式控制流(普通边):LangGraph允许你通过普通图边显式定义应用程序的控制流(即Agent通信的顺序)。这是上述架构中最确定性的变体——我们总是提前知道接下来将调用哪个Agent。动态控制流(条件边):在LangGraph中,你可以允许LLM决定应用程序控制流的部分。这可以通过使用条件边实现。一个特殊情况是监督者工具调用架构。

bugyinyin的博客 1247

【 Git学习记录(三)】推荐四款主流的Git代码托管平台 —— GitHub、GitLab、Gitee、Coding

了解过Git之后,作为一个程序猿最基本的,你还需要了解目前主流的在线代码托管平台,并至少选择其中一款在平时开发中使用。这里特别介绍以下四款: 国外平台 GitHub —— 全球最流行的代码托管平台 GitLab —— 基于git的仓库管理程序 国内平台 Gitee —— 开源中国旗下的代码托管平台 Coding —— 支持社交元素的代码托管平台 一. GitHub 链接地址:https://github.com/ GitHub目前是全球最流行的代码托管平台(别称:全球最大的同性交友.

JZevin的博客 6092

超实用!用 Ollama + DeepSeek + Dify 搭建本地知识库,提升企业效率

本文介绍了如何使用 Ollama + DeepSeek + Dify 搭建本地知识库,帮助企业高效管理信息。通过简单配置,可实现智能问答、文档检索等功能,提升效率并保障数据安全。

Happiness is everywhere 4294

LangGraph实战教程-多智能体架构(Multi-Agent)

大模型多智能体系统(Large Model Multi-Agent System) 是由多个基于大语言模型(LLM)的智能体(Agent)组成的协作系统。每个智能体具备独立的任务处理能力,通过协同工作解决单一智能体难以完成的复杂问题。其核心特征包括:• 分布式协作:智能体通过通信、协商或竞争实现目标。• 角色分工:不同智能体承担专业角色(如决策者、执行者、验证者)。• 共享状态管理:使用共享内存、消息传递或黑板机制同步信息。• 动态工作流:任务根据上下文在智能体间动态流转。

h1453586413的博客 1967

能量机关 STM32HAL库开发大疆A板WS2812B彩灯(PWM+DMA)

本文主要目的是为了制作RoboMaster比赛能量机关的灯条控制,模拟比赛场中大符,搭建出类似场地道具,以供视觉测试 使用的是RoboMaster开发板A型,芯片为STM32F427IIH6,使用的灯条为WS2812B。 采用PWM+DMA控制,使用CUBEMX配置底层,keil5编辑烧录代码 实现:一共五片扇叶,每片扇叶均实现流水灯+常亮颜色 参考文章在后面会标记出来

m0_51756449的博客 4291

使用LangGraph构建多Agent系统架构!

Agent是一个使用大语言模型决定应用程序控制流的系统。随着这些系统的开发,它们随时间推移变得复杂,使管理和扩展更困难。Agent拥有太多的工具可供使用,对接下来应该调用哪个工具做出糟糕决策上下文过于复杂,以至于单个Agent无法跟踪系统中需要多个专业领域(例如规划者、研究员、数学专家等)。为解决这些问题,你可能考虑将应用程序拆分成多个更小、独立的代理,并将它们组合成一个多Agent系统。这些独立的Agent可以简单到一个提示和一个LLM调用,或者复杂到像一个ReActAgent(甚至更多!

JavaEdge全是干货的技术号 2992

AUTOSAR E2E Protocol实战:Profile1到Profile5的配置差异与最佳实践

本文深入解析AUTOSAR E2E Protocol中Profile1到Profile5的核心配置差异与适用场景。针对经典CAN、CAN FD及以太网等不同总线,详细对比了计数器、CRC、DataID等关键参数,并结合实战代码与配置示例,为工程师根据功能安全等级、数据长度与带宽限制选择最佳Profile提供了清晰的选型路径与工程实践指南。

milk5的博客 944

【教程4>第2章>第19节】 GMSK解调系统的FPGA开发与matlab对比验证

MSK(Minimum Shift Keying,最小频移键控)和GMSK(Gaussian Minimum Shift Keying,高斯最小频移键控)都是数字调制技术,主要用于无线通信系统中将数字信号转换为模拟信号进行传输。它们都是连续相位移键控(Continuous Phase Shift Keying, CPK)的一种形式,意味着相邻码元之间没有相位跳变的突变,而是连续过渡,这有助于减少信号带宽和降低邻道干扰。GMSK的解调过程与MSK类似,我们这里还是采用和MSK解调一样的1bit解调方法。

FPGA/MATLAB学习教程/源码/项目合作开发 1221

LangGraph-多智能体(Multi-agent)

注:以下所提的“文档”,是指LangGraph官方指南(),参考版本是0.6.8。以下代码的概念篇多代理的架构、设计决策、通信模式、handoffs 模式等理论 / 架构层架构(Network / Supervisor / Hierarchical / Handoffs)理解为什么要多代理、如何组织多个 agent代理篇提供多代理的,例如 Supervisor、Swarm库 / API 层create_supervisor、create_swarm、handoff 工具。

czhcc的专栏 1410

ATS Request中的PASID的作用是什么

摘要: PASID(进程地址空间标识符)是PCIe ATS(地址转换服务)中的关键组件,用于标识不同进程或虚拟机的地址空间。其主要作用包括:1)支持多进程共享设备时隔离地址空间;2)实现共享虚拟地址(SVA),允许用户态程序直接访问设备;3)提升虚拟化性能(如SIOV),通过PASID区分虚拟机请求;4)增强安全性,基于PASID限制设备内存访问权限。PASID通过20位标识符在TLP前缀中传递,与IOMMU协作完成地址转换与缓存,适用于高性能计算、AI及虚拟化场景,但依赖硬件支持和软件适配。

元直的博客 1562

【AI大模型】使用LangGraph构建多Agent系统架构

Agent是一个使用大语言模型决定应用程序控制流的系统。随着这些系统的开发,它们随时间推移变得复杂,使管理和扩展更困难。

2301_81940605的博客 1157

手把手教你完成YOLOv11分类识别界面搭建,使用Qt6设计YOLOv11分类识别系统,前台系统+后台管理系统开发实战,全网最详细教程

本项目结合YOLOv11分类识别算法和PySide6框架,开发了一套图形化分类识别系统。系统支持图片、视频和摄像头实时分类检测,并具备完善的用户管理功能,包括登录验证、个人信息修改等模块。最新版本新增了管理员后台管理系统,包含用户管理、权限控制等功能。系统采用MySQL数据库存储用户数据,界面设计采用QtDesigner完成,实现了高效的目标分类与友好的交互体验。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1051

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging )

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging) 如今,大多数可用的显示设备无法本地显示HDR内容。 入门级显示器的对比度仅为200:1。 尽管高端液晶电视具有更高的对比度,但平均对比度约为10,000:1,但通常每个色彩通道的离散度为8位,很少为10位。 这意味着色调限制为255。在过去的二十年中,研究人员花费了大量时间和精力来压缩HDR图像和视频的范围,以便可以在LDR显示器上更“自然”地看到数据。 图3.1 色调映射和真实场景之间.

ISP行业的忠实粉丝 1866

Java面试教程:使用LangGraph构建多Agent系统架构详解

在当今人工智能领域,多Agent系统(MAS)正成为解决复杂问题的重要范式。本文将从技术专家视角,深入解析如何利用LangGraph框架构建高效的多Agent系统架构,帮助开发者掌握这一前沿技术。 ## 多Agent系统基础概念 ### 什么是Agent? Agent本质上是一个基于大语言模型(LLM)的决策系统,它能够自主决定应用程序的控制流程。随着系统复杂度提升,单一Agent往往难以应...

gitblog_00756的博客 678

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

第 3 篇:让 Agent 学会分工,LangGraph 构建多 Agent系统

本篇介绍了如何用 LangGraph 构建多 Agent 协作系统。通过 Dispatcher 进行意图分类和动态路由,将任务分发给多个专业 Agent,支持串行和并行,解决单Agent职责混乱问题。

qq_52732369的博客 450

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LangGraph智能知识库系统架构设计方案 - 多agent架构

本方案基于用户提出的2-Agent架构进行深度优化,提出双系统协作架构🔵分析系统: Supervisor + 3专业Agent + Memory Manager (4+1架构)🟡配置系统: Config Assistant Agent + 4个AI工具全面解决稳定性、性能、Token管理和配置优化四大核心问题。✅高扩展性场景驱动,易于添加新场景提示词模块化,灵活组合Agent可独立扩展✅高稳定性多级缓存机制完善的容错降级Checkpointing断点恢复✅高性能配置预加载。

it_czz的博客 1048

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

深入浅出 LangGraph —— 导读

介绍《深入浅出LangGraph》的写作背景、与《深入浅出LangChain》的关系、目标读者、内容结构与阅读建议。帮助已掌握LangChain基础的工程师顺利进阶到生产级Agent系统开发。

FrontAI的博客 645

深入浅出 LangGraph

专为正在做或想要转入 AI Agent 开发领域的开发者量身打造的技术系列教程。全教程以 LangGraph TypeScript 最新版为核心,带你从零开始,由浅入深,最终具备独立构建生产级 AI Agent 系统的能力。

FrontAI的博客 490
上一篇: 深入浅出 LangGraph —— 第11章:子图:构建模块化Agent
下一篇: DeepSeek Harness 深度架构全解析
FrontAI
博客等级 码龄1年 61粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值