数据分析,用这一个工具就够了

张文祺 投稿

量子位 | 公众号 QbitAI

处理数据,用这一个AI工具就够了!

依靠背后的大语言模型(LLM),只需要用一句话描述自己想看的数据,其他统统交给它!

处理、分析,甚至可视化,都能轻松搞定,甚至连搜集也不用自己动手

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

这款基于LLM的AI数据助手叫做Data-Copilot,由浙江大学团队研发。

相关论文预印本已经发布。

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

以下内容由投稿者提供

金融、气象、能源等各行各业每天都会生成大量的异构数据。人们急切需要一个工具来有效地管理、处理和展示这些数据。

DataCopilot通过部署大语言模型来自主地管理和处理海量数据,满足多样化的用户查询、计算、预测、可视化等需求。

只需要输入文字告诉DataCopilot你想看的数据,无需繁琐的操作,无需自己编写代码,DataCopilot自主地将原始数据转化为最符合用户意图的可视化结果。

为了实现的囊括各种形式的数据相关任务的通用框架,研究团队提出了Data-Copilot。

这一模型解决了单纯使用LLM存在的数据泄露风险、计算能力差、无法处理复杂任务等问题。

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

在接收到复杂请求时,Data-Copilot会自主设计并调度独立的接口,构建一个工作流程来满足用户的意图。

没有人类协助的情况下,它能够熟练地将来自不同来源、不同格式的原始数据转化为人性化的输出,如图形、表格和文本。

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

Data-Copilot项目的主要贡献包括:

  • 连接了不同领域的数据源和多样化的用户需求,减少了繁琐的劳动和专业知识。
  • 实现了自主管理、处理、分析、预测和可视化数据,可将原始数据转化为最符合用户意图的信息性结果。
  • 具有设计者调度者的双重身份,包括两个过程:接口工具的设计过程(设计者)和调度过程(调度者)。
  • 基于中国金融市场数据构建了Data-Copilot Demo。

自主设计并执行工作流

不妨以下面这个例子来看看Data-Copilot的表现:

今年一季度上证50指数的所有成分股的净利润增长率同比是多少

Data-Copilot自主设计了这样的工作流:

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

针对这个复杂的问题,Data-Copilot采用了loop_rank这个接口来实现多次循环查询。

Data-Copilot执行该工作流后得到了这样的结果:

其中横坐标是每只成分股的股票名字,纵坐标是一季度的净利润同比增长率

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

除了一般的数据处理过程之外,Data-Copilot还能生成种类丰富的工作流程。

研究团队以预测和并行两种工作流模式分别对Data-Copilot进行了测试。

预测工作流

对于已知数据之外的部分,Data-Copilot也可以进行预测,比如输入下面这个问题:

预测下面四个季度的中国季度GDP

Data-Copilot部署了这样的工作流:

获取历史GDP数据→采用线性回归模型预测未来→输出表格

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

执行之后的结果如下:

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

并行工作流

我想看看最近三年宁德时代和贵州茅台的市盈率

对应的工作流是:

获取(两支股票的)股价数据→计算相关指数→生成图表

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

两支股票的相关工作是同时并行的,最后得到的如下的图表:

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

主要方法

Data-Copilot是一个通用的大语言模型系统,具有接口设计和接口调度两个主要阶段。

  • 接口设计:研究团队设计了一个self-request的过程,使LLM能够自主地从少量种子请求生成足够的请求。然后,LLM根据生成的请求进行迭代式的设计和优化接口。这些接口使用自然语言描述,使它们易于扩展和在不同平台之间转移。
  • 接口调度:在接收到用户请求后,LLM根据自设计的接口描述和in context demonstration来规划和调用接口工具,部署一个满足用户需求的工作流,并以多种形式呈现结果给用户。

Data-Copilot通过自动生成请求和自主设计接口的方式,实现了高度自动化的数据处理和可视化,满足用户的需求并以多种形式向用户展示结果。

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

接口设计

如上图所示,首先要实现数据管理,第一步需要接口工具。

Data-Copilot会自己设计了大量接口作为数据管理的工具,其中接口是由自然语言(功能描述)和代码(实现)组成的模块,负责数据获取、处理等任务。

  • 首先,LLM通过少量的种子请求并自主生成大量请求(explore data by self-request),尽可能覆盖各种应用场景。
  • 然后,LLM为这些请求设计相应的接口(interface definition:只包括描述和参数),并在每次迭代中逐步优化接口设计(interface merge)。
  • 最后,研究人员利用LLM强大的代码生成能力为接口库中的每个接口生成具体的代码(interface implementation)。这个过程将接口的设计与具体的实现分离开来,创建了一套多功能的接口工具,可以满足大多数请求。

如下图:Data-Copilot自己设计的接口工具用于数据处理

一句话搞定数据分析,浙大全新大模型数据助手,连搜集都省了

接口调度

在前一个阶段,研究人员获取了用于数据获取、处理和可视化的各种通用接口工具。每个接口都有清晰明确的功能描述。如上图所示的两个查询请问,Data-Copilot通过实时请求中的规划和调用不同的接口,形成了从数据到多种形式结果的工作流程。

  • Data-Copilot首先进行意图分析来准确理解用户的请求。
  • 一旦准确理解了用户的意图,Data-Copilot将规划一个合理的工作流程来处理用户的请求。Data-Copilot会生成一个固定格式的JSON,代表调度的每个步骤,例如step={“arg”:””, “function”:””, “output”:”” ,”description”:””}。

在接口描述和示例的指导下,Data-Copilot在每个步骤内以顺序或并行的方式精心安排接口的调度。

Data-Copilot通过将LLMs整合到数据相关任务的每个阶段中,根据用户的请求将原始数据自动转化为用户友好的可视化结果,显著减少了对繁琐劳动和专业知识的依赖。

GitHub项目页:
https://github.com/zwq2018/Data-Copilot

论文地址:
https://arxiv.org/abs/2306.07209

HuggingFace DEMO:
https://huggingface.co/spaces/zwq2018/Data-Copilot