【AI问数·技术】多Agent协同架构:查询规划/SQL生成/洞察分析/报告生成

单一模型"一步到位"生成SQL+分析+报告的模式,在复杂场景下准确率和质量都会急剧下降。鲲溟智能采用多Agent协同架构,将"理解→生成→分析→表达"拆解为4个专业化Agent,各司其职、相互校验、协同工作。本文深度解析每个Agent的职责、输入输出、协同机制和工程实现。


📖 导读

一个真实场景:用户问"帮我分析一下上个月经营情况,和去年同期对比,找出主要问题,给出改善建议"。

这个问题需要:①理解"经营情况"包含哪些指标;②生成多条SQL(收入/成本/利润/客户/产品);③执行查询并对比同比数据;④分析差异、归因;⑤生成结构化报告+可视化+建议。

如果让一个模型"一口气"完成,结果往往是:SQL写错、分析肤浅、建议空泛。但如果拆成4个专家Agent协作------规划师、SQL工程师、分析师、报告撰写人------每个环节都能做到专业级水准。

关键词:多Agent架构、Agentic Analytics、NL2SQL、协同推理、查询规划、鲲溟智能


一、为什么需要多Agent?

1.1 单Agent的局限性

1.2 鲲溟智能四Agent架构总览


二、Agent 1:查询规划(Query Planner)

2.1 职责

将用户的自然语言问题转化为结构化的"查询计划"------决定查什么、怎么查、分析什么。

2.2 工作流程

2.3 规划策略

意图类型 子任务数 分析深度 典型耗时
简单查询 1 <3秒
对比分析 2-3 对比+差异 5-10秒
归因分析 4-6 多维拆解+因素 15-30秒
综合报告 8-12 全景分析+归因+建议 2-5分钟
预测分析 3-5 趋势+模型+区间 10-20秒

三、Agent 2:SQL生成(SQL Generator)

3.1 职责

按照查询计划,逐条生成SQL,自校验后执行,返回结果集。

3.2 工作流程

3.3 并行执行优化

python 复制代码
# 多条SQL的并行执行策略
class SQLExecutor:
    def execute_plan(self, plan):
        # 1. 依赖分析:哪些SQL可以并行?
        #    无依赖关系的SQL并行执行
        #    有依赖的(如需要前一条结果作为条件)串行

        independent_tasks = self.find_independent(plan.tasks)
        dependent_tasks = self.find_dependent(plan.tasks)

        # 2. 并行执行独立任务(通常5-8条可以并行)
        results = parallel_execute(independent_tasks, max_workers=5)

        # 3. 串行执行依赖任务
        for task in dependent_tasks:
            result = self.execute_with_context(task, results)
            results[task.id] = result

        # 4. 结果汇总
        return results

四、Agent 3:洞察分析(Insight Analyst)

4.1 职责

对查询结果进行深度分析:发现异常、对比差异、归因分析、生成建议。

4.2 分析能力矩阵

分析类型 输入 方法 输出
趋势分析 时间序列数据 环比/同比/趋势线 "连续3个月下降"
异常检测 多维数据 统计阈值/孤立森林 "华东区异常偏离"
对比分析 多组数据 差异计算/排名 "A比B高15%"
归因分析 差异+维度数据 贡献度分解/因素拆解 "主因是X(贡献60%)"
相关分析 多指标数据 相关性/因果推断 "与Y强相关(r=0.85)"
建议生成 分析结论+知识库 规则匹配/案例推理 "建议采取Z措施"

4.3 归因分析示例

4.4 洞察质量标准

python 复制代码
# 洞察质量评估标准
class InsightQuality:
    def evaluate(self, insight):
        criteria = {
            # 1. 数据支撑:每个结论必须有数据依据
            "data_backed": insight.has_specific_numbers,

            # 2. 可操作性:建议是否具体可执行
            "actionable": insight.has_specific_actions,

            # 3. 优先级:是否标注了重要程度
            "prioritized": insight.has_priority_ranking,

            # 4. 因果而非相关:是否区分了因果和相关
            "causal_not_correlational": insight.distinguishes_causation,

            # 5. 量化影响:是否量化了影响大小
            "quantified_impact": insight.has_impact_numbers,
        }

        # 不合格的洞察不输出(宁缺毋滥)
        if not all(criteria.values()):
            return self.refine(insight)  # 要求重新分析

        return insight

五、Agent 4:报告生成(Report Writer)

5.1 职责

将分析结果转化为用户友好的结构化报告:选图表、写文字、排结构。

5.2 报告结构模板

5.3 智能图表选择

