
基于LangGraph的多智能体系统
在这篇文章中,我们将深入分析一个基于LangGraph框架实现的多智能体协作系统。这个系统能够自动完成数据搜索和可视化的任务,是一个展示AI智能体协作的案例。这个项目展示了如何使用现代AI工具构建一个实用的多智能体系统。通过合理的架构设计和工具选择,实现了一个能够自动完成从数据搜索到可视化的完整工作流。
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()
这段代码初始化了三个核心组件:
-
语言模型初始化
-
搜索工具初始化
-
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", )
研究智能体的实现包含两个主要部分:
- 智能体创建:
-
• 使用
create_react_agent
创建智能体 -
• 配置使用GPT-4模型作为基础推理引擎
-
• 配备了Tavily搜索工具
-
• 通过
state_modifier
设置了系统提示,指导代理行为
- 节点函数实现:
-
• 接收当前状态作为输入
-
• 调用智能体处理任务
-
• 将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, )
图表生成智能体的实现细节:
- 智能体配置:
-
• 使用相同的GPT-4模型
-
• 配备Python代码执行工具
-
• 系统提示词包含具体的图表生成要求,特别注明了使用Matplotlib的配置要求
- 节点函数特点:
-
• 处理状态并生成图表
-
• 使用
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()
工作流配置的详细说明:
-
图初始化:创建基于
MessagesState
的状态图,MessagesState
用于追踪消息历史 -
节点添加:
-
• 添加研究者节点
-
• 添加图表生成器节点
-
• 使用节点名称作为唯一标识
- 边配置:
-
• 设置工作流起点为研究者节点
-
• 通过之前的
goto
参数隐式定义其他边
- 图编译:将配置编译为可执行的工作流图
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)
执行流程的关键点:
- 初始化参数:
-
• 设置初始消息为用户查询
-
• 消息包含明确的任务描述和结束条件
- 流程控制:使用
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 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
更多推荐
所有评论(0)