ZJU-OmniAI/Data-Copilot
Data-Copilot: Bridging Billions of Data and Humans with Autonomous Workflow
📚 什么是 Data-Copilot?
Data-Copilot 是一个开源的 LLM 驱动助手,能够接收关于中文金融数据的自然语言请求,并自动将其转化为完整的数据分析工作流。它能识别用户的意图,规划数据获取、处理、预测和可视化的步骤序列,调用相应的 API,最后返回简洁的文字总结以及图表或表格——全程无需手动编码。
该系统基于大型语言模型(GPT-3.5、Azure-GPT-3.5 或 Qwen-72B-Chat),并使用 Tushare 金融数据平台来获取股票、基金、宏观经济指标和公司报告。Gradio 网页界面让任何人都能在浏览器中试用该助手,代码库也提供了命令行入口。
🚀 快速开始 (来自 repo)
# 1️⃣ 克隆并创建环境
git clone https://github.com/ZJU-OmniAI/Data-Copilot.git
cd Data-Copilot
conda create -n data-copilot python=3.10 -y
conda activate data-copilot
pip install -r requirements.txt
# 2️⃣ 导出所需的密钥 (Tushare 用于数据,OpenAI/Azure 或 Alibaba DashScope 用于 LLM)
export TUSHARE_TOKEN="your-tushare-token"
export OPENAI_KEY="sk-..." # 或 DASHSCOPE_API_KEY 用于 Qwen
# 3️⃣ 从命令行运行演示请求
python main.py # 编辑文件内的 `instruction` 即可更改查询
# 4️⃣ 或启动网页界面
python app.py # 然后在浏览器中打开 http://127.0.0.1:7860
网页界面会要求输入 LLM 密钥,让你输入请求(例如:“Show China’s quarterly GDP growth over the past ten years”),并显示中间工作流、生成的图表/表格以及自然语言总结。
🛠️ 工作原理 (架构概览)
| 组件 | 角色 |
|---|---|
main.py |
协调五阶段流程:意图检测 → 任务规划 → 工具执行 → 可视化 → 总结。 |
tool.py + tool_lib/ |
实现原子化的“接口工具”,例如获取股价、计算净流入或调用预测模型。 |
prompt_lib/ |
存储系统提示词和少样本示例,指导 LLM 在每个阶段(意图检测、规划等)的操作。 |
LLM 调用器 (lab_gpt4_call.py, lab_llms_call.py, lab_llm_local_call.py) |
将提示词发送给 OpenAI、Azure-OpenAI 或 Alibaba DashScope (Qwen) 并返回模型响应的轻量级封装。 |
| 数据源 | Tushare API (中国市场数据) 以及用于名称匹配的本地 A 股/基金静态列表。 |
Gradio UI (app.py) |
将用户查询转发给 main.py 并将中间步骤流式传输回浏览器的简单网页前端。 |
LLM 同时扮演 设计师(编写所需工具调用的描述)和 调度员(决定顺序、并行性或循环)的角色。Python 代码随后执行生成的计划,收集原始结果,将其反馈给模型进行可视化提示,最后要求模型进行总结。
🎬 演示与结果 (如 README 所示)
- 支持的模型 – GPT-3.5 (OpenAI/Azure) 和 Qwen-72B-Chat。皆能处理中文金融领域。
- 支持的数据 – 中国股票、基金、宏观经济指标和公司财务报表(通过 Tushare)。演示包括:
- 本年度北向资金净流入。
- 过去十年的季度 GDP 增长。
- 循环工作流:SSE-50 指数中每个成分股的 Q1 净利润增长。
- 网页演示将结果可视化为折线图/柱状图(使用支持中文的字体)和表格,并打印出可读的文字总结。
📦 项目布局 (快速参考)
Data-Copilot/
├─ main.py # 核心流程驱动
├─ app.py # Gradio 前端
├─ tool.py # 通用工具执行器
├─ lab_*.py # LLM API 封装 (OpenAI, Qwen, 本地 InternLM)
├─ prompt_lib/ # 阶段特定的提示词与演示
├─ tool_lib/ # 每个原子工具的 JSON 描述
├─ create_tool/ # 生成 Tushare 工具规范的辅助脚本
├─ data/ # 用于名称匹配的静态股票/基金列表
├─ output/ # 生成表格的保存位置
└─ docs/flowchart.md # 流程图可视化
📄 授权与引用
代码以 MIT License 发布。如果您在研究或产品中使用该系统,请引用随附的 arXiv 论文:
@article{zhang2023data,
title={Data-Copilot: Bridging Billions of Data and Humans with Autonomous Workflow},
author={Zhang, Wenqi and Shen, Yongliang and Tan, Zeqi and Hou, Guiyang and Lu, Weiming and Zhuang, Yueting},
journal={arXiv preprint arXiv:2306.07209},
year={2023}
}
🙋♀️ 获取帮助
在 GitHub 上提交 issue 或发送邮件至 zhangwenqi@zju.edu.cn,询问有关设置、Tushare 积分不足或将系统扩展到其他数据领域的问题。
相关
- 项目
- 项目
- 项目
- 项目