Data-Copilot: Bridging Billions of Data and Humans with Autonomous Workflow
无需繁琐操作,只需要输入一句话, Data-Copilot自动帮你完成查数据,分析数据,管理数据,预测趋势,还可以画图做表
论文链接: 论文地址
Data-Copilot: arxiv
Repo: github 欢迎来github讨论交流,喜欢的话记得star哦
Demo:
Demo in space
摘要:
金融、气象、能源等各行各业每天都会生成大量的异构数据。人们急切需要一个工具来有效地管理、处理和展示这些数据。DataCopilot通过部署大语言模型(LLMs)来自主地管理和处理海量数据,即它连接不同领域(股票、基金、公司、经济和实时新闻)的丰富数据,满足多样化的用户查询,计算,预测,可视化等需求。只需要输入文字告诉DataCopilot你想看啥数据,无需繁琐的操作,无需自己编写代码, DataCopilot自主地将原始数据转化为最符合用户意图的可视化结果,因为它可以自主地帮你找数据,处理数据,分析数据,画图, 无需人类协助。
介绍:
许多研究已经探索了LLMs的潜力。例如Sheet-Copilot、Visual ChatGPT、Audio GPT利用LLMs调用视觉,语音等领域工具进行数据分析、视频编辑和语音转换。从数据科学的角度来看,表格、可视化和音频都可以被视为一种形式的数据,所有这些任务都可以被看作是与数据相关的任务. 因此,一个问题出现了:在通用数据的背景下,LLMs能否构建自动化的数据科学工作流来处理各种与数据相关的任务?为了实现这一目标,需要解决几个挑战:
(1)从数据角度看:直接使用LLMs读取和处理海量数据不仅不切实际,而且存在数据泄露的潜在风险。
(2)从模型角度看:LLMs不擅长处理数值计算,可能没有合适的可调用外部工具来满足多样化的用户需求,从而限制了LLMs的利用率。
(3)从任务角度看:尽管LLMs展示了强大的少样本能力,但许多与数据相关的任务是复杂的,需要结合多个操作,如数据检索、计算和表格操作,并且结果需要以图像、表格和文本等多种格式呈现,这些都超出了当前LLMs的能力。
因此,为了实现的囊括数据相关任务的通用框架,我们提出Data-Copilot:
Data-Copilot是一个基于LLM的系统,用于处理与数据相关的任务,连接了数十亿条数据和多样化的用户需求。它独立设计接口工具,以高效地管理、调用、处理和可视化数据。在接收到复杂请求时,Data-Copilot会自主调用这些自设计的接口,构建一个工作流程来满足用户的意图。在没有人类协助的情况下,它能够熟练地将来自不同来源、不同格式的原始数据转化为人性化的输出,如图形、表格和文本。
主要贡献
- 设计了一个通用系统DataCopilot,它将不同领域的数据源和多样化的用户需求连接起来,通过将LLM集成到整个流程中,减少了繁琐的劳动和专业知识。
- Data-Copilot可以自主管理、处理、分析、预测和可视化数据。当接收到请求时,它将原始数据转化为最符合用户意图的信息性结果。
- 作为设计者和调度者,Data-Copilot包含两个阶段:离线接口设计(设计者)和在线接口调度(调度者)。
- 构建了中国金融市场的Data-Copilot Demo
主要方法
Data-Copilot是一个通用的大语言模型系统,具有接口设计和接口调度两个主要阶段。
接口设计:我们设计了一个self-request的过程,使LLM能够自主地从少量种子请求生成足够的请求。然后,LLM根据生成的请求进行迭代式的设计和优化接口。这些接口使用自然语言描述,使它们易于扩展和在不同平台之间转移。
接口调度:在接收到用户请求后,LLM根据自设计的接口描述和in context demonstration来规划和调用接口工具,部署一个满足用户需求的工作流,并以多种形式呈现结果给用户。
总体而言,Data-Copilot通过自动生成请求和自主设计接口的方式,实现了高度自动化的数据处理和可视化,满足用户的需求并以多种形式向用户展示结果。
1-接口设计
如图所示,首先要实现数据管理,第一步需要接口工具。
Data-Copilot会自己设计了大量接口作为数据管理的工具,其中接口是由自然语言(功能描述)和代码(实现)组成的模块,负责数据获取、处理等任务。
- 首先,LLM通过一些种子请求并自主生成大量请求(explore data by self-request)。
- 然后,LLM为这些请求设计相应的接口(interface
definition:只包括描述和参数),并在每次迭代中逐步优化接口设计(interface merge)。 - 最后,我们利用LLM强大的代码生成能力为接口库中的每个接口生成具体的代码(interface implementation)。
这个过程将接口的设计与具体的实现分离开来,创建了一套多功能的接口工具,可以满足大多数请求。
如下图:Data-Copilot自己设计的接口工具用于数据处理
2-接口调度
在前一个阶段,我们获取了用于数据获取、处理和可视化的各种通用接口工具。每个接口都有清晰明确的功能描述。如图2所示的两个示例,Data-Copilot通过实时请求中的规划和调用不同的接口,形成了从数据到多种形式结果的工作流程。
- Data-Copilot首先进行意图分析来准确理解用户的请求。
- 一旦准确理解了用户的意图,Data-Copilot将规划一个合理的工作流程来处理用户的请求。我们指示LLM生成一个固定格式的JSON,代表调度的每个步骤,例如step={“arg”:“”,“function”:“”, “output”:“” ,“description”:“”}。
在接口描述和示例的指导下,Data-Copilot在每个步骤内以顺序或并行的方式精心安排接口的调度。
如下图例子:
今年一季度上证50指数的所有成分股的净利润增长率同比是多少
Data-Copilot自主设计了工作流如下:
针对这个复杂的问题,Data-Copilot采用了loop_rank这个接口来实现多次循环查询
最后该工作流并执行后结果如下:横坐标是每只成分股的股票名字,纵坐标是一季度的净利润同比增长率
实验结果
用户问题: 预测下面四个季度的中国季度GDP 部署工作流:获取历史GDP数据----> 采用线性回归模型预测未来----->输出表格
我想看看最近三年宁德时代和贵州茅台的市盈率 部署工作流
用户问题: 基金经理周海栋管理的基金今年的收益率怎么样
Contact: zhangwenqi@zju.edu.cn