系统构建背景
在数据库运维场景中,往往需要同时承载实时状态监控、线上故障定位排查、系统性能分析与优化诊断等多项复杂工作。面对这类多任务、多流程、步骤嵌套的复杂业务场景,单智能体架构存在能力局限,难以同时兼顾任务拆解、精准执行、流程串联与结果输出,无法满足规模化、高复杂度的运维工作需求。
基于此,本文依托 LangGraph 框架搭建多智能体协同运维体系。通过职责拆分的方式,将繁杂的数据库运维工作拆解为多个专精型智能体,并由统一的调度管理智能体完成全局统筹、任务分发与流程管控,以此构建一套高可控、高效率、可横向扩展的数据库智能运维系统。

1.1 多智能体角色分工设计
系统采用分工协作的模块化智能体设计,不同智能体各司其职、相互配合,整体分为数据运维、报告生成、全局调度三类核心角色,具体职责如下:
数据库运维智能体(dbhub)
专注承担数据库底层运维数据采集与基础运维操作。主要负责实时拉取数据库核心运行指标,包含数据库连接数、慢查询日志、表空间占用率、缓存命中率等关键监控数据,同时支持执行常规、安全的数据库运维指令,为上层分析与报告提供原始数据支撑。
运维报告智能体(report)
依托数据库运维智能体采集的全量指标数据,完成数据整理、分析归纳与内容输出。可自动生成结构化运维成果,支持纯文本、Markdown、JSON 等多种格式的运维报告,并结合当前数据库运行状态,输出针对性的性能优化、风险规避与运维调优建议。
全局调度智能体(supervisor)
作为整个多智能体系统的核心中枢,负责接收用户自然语言运维指令,自主完成任务解析、智能体选择、参数下发与流程编排。可根据业务需求串联多阶段任务,例如先调用运维智能体采集数据,再触发报告智能体生成分析文档,同时实时判断任务执行状态,确认流程是否完成、是否需要迭代执行或直接结束任务。
整套系统基于 LangGraph 构建有向任务流转图谱,通过统一全局状态实现多智能体之间的数据互通与任务流转。以 Supervisor 调度节点为核心中枢,根据实时任务状态动态决策下一步执行逻辑,智能调度 DB 运维智能体、报告生成智能体开展对应工作,或判定任务完结、终止流程,实现数据库运维全流程自动化、智能化闭环。
1.2 环境准备与依赖
创建虚拟环境并安装依赖:
pip install langgraph langchain langchain-openai fastapi uvicorn python-dotenv
构建过程
2.1 实现状态模型(State)
状态是整个多智能体系统的核心数据结构。我们需要存储对话历史、中间结果、当前任务、报告内容等。
2.2 模拟数据库运维工具
创建一个模拟的数据库状态类,提供常用的运维指标查询功能。可以将其替换为真实的数据库连接。
2.3 定义节点
1.DB Assistant 节点
负责执行数据库操作,将结果存入 state["db_data"]。这里支持两种模式:获取指标或执行维护命令。
DB Assistant 节点首先读取用户查询,根据关键词决定执行哪种数据库操作。实际操作中可以使用 LangChain 的工具调用(Tool Calling)让 LLM 选择函数。这里用简单的条件判断演示,重点展示状态流转。完成后将 next_agent 设为 supervisor,控制权交还给调度器。
2.Report Assistant 节点
基于 state["db_data"] 生成格式化报告,支持 Markdown 格式。
报告节点不直接与用户交互,而是纯数据处理。它读取 state["db_data"],构造一个 Markdown 报告,并存入 state["report"]。
3.Supervisor 节点(核心调度器)
Supervisor 是整个系统的“大脑”。分析当前状态(包括用户查询和历史对话)决定下一步调用哪个智能体或结束流程。
Supervisor 节点读取 user_query 和已有的 db_data/report,判断下一步动作。当使用 LLM 时,构造一个包含上下文的提示,让模型选择智能体。
2.4 构建 LangGraph 工作流
把节点和边组合起来,形成多智能体协作图。
add_conditional_edges 让 supervisor 根据路由函数跳转到不同智能体。每个智能体执行完毕后,通过 add_edge 强制返回 supervisor,形成闭环,直到 supervisor 决策 END 终止。
2.5 部署为 FastAPI 应用
为了能够直接对外服务,使用 FastAPI 封装一个 /chat 端点,接收用户查询并返回最终结果。
2.6 运行示例
将以上所有代码块按顺序合并到一个文件(如 db_multi_agent.py)中,安装依赖后运行。
下面是交互式命令行测试的辅助函数:

537

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



