基于LangGraph的多智能体系统

LangGraph 怎么控制递归次数 这一节我们讲讲langgraph图的递归限制 Recursion Limit,递归限制设置了图在单次执行过程中可以执行的最大超级步骤数。一旦达到该限制,LangGraph 将引发 GraphRecursionError 错误。默认情况下,此值设置为 25 步。递归限制可以在运行时为任何图进行设置,并通过配置字典传递给 .invoke 或 .stream 方法。需要注意的是,recursion_limit 是一个独立的配置键,不应像其他用户定义的配置那样放在 configurable 键内部。 阅读详情

0. 前言

在这篇文章中,我们将深入分析一个基于LangGraph框架实现的多智能体协作系统。这个系统能够自动完成数据搜索和可视化的任务,是一个展示AI智能体协作的案例。

1. 环境配置与依赖导入

from dotenv import load_dotenv   load_dotenv()  # take environment variables from .env.      from typing import Annotated, Literal   from langchain_community.tools.tavily_search import TavilySearchResults   from langchain_core.tools import tool   from langchain_experimental.utilities import PythonREPL   from langchain_core.messages import BaseMessage, HumanMessage   from langchain_openai import ChatOpenAI   from langgraph.prebuilt import create_react_agent   from langgraph.graph import MessagesState, END   from langgraph.types import Command   from langgraph.graph import StateGraph, START

这部分代码导入了系统所需的所有依赖包:

  • • dotenv:用于从.env文件加载环境变量,通常用于存储API密钥等敏感信息

  • • load_dotenv():执行环境变量加载

2. 核心组件初始化

llm = ChatOpenAI(model="gpt-4o")   tavily_tool = TavilySearchResults(max_results=5)   repl = PythonREPL()

这段代码初始化了三个核心组件:

  1. 语言模型初始化

  2. 搜索工具初始化

  3. Python执行环境:PythonREPL():创建Python代码执行环境,用于执行数据可视化相关的代码

3. Python代码执行工具

`@tool   def python_repl_tool(    code: Annotated[str, "The python code to execute to generate your chart."],):       """执行 Python 代码"""       try:           result = repl.run(code)       except BaseException as e:           return f"Failed to execute. Error: {repr(e)}"       result_str = f"Successfully executed:\n\`\`\`python\n{code}\n\`\`\`\nStdout: {result}"       return (           result_str + "\n\nIf you have completed all tasks, respond with FINAL ANSWER."       )`

这是一个关键的工具函数,使用@tool将函数注册为LangChain工具,用于执行Python代码。

4. 系统提示词生成器

def make_system_prompt(suffix: str) -> str:       return (           "You are a helpful AI assistant, collaborating with other assistants to solve a task."           "IMPORTANT: If you have the final answer or deliverable, response with 'FINAL ANSWER'."           f"\n{suffix}"       )

这个函数生成智能体的系统提示词,定义智能体的基本角色和协作性质,使用"FINAL ANSWER"指令来标记完成任务。

5. 智能体节点转换逻辑

def get_next_node(last_message: BaseMessage, goto: str):       if "FINAL ANSWER" in last_message.content:           return END       return goto

这个函数控制工作流的流转逻辑,检查消息内容中是否包含"FINAL ANSWER",如果包含,则结束整个工作流。

6. 研究智能体实现

research_agent = create_react_agent(       llm,       tools=[tavily_tool],       state_modifier=make_system_prompt(           "You should search for accurate data to use"       ),   )      def research_node(    state: MessagesState,) -> Command[Literal["chart_generator", END]]:       result = research_agent.invoke(state)       result["messages"][-1] = HumanMessage(           content=result["messages"][-1].content, name="researcher"       )       return Command(           update={               "messages": result["messages"],           },           goto="chart_generator",       )

