基于大语言模型实现TableAgent

May 5, 2024

Purple Flower

AI时代将是local first 应用的辉煌时代,前端+大模型api接口 = 一个应用 。为了探索浏览器内运行数据库在本地处理表格数据我做了一些demo:大模型智能表格应用,架构分为四层:UI 层、TableAgent 、数据管理层、工具层。整体架构图如下所示。

Upload 组件是用户与系统交互的起点,负责管理和处理 Excel 文件的上传功能。用户通过该组件上传本地Excel文件,为后续的数据分析和表格操作提供数据源。组件设计时考虑了文件格式验证和上传进度提示,以确保数据输入的可靠性和用户体验的流畅性。该组件的高效性和易用性使其成为系统数据流的入口。

Table 组件负责在前端渲染表格数据,是用户查看和操作数据的主要界面。为了应对大规模数据集(如上万行记录)的渲染需求,该组件采用了虚拟表格技术。虚拟表格通过仅渲染可视区域内的内容,大幅降低了内存占用和渲染延迟,从而保证了系统在处理大数据时的性能表现,用户可以通过 Table 组件直观地浏览表格内容。

Config 组件用于管理大语言模型(LLMs)的 API KEY,是系统与外部智能服务连接的关键环节。通过该组件,用户可以输入并保存 LLMs 的 API KEY。从而启用DataAgent的自然语言处理能力。组件设计支持灵活的配置选项,例如选择不同的 LLMs 提供商或调整模型参数,以满足多样化的性能和成本需求。Config 组件的引入不仅增强了系统的可扩展性,也为研究中探索不同语言模型的效果提供了便利。

Dialog 组件是用户与DataAgent进行交互式对话的核心界面。用户通过该组件输入自然语言指令(如“分析销售额走势”或“添加一条记录”),DataAgent 则基于 LLMs 的解析能力返回相应的分析结果、图表或操作确认。Dialog 组件支持实时对话和历史记录查看,确保用户能够跟踪交互过程并获取直观的反馈。

应用功能展示

本文选取了一份包含23,656条记录的北京二手房数据集进行测试,该数据集涵盖地理位置、房屋面积、价格、楼层信息等多个字段。用户可以通过输入自然语言来请求数据分析,TableAgent会自动处理数据,并将分析结果以可视化的形式输出,比如折线图或饼图。例如,用户可以说:“帮我分析北京不同区二手房销售数量”,TableAgent就会从表格数据中提取相关信息生成回答结果,如下图所示。

case1

case2

case3

case4


内部实现 部分状态机 可视化链接:

interntActor:https://stately.ai/registry/editor/embed/abe8a2d4-41cb-462e-be20-bd4849b4ef78?machineId=d0c6c3bb-fbff-4eec-a295-af5cf8cad702&mode=design

llmActor:https://stately.ai/registry/editor/embed/abe8a2d4-41cb-462e-be20-bd4849b4ef78?mode=design&machineId=abc91d17-8eb5-4132-95e0-f12b95fe5b73

sqliteActor:https://stately.ai/registry/editor/embed/abe8a2d4-41cb-462e-be20-bd4849b4ef78?mode=design&machineId=b655eb45-d0c3-4ff0-8d05-a78df664c0aa

tableActor:https://stately.ai/registry/editor/embed/abe8a2d4-41cb-462e-be20-bd4849b4ef78?machineId=73aae11c-737e-4416-ba0e-7f5e36502c7c&mode=design