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 웹 UI를 통해 누구나 브라우저에서 어시스턴트를 사용해 볼 수 있으며, 코드베이스에는 명령줄 진입점도 포함되어 있습니다.


🚀 퀵 스타트 (리포지토리 기준)

# 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, LLM용 OpenAI/Azure 또는 Alibaba DashScope)
export TUSHARE_TOKEN="your-tushare-token"
export OPENAI_KEY="sk-..."   # 또는 Qwen용 DASHSCOPE_API_KEY

# 3️⃣ 명령줄에서 데모 요청 실행
python main.py   # 파일 내 `instruction`을 수정하여 쿼리 변경

# 4️⃣ 또는 웹 UI 실행
python app.py   # 이후 브라우저에서 http://127.0.0.1:7860 접속

웹 UI는 LLM 키를 요구하며, 요청(예: “Show China’s quarterly GDP growth over the past ten years”)을 입력하면 중간 워크플로우, 생성된 차트/표, 자연어 요약을 표시합니다.


🛠️ 작동 원리 (상위 아키텍처)

구성 요소 역할
main.py 5단계 파이프라인 오케스트레이션: 의도 감지 → 작업 계획 → 도구 실행 → 시각화 → 요약.
tool.py + tool_lib/ 주가 가져오기, 순유입 계산, 예측 모델 호출 등 원자적 “인터페이스 도구” 구현.
prompt_lib/ 각 단계(의도 감지, 계획 등)에서 LLM을 안내하는 시스템 프롬프트 및 Few-shot 예제 저장.
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 경유). 데모 포함 항목:
    • 올해 북향 자금 순유입.
    • 지난 10년간 분기별 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에 이슈를 열거나 zhangwenqi@zju.edu.cn으로 이메일을 보내 설정, Tushare 크레딧 부족, 또는 다른 데이터 도메인으로의 시스템 확장 관련 질문을 문의해 주십시오.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트