研究智能体的实现包含两个主要部分:

  1. 智能体创建:
  • • 使用create_react_agent创建智能体

  • • 配置使用GPT-4模型作为基础推理引擎

  • • 配备了Tavily搜索工具

  • • 通过state_modifier设置了系统提示,指导代理行为

  1. 节点函数实现:
  • • 接收当前状态作为输入

  • • 调用智能体处理任务

  • • 将AI消息转换为人类消息(确保兼容性,并非所有提供商都允许在输入消息列表的最后位置放置AI消息)

  • • 返回使用update更新后的消息和下一步goto指令

7. 图表生成智能体实现

chart_agent = create_react_agent(       llm,       tools=[python_repl_tool],       state_modifier=make_system_prompt(           "Generate and Run the python code to display the chart"           "Matplotlib code should add: import matplotlib;matplotlib.use('Agg'), in the first line."           "File should save to current directory."       ),   )      def chart_node(state: MessagesState) -> Command[Literal["researcher", END]]:       result = chart_agent.invoke(state)       goto = get_next_node(result["messages"][-1], "researcher")       result["messages"][-1] = HumanMessage(           content=result["messages"][-1].content, name="chart_generator"       )       return Command(           update={               "messages": result["messages"],           },           goto=goto,       )

图表生成智能体的实现细节:

  1. 智能体配置:
  • • 使用相同的GPT-4模型

  • • 配备Python代码执行工具

  • • 系统提示词包含具体的图表生成要求,特别注明了使用Matplotlib的配置要求

  1. 节点函数特点:
  • • 处理状态并生成图表

  • • 使用get_next_node决定流程走向

  • • 同样将AI消息转换为人类消息

  • • 返回消息更新和流程指令

8. 工作流配置

workflow = StateGraph(MessagesState)   workflow.add_node("researcher", research_node)   workflow.add_node("chart_generator", chart_node)   workflow.add_edge(START, "researcher")   graph = workflow.compile()

工作流配置的详细说明:

  1. 图初始化:创建基于MessagesState的状态图,MessagesState用于追踪消息历史

  2. 节点添加:

  • • 添加研究者节点

  • • 添加图表生成器节点

  • • 使用节点名称作为唯一标识

  1. 边配置:
  • • 设置工作流起点为研究者节点

  • • 通过之前的goto参数隐式定义其他边

  1. 图编译:将配置编译为可执行的工作流图

9. 执行流程

for step in graph.stream(       {           "messages": [               (                   "user",                   "First, search the China's GDP over the past 5 years, then make a line chart of it. "                   "Once you make the chart, finish.",               )           ],       },       {"recursion_limit": 10},   ):       print(step)       print('-' * 20)

执行流程的关键点:

  1. 初始化参数:
  • • 设置初始消息为用户查询

  • • 消息包含明确的任务描述和结束条件

  1. 流程控制:使用recursion_limit限制最大步数,防止无限循环

10. 结果展示

智能体代理自动生成的图表:

