AI创想

标题: LangGraph实战项目:从零手搓DeepResearch(三)——LangGraph多智能体搭建与部署 [打印本页]

作者: 米落枫    时间: 12 小时前
标题: LangGraph实战项目:从零手搓DeepResearch(三)——LangGraph多智能体搭建与部署
作者:大模型真好玩
前言

上篇文章《LangGraph实战项目:从零手搓DeepResearch(二)——DeepResearch架构设计与实现》详细分享了如何基于 Pipeline-Agent 架构编写多智能体,实现了一个完整的 DeepResearch 应用。该系统通过任务规划、网络搜索和报告生成三个核心智能体的协同工作,通过代码完成了从问题分析到研究报告生成的全流程。
不过,上篇文章结尾留下了一个值得思考的问题:既然身处 LangChain/LangGraph 的开发环境,而 LangGraph 本身就是一个天然的多智能体框架,为什么不直接利用它来整合这三个智能体,构建更优雅的多智能体应用呢?本期文章就来深入探讨如何利用 LangGraph 的图模式重新构建 DeepResearch 多智能体应用,并将最终成果部署为可访问的 Web 服务。让我们一起来看看这个升级过程吧!
《深入浅出LangChain&LangGraph AI Agent 智能体开发》专栏内容源自笔者在实际学习和工作中对 LangChain 与 LangGraph 的深度使用经验,旨在帮助大家系统性地、高效地掌握 AI Agent 的开发方法,在各大技术平台获得了不少关注与支持。目前基础部分已更新 21 讲,接下来将重点推出实战项目篇,并随时补充笔者在实际工作中总结的拓展知识点。如果大家感兴趣,欢迎关注笔者的CSDN账号与专栏,也可关注笔者的同名微信公众号 大模型真好玩,每期分享涉及的代码均可在公众号私信: LangChain智能体开发免费获取。
(, 下载次数: 0)


一、 LangGraph多智能体图结构封装

接下来,我们将上篇文章中编写的三个智能体——任务规划智能体、网络搜索智能体和报告生成智能体使用 LangGraph 封装成一个完整的图结构。
该图共包含五个节点:
节点之间的连接顺序为:
任务规划智能体 → 网络搜索智能体 → 报告生成智能体
以下的代码会涉及到比较多的LangGraph底层图搭建的基本内容,不太了解的大家可参考笔者文章 深入浅出LangGraph AI Agent智能体开发教程(六)—LangGraph 底层API入门。下面是具体步骤:
  1. from langchain_core.runnables import Runnable
  2. from langgraph.graph import StateGraph, MessagesState, START, END
复制代码
这里的MessageState是LangGraph内置的State类型,其源码结构如下:(与笔者在文章《深入浅出LangGraph AI Agent智能体开发教程(八)—LangGraph底层API实现ReACT智能体》中多轮对话机器人实现一致,通过列表保存上下文消息)
  1. classMessagesState(TypedDict):
  2.     messages: Annotated[list, add_messages]
