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 积分不足或将系统扩展到其他数据领域的问题。

相关

  • 项目
  • 项目
  • 项目
  • 项目