我们可以在langsmith(https://smith.langchain.com/)中查看追踪执行流程,需要先在环境变量中配置你的langsmith api key:

LANGSMITH_TRACING="true"   LANGSMITH_API_KEY="your key"

查看智能体搜索到的数据和生成的代码:

11. 总结

这个项目展示了如何使用现代AI工具构建一个实用的多智能体系统。通过合理的架构设计和工具选择,实现了一个能够自动完成从数据搜索到可视化的完整工作流。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(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 的正确特征了。

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

在这里插入图片描述

Langgraph译文2:多智能体系统 本文介绍了多智能体系统的概念、架构及实现方式。 阅读详情

相关推荐

从零到一构建多智能体系统:LangGraph 实现智能协作的完整路径

现在正是开始探索和实践多智能体架构的最佳时机——技术工具已经成熟,应用需求日益明确,市场机遇前所未有。让我们共同迎接AI协作系统的崭新时代。

dmx123789的博客 897

1. langgraph的可控性 (How to control graph recursion limit)

我们定义一个State类型,它是一个TypedDict,包含一个aggregate键,其值是一个列表,并且使用作为归约函数,使其具有追加功能。接下来,我们定义四个节点函数,每个函数都接受一个状态并返回一个新的状态。node_anode_b和node_c分别向状态中的aggregate列表追加字符串。node_d打印 “I’m D” 并向aggregate列表追加 “I’m A”。通过本教程,我们学习了如何使用langgraph库构建和执行一个状态图。

The cure for boredom is curiosity. This is the log of its adventures. 1758

在生产环境中使用 LangGraph 开发多智能体系统

本文介绍了基于LangGraph框架构建航空公司客户支持自动化多智能体系统的完整方案。系统通过多个智能体协作处理三类典型查询:航班状态查询、航班改签和退款申请。文章详细阐述了系统架构设计,包括状态定义、智能体分工(意图识别、航班查询、预订更新等)以及工具集成方法。教程内容涵盖环境配置、状态管理、工具开发、智能体实现等核心环节,并提供了模拟API代码示例。该系统支持状态持久化、人工干预和错误恢复,适用于企业级生产环境部署,为开发复杂AI协作系统提供了实用参考。

公众号:AI前沿侦探 210

LangGraph中使用Reflection机制填坑

我在LangGraph框架搭建的智能体中引入了Reflection机制,程序运行报错:Recursion Error 原因是图中的某些节点之间循环次数过多超过了图计算步数的限制,例如审查一直达不到标准,不断地审查-修改-审查。下面将简单介绍一下LangGraph的递归限制和如何控制图执行过程中节点之间的循环次数,避免陷入太多的循环。

weixin_44907479的博客 962

电源新手别怕!手把手教你搞定Buck电路的环路补偿(附Type II/III补偿器参数计算)

本文为电源设计新手详细解析Buck电路环路补偿技术,重点介绍Type II和Type III补偿器的参数计算与设计方法。通过实例演示和实用技巧,帮助工程师快速掌握环路补偿原理,解决电源振荡、响应慢等问题,提升电路稳定性与性能。

weixin_30607029的博客 618

绕过卡巴斯基通过RPC控制lsass注入DLL

参考国外的XPN以及3gstudent大佬的文章: https://blog.youkuaiyun.com/xiangshen1990/article/details/104872566 https://gist.github.com/xpn/93f2b75bf086baf2c388b2ddd50fb5d0 原理:正常的ssp扩展(dll)可以加载到lsass进程中去,比如kerberos验证都是通...

2ed 3524

带LangGraph的多智能体工作流

大型语言模型(LLMs)的出现重塑了AI系统与世界互动和解释的方式。传统上,单个智能体架构被用来处理输入、做出决策并产生输出。然而,随着AI系统规模的扩大,以处理更多复杂、多步骤的任务,研究人员和开发人员越来越多地转向多智能体系统和先进的图结构架构。得益于LangChain和LangGraph等框架的支持,这些创新使得更加灵活、可扩展且协作的AI系统能够执行复杂的任务。

m0_59235945的博客 2797

傅里叶变换实战:用Python手把手教你分析音频频谱(附完整代码)

本文详细介绍了如何使用Python实现傅里叶变换进行音频频谱分析,涵盖音频加载、预处理、FFT应用、频谱可视化及特征提取等关键步骤。通过实战案例和完整代码,帮助开发者掌握数字信号处理技术,特别适合音频分析和音乐信息检索领域的应用。

weixin_29090677的博客 150

langchain系列(终)- LangGraph 多智能体详解

本文主要写了LangGraph实现多代理(多智能体)的概念、原理、代码实现,除此之外还是用了函数API的方式来实现功能

forevercui的博客 5120

为什么类型论是函数式编程的理想基础?

函数式编程(如Haskell、Scala、OCaml)以“函数为核心”“无副作用”“不可变数据”等特性著称,但它的“安全高效”并非凭空而来——背后的关键支撑是类型论。本文将聚焦“类型论如何支撑函数式编程”,从基础概念到具体案例,解释两者的本质联系。本文将按“故事引入→核心概念解释→关系拆解→原理+代码案例→实际应用→总结”的逻辑展开,用“乐高积木”“菜谱”等比喻贯穿全文,确保抽象理论可视化。类型论:程序的“接口规则手册”,定义类型和函数的约束;函数式编程。

AI天才研究院 694

OpenMontage:AI代理驱动的端到端视频生产系统实战指南

在当今内容创作领域,自动化视频生成技术正成为提升生产效率的关键。其核心原理在于通过智能体(Agent)架构,将复杂的视频制作流程拆解为可被AI理解和执行的标准化任务,从而实现从创意到成片的端到端自动化。这项技术的核心价值在于大幅降低了专业视频制作的门槛,使非专业用户也能快速产出具有一定专业度的内容。其典型应用场景包括社交媒体短片、产品演示、知识科普视频的批量生产。OpenMontage正是这一技术理念的杰出实践,它构建了一个完整的代理驱动视频生产系统,将AI编码助手转变为能自主规划并执行脚本撰写、素材检索、

weixin_35757191的博客 648

如何使用Dify+LangGraph构建企业级多智能体系统

使用。

bagell的博客 1196

运放专题:运算放大电路中的相位补偿

的方法

五花带点肉 2万+

如何用LangGraph打造Web Research多智能体系统

先用摘要推理:不会一开始就爬取完整页面内容,而是先基于搜索摘要(snippets)进行推理按需获取全文:只有当摘要推理不够时,智能体才会请求完整内容显著节省Token:这种方法大大减少了Token使用量,同时保持研究质量Exa的深度研究智能体案例展示了LangGraph在构建生产级复杂多智能体系统方面的能力。通过LangGraph的协调能力和LangSmith的可观测性特性,Exa构建了一个高效可靠的系统,能处理真实客户查询并交付实际业务价值。

yanqianglifei的专栏 1105

【案例讲解】LVGL关于旋转的配置

在实现项目中,因为横竖屏的关系,需要对其做90度的旋转。配置旋转时发现一些局部刷新控件,旋转后效果不对。异常图标正常图标。

Bigan(安)的博客 4284

自注意力机制(SelfAttention Mechanism)原理与代码实战案例讲解

自注意力机制(Self-Attention Mechanism)原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍

AI天才研究院 1290

智能体集结!用LangGraph与GPT-4构建多智能体系统

正如我们所见证的,使用LangGraph与GPT-4构建多智能体系统不仅可行——简直令人振奋!当AI智能体协同作战时,我们仅仅触及了可能性的冰山一角。人工智能的未来不仅关乎单个超强模型,更在于创建能够协作、专精与适应的智能系统。那么,你将用这支崭新的AI梦之队创造什么?唯一的限制就是你的想象力(或许还有API额度,不过现在先别想这个)。请记住,在多智能体系统的世界里,你不仅是开发者——更是AI乐团的总指挥。所以,去谱写属于你的数字魔法乐章吧!

九十分的博客 909

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LangGraph的多智能体系统 (MAS)

本文介绍了一个用于旅行预订的多智能体系统(MAS),通过代理间协作处理综合预订请求。系统采用移交机制(Handoff Pattern)实现代理间的控制流转,无需中央调度器。主要特点包括: 系统包含航班和酒店预订两个代理,可相互移交控制权 每个代理配备专用工具(如book_flight、book_hotel)和移交工具 移交工具通过Command对象实现节点跳转,保留完整对话历史 使用create_react_agent创建智能代理,具备思考(ReAct)能力 案例演示了用户提交包含航班和酒店需求的请求时,f

Michael的博客 725

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LangGraph多智能体系统构建指南:从单体瓶颈到协作突破

多智能体系统通过将复杂问题拆解为可治理的自治单元,解决单体智能体的工具过载、上下文负担和领域专精冲突等问题。LangGraph提供五种典型架构(网络、监督者、层级等),支持显式交接协议(Command)和状态管理,实现模块化、专精化和可控性。文章详细介绍了三种交接模式的代码实现及工程化落地要点,建议从简单模式起步,逐步演进至复杂架构。

yihanss的博客 1017

LangGraph 多智能体系统:从概念到实战的权威指南

文章摘要:多智能体架构与LangGraph应用 本文探讨了从单一智能体转向多智能体架构的必要性和优势。单一智能体在面对复杂任务时容易产生认知过载,而多智能体系统通过模块化分工显著提升性能、可控性和可维护性。文章详细介绍了LangGraph框架的核心概念:状态管理(State)、节点(Nodes)和边(Edges),以及实现智能体间通信的Command对象机制。此外,还分析了三种典型协作架构模式(网络、层级和自定义)的特点,重点比较了主管模式与蜂群模式在中心化协调和去中心化协作方面的差异。LangGraph通

炼丹上岸 1820

LangGraph Swarm (Python):构建蜂群式多智能体系统

默认情况下,期望各个智能体通过所有智能体和整个多智能体蜂群图共享的单个消息键进行通信。这意味着来自所有智能体的所有消息将合并到单个共享消息列表中。如果你不希望公开智能体的内部消息历史记录,这可能不是理想的选择。要更改此设置,你可以通过执行以下步骤来自定义智能体:• 使用自定义状态模式,其中消息使用不同的键,例如 alice_messages• 编写一个包装器,用于将父图状态转换为子智能体状态,然后再转换回来。

qq_46094651的博客 1941

多智能体系统入门到精通:构建LangGraph主管模式应用

本文系统阐述了多智能体系统(Multi-Agent Systems)的设计架构,重点分析了工具调用(集中式)和交接(去中心化)两种协作模式。通过主管模式(Supervisor Pattern)的实践案例,展示了如何构建专业化分工的多智能体系统,实现复杂任务的协同处理。文章还涉及多级结构、上下文管理等高级特性,为开发者构建高效的大模型应用提供了实用指导。

2401_84495872的博客 938

LangGraph:构建有状态多智能体系统的终极框架指南

在当今快速发展的AI应用生态中,构建能够长期运行、具备记忆能力且支持复杂协作的智能体系统已成为开发者面临的核心挑战。LangGraph作为GitHub上备受推荐的开源框架,为这一难题提供了优雅的解决方案。这个强大的多智能体编排框架让开发者能够轻松创建复杂的智能体工作流,实现真正的协作式人工智能应用。 ## 为什么选择LangGraph框架? LangGraph在GitHub上获得高度推荐并非偶

gitblog_00906的博客 703

多智能体系统和LangGraph如何改变内容创作

想象一个这样的世界,撰写高质量文章只需要一半的时间,由专门的AI代理协同进行研究、起草和精炼内容。这并非科幻小说中的情节;多智能体系统已经使这一设想成为现实。这些系统由专门的程序或代理组成,每个代理都针对任务的某个特定方面进行设计。代理从大纲到最终草稿的每一阶段都会进行协作,从而实现更快速和更高质量的结果。LangGraph是一个强大的工具,用于协调这些代理,同步他们的任务,并促进无缝沟通。然而,即使有智能代理,人类参与仍然是确保内容不仅正确,而且对读者来说引人入胜所必需的。

Everly_的博客 954

【必学收藏】LangGraph实战:从单智能体到多智能体系统构建指南

本文详细介绍了如何使用LangGraph构建单智能体和多智能体系统,用于科技研究任务。作者通过对比两种架构,展示了它们在信息挖掘和处理能力上的差异。文章提供了完整的代码实现和运行指南,强调了结构化数据的重要性,以及系统设计对AI agent性能的影响。通过实际案例,帮助读者理解不同架构的优缺点和适用场景。

bugyinyin的博客 1049
上一篇: Nature|AI多模态大模型精准预测免疫治疗效果!斯坦福李瑞江团队引领肿瘤治疗新时代!
下一篇: 支持DeepSeek, 这个爆火开源Agent要颠覆RPA
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值