openchatbi
用自然语言对话数据仓库,LangGraph 驱动的端到端对话式 BI Agent
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用自然语言对话数据仓库,LangGraph 驱动的端到端对话式 BI Agent
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:业务部门的产品经理想看「过去三个月华北区域按周维度的转化率趋势」,传统流程是需要找数据工程师写 SQL,等排期,看结果,不满意再改,一来一回可能耗费半天。而在 OpenChatBI 中,只需要输入一句话,系统自动理解意图、生成 SQL、连接数据仓库、执行查询、返回带图表的可视化结果——整个过程不到 30 秒。
这就是 OpenChatBI 的核心价值:用自然语言驱动数据分析,让不懂 SQL 的人也能自助完成数据探索。
OpenChatBI 由独立开发者 zhongyu09(Yu Zhong) 开发,项目于 2024 年创建,目标是将大语言模型的自然语言理解能力与数据分析工作流深度结合。
在 OpenChatBI 之前,text2sql(文本转 SQL)领域已有多个成熟方案。但这些方案大多止步于「生成一条 SQL」,无法处理数据分析的完整链路:理解问题 → 选择数据源 → 生成查询 → 执行验证 → 可视化展示 → 追问深挖。
zhongyu09 的思路是做完整的对话式 BI Agent:以 LangGraph 为核心编排引擎,将 text2sql、时间序列预测、异常检测、根因下钻、Python 代码执行等多种能力串联为一个协作网络,用户通过自然语言就能驱动整个分析流程。
OpenChatBI 的 text2sql 模块基于 LangChain + OpenAI/Claude API 实现,包含以下关键步骤:
这是 OpenChatBI 最具深度的部分——一个专门处理复杂分析任务的子 Agent,基于 deepagents 框架构建,可调度多种分析工具:
基于 LangGraph Checkpointing 实现对话历史持久化和用户特征记忆,支持跨会话继续分析,长分析任务可任意节点中断恢复。
OpenChatBI 支持通过 MCP(Model Context Protocol)接入外部工具,扩展能力边界:接入外部知识库回答需要领域知识的复杂问题,通过配置文件注册任意 MCP 兼容工具。
OpenChatBI 采用单主 Agent + 多工具子模块的架构,主 Agent 基于 LangGraph 实现有状态的工作流编排。
| 组件 | 技术选型 | 职责 |
|---|---|---|
| Agent 框架 | LangGraph 1.x + LangChain 1.x | 工作流编排、状态管理 |
| LLM 接入 | LangChain OpenAI/Anthropic | GPT-4 / Claude 3 接口封装 |
| 向量检索 | Chroma (langchain-chroma) | 数据目录语义检索 |
| 数据库连接 | SQLAlchemy + PyHive | Presto/PostgreSQL/MySQL 多方言 |
| Web UI | Streamlit + Gradio | 两个示例界面 |
| 记忆存储 | SQLite + langgraph-checkpoint | 对话状态持久化 |
| 代码沙箱 | RestrictedPython + Docker | Python 代码安全执行 |
| 图表渲染 | Plotly | 交互式数据可视化 |
| 中文分词 | jieba(Python 3.12+ 回退标点切分) | Schema 检索 |
openchatbi/catalog/ 下实现了两种检索模式:
text2sql 模块(openchatbi/text2sql/)采用多步骤流水线:
# 源码安装
git clone git@github.com:zhongyu09/openchatbi.git
cd openchatbi
uv sync
# 配置 API Key(复制模板)
cp openchatbi/config.yaml.template openchatbi/config.yaml
# 编辑 config.yaml 填入 LLM API Key 和数据仓库连接信息
# 启动 Streamlit 界面
python run_streamlit_ui.py
Web UI 启动后访问 http://localhost:8501(Streamlit)或 http://localhost:7860(Gradio)。
项目提供 Dockerfile.python-executor 用于构建安全的 Python 代码执行沙箱:
docker build -f Dockerfile.python-executor -t openchatbi-executor .
主服务仍需通过 pip 或源码启动,Docker 仅用于隔离用户提交的 Python 代码执行环境。
text2sql 的效果直接受制于底层 LLM 的能力。对于复杂的多表 JOIN、嵌套子查询、特定数据库方言的语法差异,GPT-4 偶尔会生成不正确或非最优的 SQL。建议在高风险场景(涉及财务/运营指标)下,始终由数据工程师复核生成的 SQL。
当前版本通过配置文件明文存储数据仓库连接凭证(用户名、密码)。在生产环境中,建议使用环境变量或密钥管理服务注入凭证,避免凭证泄露。
RestrictedPython 提供了一定的沙箱限制,但并非完全不可渗透的隔离。生产部署建议配合 Docker 容器网络隔离,确保恶意代码无法访问内网资源。
项目版本号 1.0.0b1,README 中明确标注异常检测和根因下钻算法仍处于「向生产就绪迭代」阶段,实际使用中可能遇到边界 case 处理不够完善的情况。
虽然提供了 Streamlit UI,但完整的 OpenChatBI 部署涉及:配置 LLM API、连接数据仓库、配置目录检索、部署 Docker 沙箱(可选)——对于非技术用户来说,门槛仍然较高,与「零配置」的理想状态仍有距离。
传统 BI 系统的核心矛盾是需求与供给的错配:业务人员有分析需求,但需要通过数据工程师作为中介,排队等待。OpenChatBI 代表了一种新兴趋势——用 LLM 消除这个中介层,让业务人员用自然语言直接驱动数据探索。
类似的探索还包括:微软的 Microsoft Fabric Copilot、Tableau 的 Pulse、SQLGlot 的 NL2SQL 功能等。OpenChatBI 的差异化在于它的端到端性:不只生成 SQL,而是覆盖从问题理解、数据定位、查询执行、可视化到追问深挖的完整链路。
LangGraph 1.x 以其状态机模型和检查点机制,为 OpenChatBI 的多轮对话和长任务可恢复性提供了可靠基础设施。相比直接基于 LangChain 的 Agent,LangGraph 的图结构更适合表达复杂的条件分支和工具调度逻辑,zhongyu09 的实践为社区提供了有价值的参考。
作为一个 MIT 许可证的开源项目,OpenChatBI 的透明性让企业可以自行部署、数据不外流,同时允许社区贡献算法改进(如更准确的异常检测算法、更全面的 SQL 方言支持)。这对担心数据安全的金融、医疗行业用户尤为重要。
强烈推荐:
观望考虑:
一句话推荐:OpenChatBI 是 text2sql 领域一个有诚意的端到端开源方案,用 LangGraph 串联起从自然语言到数据洞察的完整链条——对于想搭建内部对话式 BI 能力的团队,值得在测试环境跑一跑 demo 看看效果。
项目仓库:https://github.com/zhongyu09/openchatbi | 许可证:MIT | 作者:zhongyu09