数据特征 推荐图表 选择逻辑
时间趋势 折线图 有时间轴+连续变化
分类对比 柱状图 离散类别+数值对比
占比构成 饼图/环形图 部分vs整体(≤7类)
多维对比 雷达图 3+维度综合评价
分布特征 直方图/箱线图 数据分布+离群值
相关关系 散点图 两变量相关性
排名 横向柱状图 排名+数值
流程转化 漏斗图 阶段转化率

六、Agent间协同机制

6.1 消息传递协议

python 复制代码
# Agent间通信消息格式
class AgentMessage:
    from_agent: str        # 发送方
    to_agent: str          # 接收方
    msg_type: str          # "task" / "result" / "feedback" / "error"
    payload: dict          # 具体内容
    trace_id: str          # 全链路追踪ID
    timestamp: datetime

# 示例:Planner → SQL Generator
msg = AgentMessage(
    from_agent="query_planner",
    to_agent="sql_generator",
    msg_type="task",
    payload={
        "task_id": "T001",
        "description": "查询本月各区域营收及同比",
        "metrics": ["revenue"],
        "dimensions": ["region", "month"],
        "filters": {"month": "2026-08"},
        "comparison": "yoy",
        "priority": "high"
    }
)

6.2 反馈与重试机制

6.3 质量门控


七、性能与工程

7.1 延迟优化

环节 优化策略 效果
Planner 意图分类缓存(相似问题复用计划模板) -50%规划时间
SQL Gen 多条SQL并行生成+并行执行 -60%执行时间
Analyst 预计算统计指标(均值/标准差/趋势) -40%分析时间
Reporter 模板化生成(结构固定,填充内容) -30%生成时间
全链路 流式输出(边分析边展示) 用户感知-50%

7.2 可观测性

python 复制代码
# 全链路追踪
class AgentTracer:
    def trace(self, trace_id):
        return {
            "trace_id": trace_id,
            "total_time": "3.2s",
            "agents": [
                {"name": "planner", "time": "0.5s", 
                 "output": "8 tasks planned"},
                {"name": "sql_generator", "time": "1.2s",
                 "output": "8/8 SQL success, 0 retry"},
                {"name": "analyst", "time": "0.8s",
                 "output": "5 insights, 3 recommendations"},
                {"name": "reporter", "time": "0.7s",
                 "output": "report generated, 3 charts"}
            ],
            "token_usage": {"input": 12500, "output": 3200},
            "confidence": 0.94
        }

📌 本文要点回顾

  1. 多Agent架构将"理解→生成→分析→表达"拆解为4个专业化Agent,每个环节做到专业级
  2. Query Planner:理解意图、展开指标、规划子任务(综合报告=8-12条子任务)
  3. SQL Generator:逐条生成SQL+三重自校验+错误自动恢复,支持并行执行
  4. Insight Analyst:五层归因(总量→区域→产品线→客户→外部因素),每个洞察必须有数据支撑+可执行建议
  5. Report Writer:智能图表选择+结构化表达+多格式输出(PDF/PPT/在线)
  6. 协同机制:任务分发→结果回传→反馈重试→质量门控,全链路可追踪、可调试

❓ FAQ

Q1:多Agent会不会比单Agent慢很多?

A:总耗时确实比单Agent长(单Agent 3-5秒,多Agent综合报告2-5分钟),但两者解决的问题不同:单Agent适合简单查询(秒级返回),多Agent适合复杂分析(分钟级但质量远超人工)。对于简单问题,系统自动走"快速通道"(只经过SQL Gen),不触发完整4-Agent流程。

Q2:Agent之间的"对话"会不会产生幻觉?

A:每个Agent的输出都有质量门控:①SQL Gen的结果必须来自真实数据库执行(不是模型编造);②Analyst的每个结论必须引用具体数据(可追溯到SQL结果);③Reporter的文字必须与数据一致(交叉校验)。这种"数据锚定"机制有效防止幻觉。

Q3:这个架构支持自定义扩展吗?比如加一个"预测Agent"?

A:完全支持。Agent架构是插件化的:新增Agent只需定义输入/输出接口和协同规则。例如增加"Prediction Agent"(时序预测),只需在Planner的计划中增加"预测类任务",Analyst在需要时调用即可。不影响其他Agent。


💬 互动话题:你在做AI Agent相关的工程实践吗?你更倾向于"单模型一步到位"还是"多Agent协同"?在实践中遇到过哪些Agent协同的挑战?

欢迎在评论区分享你的AI Agent工程经验!


本文作者:鲲溟智能 · 产品与解决方案部

鲲溟智能官网:www.trionesagent.com

下一篇预告:【AI问数·技术】Agentic Analytics深度解析:5步自主分析的技术内核