一、概述
在AI时代,人机协同进入崭新阶段,对于数据分析的交互形式也在发生变化,从固定报表、多维分析、Excel等传统形式 变成Chat形式,类似通过AI编程不用再手写代码,做分析也不用手写SQL和手动拉报表,降低数据分析门槛,提升决策效率。
核心价值是用自然语言对话,降低数据获取和数据分析的门槛,变成 “全员可用” 的日常能力,以零代码、多轮深度分析重构企业数据流程,让数据真正驱动决策。
本项目实现chatBI的架构基于 Generative Business Intelligence (GBI) 和数据驱动的多 Agent 系统,通过自然语言与多种数据库交互,实现自动化数据查询、结果生成、深度分析、可视化渲染和标准化报告生成。
二、架构设计原则
架构实现了mutl-Agent 协作机制,采用 AWEL (Agentic Workflow Expression Language) 进行工作流编排,具备高可扩展性和稳定性。架构设计功能和非功能需求:
数据驱动:所有决策过程均基于真实数据源,确保分析结果的可靠性、可追溯性,杜绝无数据支撑的推测性输出。
模块化设计:各功能组件解耦,独立封装、独立部署,支持按需扩展、替换,降低系统维护成本和迭代风险。
多Agent协作:模拟人类复杂任务分解与协作模式,将单一复杂任务拆解为可并行/串行的子任务,由不同职责的Agent协同完成,提升任务处理效率和智能化水平。
隐私与安全优先:内置数据去标识化、访问权限管控、操作审计等机制,支持数据代理保护,确保企业敏感数据不泄露、不滥用。
可扩展性与兼容性:支持新增数据源、自定义Agent、扩展工作流编排逻辑,兼容主流LLM模型和数据库系统,适配不同企业的技术栈。
三、整体架构分层设计
a、至顶向下分为一下4层:
接入层:负责接收用户输入(自然语言、API调用),输出最终结果(可视化图表、报告、JSON数据),提供多端适配能力。
核心层:包含Agent核心、规划模块、内存模块、Action模块、AWEL编排模块,是系统智能化运作的核心载体。
数据层:包含数据源连接模块、数据预处理模块、数据缓存模块,负责数据的接入、清洗、缓存和安全管控。
基础设施层:包含LLM模型服务、数据库服务、监控告警服务、日志服务、部署运维服务,为整个系统提供底层支撑。
b、用户请求流转逻辑:
接入层:用户通过接入层发起需求 →核心层:接收需求,由规划模块分解任务 →核心层:Agent核心模块执行子任务,借助记忆模块积累经验、执行器模块做动作执行 →数据层:提供数据支撑 →核心层:整合结果 →接入层:输出可视化结果,同时将过程数据存入内存模块,实现自进化。
三、功能模块设计
1. 数据源连接模块 (Data Sources)
负责连接和集成多种关系型数据库、数据仓库,为Agent提供统一、安全、高效的数据库访问接口,屏蔽不同数据库的语法差异,同时通过隐私保护机制,确保敏感数据不泄露,支撑后续所有数据相关操作。
a、支持数据库类型:
关系型数据库:SQLite、MySQL、PostgreSQL、MSSQL、OceanBase;
NoSql数据仓库:ClickHouse、DuckDB、Hive、StarRocks、Vertica;
b、数据源链接关键功能:
RDBMSConnectorResource:封装各类数据库的连接逻辑,提供统一的资源绑定接口,支持连接池管理,减少连接开销。
连接类型:
临时连接:如SQLiteTempConnector,主要用于测试、调试场景,无需持久化配置,会话结束后自动释放。
持久连接:如MySQLConnector、PostgreSQLConnector,用于生产环境,支持长连接复用、自动重连、超时重试机制。
数据预处理组件:对接入的原始数据进行清洗(去空值、去重、格式标准化)、转换(数据类型转换、字段映射),确保数据质量,为后续分析提供可靠支撑。
隐私保护组件:支持数据去标识化(如脱敏、加密)、代理访问,隐藏敏感字段(如身份证、手机号),仅向Agent提供脱敏后的数据,保障数据安全。
2. Agents模块
基于LLM的Mutil-Agent,是系统任务执行的核心载体,每个Agent具备明确的角色、目标和约束,支持内置Agent直接使用、自定义Agent灵活扩展,通过AgentContext、AgentMemory、LLMConfig实现个性化配置。
a、核心Agent:
DataScientistAgent(数据科学家Agent):核心分析角色,负责接收任务、生成符合语法规范的SQL查询语句、执行数据查询、进行多维度分析(如趋势分析、对比分析),绑定数据库资源后,可处理复杂关联查询、聚合分析等场景。支持根据内存中的历史经验,优化SQL查询效率。
UserProxyAgent(用户代理Agent):用户交互入口,负责接收用户自然语言需求、解析用户意图、发起对话流程,同时作为reviewer(审核者),监督所有子任务的执行过程,校验分析结果的准确性,接收用户反馈并调整执行策略。
AutoPlanChatManager(自动规划管理器Agent):任务规划核心,接收用户复杂需求(如“分析近3个月销售数据,从区域、产品、客单价三个维度拆解,生成趋势图表和总结报告”),通过LLM生成结构化任务计划,拆解为可执行的子任务,并指定每个子任务的执行者(Agent)、依赖关系、执行顺序。
CodeAssistantAgent(代码辅助Agent):辅助执行角色,负责生成、优化辅助代码(如数据处理脚本、可视化脚本),配合DataScientistAgent完成复杂数据处理任务,支持Python、SQL等语言的代码生成与调试。
SummaryAssistantAgent(汇总Agent):结果整合角色,负责收集所有子任务的执行结果,进行结构化汇总、提炼核心结论,生成符合用户需求的报告(如markdown报告、JSON总结),支持自定义报告模板。
ToolAssistantAgent(工具辅助Agent):工具调用角色,负责调用外部工具(如可视化工具、数据导出工具),将分析结果转化为可视化图表、Excel文件等,支撑输出模块的功能落地。
3. 任务规划功能
模拟人类任务分解思维,将用户提出的复杂、模糊需求(自然语言),拆解为结构化、可执行的子任务,明确每个子任务的执行者、执行顺序、依赖关系,确保任务执行的逻辑性和高效性,核心依赖AutoPlanChatManager Agent,重要功能:
AutoPlanChatManager:规划模块的核心载体,通过LLM解析用户需求,生成标准化的计划JSON,包含子任务的完整信息,支持动态调整计划(如子任务执行失败时,重新规划依赖关系)。
计划解析器:负责解析AutoPlanChatManager生成的计划JSON,校验子任务的合法性(如执行者是否存在、依赖关系是否循环),将计划转化为Agent可执行的指令。
依赖管理器:负责维护子任务之间的依赖关系,确保有依赖的子任务仅在前置任务执行完成且通过审核后,再启动执行,避免执行顺序混乱。
4. 记忆功能
存储Agent在执行任务过程中的感知信息、经验总结、对话历史、任务计划等数据,支持Agent的自进化和决策优化,是Agent实现“记忆”和“学习”能力的核心模块。内存系统采用分层设计,适配不同场景的记忆需求:
Sensory Memory(感知内存):短期存储Agent接收的原始输入信息(如用户需求、数据源返回的数据、子任务执行结果),存储时间短(会话级),仅用于临时缓冲,后续会根据重要性转移到短期记忆。
Short-Term Memory(短期记忆):存储当前会话中Agent的执行过程、临时结论、对话上下文等信息,支持增强处理(如关键信息提炼),存储时间为当前会话周期,会话结束后可选择持久化到长期记忆。
Long-Term Memory(长期记忆):存储Agent的经验总结、常用执行策略、用户偏好、历史分析结论等可复用信息,支持长期巩固和检索,存储时间永久(可手动清理),用于优化后续任务的执行效率和准确性。
Hybrid Memory(混合内存):结合上述三种内存的优势,自动实现数据的分层存储、转移和检索,适配复杂场景下的记忆需求(如长期经验结合当前会话上下文,生成更精准的决策),是系统默认采用的内存类型。
5. 执行器模块
将Agent的决策(如生成的SQL查询、工具调用指令)转化为具体的可执行操作,直接与外部环境(数据源、外部工具)交互,获取执行结果,并将结果反馈给Agent和内存模块,是Agent与外部环境交互的核心桥梁。
a、执行器设计逻辑:
Goals(目标):明确Action的核心目标,包括任务完成(如执行SQL查询、生成图表)、Agent间通信(如传递任务结果)、环境探索(如检测数据源连接状态)。
Production(生成):基于Agent的记忆(历史经验)或计划(子任务要求),生成具体的Action指令(如SQL语句、工具调用参数),确保Action的针对性和准确性。
Space(范围):Action的执行范围包括外部工具(ToolPack,如可视化工具、数据导出工具)和LLM内部知识(如基于LLM生成总结文本),支持多场景交互。
Impact(影响):Action执行后,会产生三大影响:改变外部环境(如数据库查询结果、生成的图表文件)、更新Agent内存(存储执行结果和经验)、触发新的Action(如执行结果不符合预期时,触发重试Action)。
b、执行器类型及实现:
每个Agent必须绑定至少一种Action,根据Agent角色不同,Action类型不同,核心执行器类型如下:
SQL执行器:由DataScientistAgent绑定,负责将生成的SQL语句发送到数据源连接模块,执行查询操作,获取查询结果,支持SQL语法校验、执行异常处理。
工具调用执行器:由ToolAssistantAgent绑定,负责调用外部工具(如可视化工具、Excel导出工具),将分析结果转化为可视化图表、文件等,支持工具参数配置、执行结果校验。
对话通信执行器:由所有Agent绑定,负责Agent间的消息传递(如子任务结果传递、审核反馈),支持标准化消息格式,确保通信连贯。
总结生成执行器:由SummaryAssistantAgent绑定,负责基于子任务结果,生成结构化总结和报告,支持自定义报告模板。
夜雨聆风