- QueryGPT是一个基于
OpenAI GPT3.5
和Langchain
的自然语言数据查询工具。- 基于
OpenAI GPT3.5-turobo-0613
和Langchain Function Agent
实现,相比Pandas Agent
和CSV Agent
更快、稳定和准确。- 实现了
Markdown
格式、JSON格式
的数据输出,支持Echart
形式和Matplotlib
图表绘制。
- 安装
Python 3.10
和pip
,创建虚拟环境 git clone git@github.com:sdaaron/QueryGPT.git
cd QueryGPT/server
pip install -r requirements.txt
- 将
.env.example
重命名为.env
并修改环境变量
OPENAI_API_KEY='你的OpenAI Key'
- 启动命令
使用本地默认数据文件启动API :python main.py --host xx --port xxx
指定本地CSV文件启动API :python main.py --host xx --port xxx --csv_path xxx.csv
指定本地Excel文件启动API:python main.py --host xx --port xxx --excel_path xxx.xlsx
cd QueryGPT/client
pnpm install
npm run dev
- 确保你的
vite.config.js
中的proxy
配置,与你的API服务地址一致
-
项目简介
- 基于OpenAI的查询数据工具。该工具采用FastAPI作为后端框架,并通过使用Langchain来实现具体功能。工具的优点包括数据不经过接口,所有取数操作在本地完成,确保数据的私密性;同时,该工具是可扩展的,开发者可以在Langchain tool中增加所需的类,实现自定义功能。此外,该工具还采用Embedding相似度搜索,实现多文件搜索,快速定位目标列,减少token使用数量。
-
功能和特点
- 通过调用OpenAI提供的接口,获取所需的信息,再调用接口,完成数据查询,并将信息进行预处理,只保留有效信息,确保了数据的私密性以及有效性。
- Langchain实现agent功能,通过编写自定义的类,可以扩展工具的功能。开发者可以根据自己的需求,在tool中增加所需的类,以实现特定的查询功能。
- 采用Embedding相似度搜索技术来实现快速定位目标列和减少token数量。通过将数据转换为向量表示,并计算向量之间的相似度,可以快速找到与查询条件相似的目标列。同时,减少token数量可以提高搜索效率和性能。
-
缺点
- 工具的功能相对简单,无法灵活地实现复杂的查询任务。对于一些高级的查询需求和复杂的数据分析任务,该工具可能无法满足用户的要求。
- 使用场景单一 该工具目前只适用于对结构化数据(如CSV文件)进行查询。对于其他类型的数据或不同的查询场景,该工具的适用性较低,无法实现良好的迁移和扩展性。
-
展望
为了进一步提升工具的功能和适用性,可以考虑以下改进和发展方向:- 支持更多查询场景,工具可以扩展支持更多结构化数据的查询场景,例如支持数据库查询。这样可以增加工具的适用范围,并满足更广泛的用户需求。
- 实现通用的数据仓库,为了支持更多的查询方法和数据类型,可以考虑实现一个通用的数据仓库。通过构建数据仓库,用户可以更灵活地进行数据查询和分析,并享受到更多的功能和特性。
-
实现数据查询功能和结果输出
- 自定义Langchain Function Agent
- 实现Query Tool,实现基础取数需求
- 实现Plot Tool,实现图表绘制需求
- 实现多种自定义的常用计算工具
- 计算客单价、占比、增长率
- 计算月同环比、年同环比
- 支持更多自定义计算
- 集成ydata-profiling,实现简单数据描述
- Embedding相似度搜索
- 支持多种格式输出
- 输出Markdown格式数据
- 输出JSON格式数据
- 调用Matplotlib绘制簇状柱形图、折线图、饼状图
- 输出Echart图表
- 输出表格
- 自定义Langchain Function Agent
-
交互优化
- 界面UI美化
- 图表样式优化
- 流式输出
- 引导用户正确提问,显示关联问题
- 显示取数过程
-
实现更多功能
- 更丰富的数据分析能力,对输出数据进行简单分析
- 支持用户上传表格数据
- 支持连接数据库
- 支持自然语言操作表格数据
- 用户登录