复制代码
  1. defplanner_node(state: MessagesState):
  2.     user_query = state['messages'][-1].content
  3.     raw = planner_chain.invoke({'query': user_query
  4.     })# 这里要注意的是 执行结果可能是WebSearchPlan类型,也可能是字典类型(被python解析了), 为了严谨性,这里加一个捕捉一场逻辑try:
  5.         plan = parse_obj_as(WebSearchPlan, raw)except ValidationError:ifisinstance(raw,dict)andisinstance(raw.get('searches'),list):
  6.             plan = WebSearchPlan(
  7.                 searches =[WebSearchItem(query=q, reason=r)for q,r in raw['searches']])else:raisereturn{'plan': plan,# 保存原生对象到状态中,后面节点也可以直接使用'messages':[AIMessage(content=plan.model_dump_json())]}
复制代码
  1. defsearch_node(state: MessagesState):
  2.     plan_json = state["messages"][-1].content
  3.     plan = WebSearchPlan.model_validate_json(plan_json)
  4.     summaries =[]for item in plan.searches:
  5.         run = search_agent.invoke({"messages":[HumanMessage(content=item.query)]})
  6.         msgs = run['messages']# 取可读内容:也就是最后一条ToolMessage 或 AIMessage的内容
  7.         readable =next((m for m inreversed(msgs)ifisinstance(m,(ToolMessage, AIMessage))), msgs[-1])
  8.         summaries.append(f'## {item.query}\n\n{readable.content}')
  9.     combined ="\n\n".join(summaries)return{'messages':[AIMessage(content=combined)]
复制代码
  1. defwriter_node(state: MessagesState):
  2.     original_query = state['messages'][0].content
  3.     combined_summary = state['messages'][-1].content
  4.     writer_input =(f'原始问题: {original_query}\n\n'f'搜索摘要:\n{combined_summary}')
  5.     report:ReportData = writer_chain.invoke({'content': writer_input})return{'messages':[AIMessage(content=json.dumps(report.dict, ensure_ascii=False, indent=2))]}
复制代码
  1. # 构建图
  2. builder=StateGraph(MessagesState)
  3. builder.add_node("planner node", planner_node)
  4. builder.add_node("search node",search_node)
  5. builder.add_node("writer node", writer_node)
  6. builder.add_edge(START,'planner_node')
  7. builder.add_edge('planner_node','search_node')
  8. builder.add_edge('search_node','writer_node')
  9. builder.add_edge('writer_node', END)
  10. graph = builder.compile()
复制代码
  1. initial_state ={'messages':[HumanMessage(content='请生成一份关于人工智能伦理的研究报告')]}
  2. final_state = graph.invoke(initial_state)print(final_state['messages'][-1].content)
复制代码
可以看到智能体成功输出了一份指定格式的报告内容:
(, 下载次数: 0)


二、多智能体应用部署

除了使用 LangGraph 框架整合三个智能体外,还需要进一步完善应用功能。目前的应用还停留在代码运行层面,距离真正的可用产品还有差距。该项目的目标是将构建好的智能体打包上线,让用户能够通过前端界面实时体验其运行效果。
下面笔者将利用 LangGraph 的技术生态,快速完成 DeepResearch 多智能体应用的打包和部署。这部分内容在笔者的教程中已有详细讲解,具体步骤可参考:深入浅出LangGraph AI Agent智能体开发教程(五)— LangGraph 数据分析助手智能体项目实战
2.1 后端服务部署

2.2 前端界面部署

部署好后端服务后我们还需要为当前后端接入一个前端页面,详细步骤如下:
(, 下载次数: 0)


三、总结与展望

本文详细演示了如何利用LangGraph构建包含任务规划、网络搜索和报告生成三个智能体的DeepResearch应用,并完成了前后端一体化部署。通过图结构封装和多节点协同,实现了从问题输入到研究报告生成的全流程自动化。这里还是要说一句,当前实现的DeepResearch仅为基础版本,其实目前业界已有多种成熟的架构设计。下一期笔者将深入解析主流的DeepResearch开源架构,并分享如何高效阅读和理解复杂智能体的源码实现,帮助大家掌握更高级的多智能体系统设计模式。大家敬请期待。
《深入浅出LangChain&LangGraph AI Agent 智能体开发》专栏内容源自笔者在实际学习和工作中对 LangChain 与 LangGraph 的深度使用经验,旨在帮助大家系统性地、高效地掌握 AI Agent 的开发方法,在各大技术平台获得了不少关注与支持。目前基础部分已更新 21 讲,接下来将重点推出实战项目篇,并随时补充笔者在实际工作中总结的拓展知识点。如果大家感兴趣,欢迎关注笔者的CSDN账号与专栏,也可关注笔者的同名微信公众号 大模型真好玩,每期分享涉及的代码均可在公众号私信: LangChain智能体开发免费获取。

原文地址:https://blog.csdn.net/weixin_42782643/article/details/153705324




欢迎光临 AI创想 (https://www.llms-ai.com/) Powered by Discuz! X3.4