OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  BambooAI 面向非开发者的数据分析与探索AI助手

BambooAI 面向非开发者的数据分析与探索AI助手

 
  arrest ·  2026-03-19 07:51:11 · 5 次点击  · 0 条评论  

BambooAI

BambooAI Logo

https://bambooai.org

BambooAI 是一个开源库,它利用大语言模型 (LLMs) 实现基于自然语言的数据分析。它既可用于本地数据集,也能从外部数据源和 API 获取数据。

目录

概述

BambooAI 是一个实验性工具,它通过允许用户使用自然语言对话与数据交互,使数据分析变得更加容易。它旨在:

  • 处理关于数据集的自然语言查询
  • 生成并执行用于分析和可视化的 Python 代码
  • 帮助用户无需大量编码知识即可获得洞察
  • 增强各级数据分析师的能力
  • 简化数据分析工作流程

功能特性

  • 用于数据分析的自然语言界面
  • 支持 Web UI 和 Jupyter notebook
  • 支持本地和外部数据集
  • 与互联网搜索和外部 API 集成
  • 流式处理过程中的用户反馈
  • 用于复杂任务的可选规划智能体
  • 自定义本体的集成
  • 用于数据分析和可视化的代码生成
  • 自我修复/错误纠正
  • 自定义代码编辑和代码执行
  • 通过向量数据库集成知识库
  • 工作流程保存和后续跟进
  • 上下文内和多模态查询

演示视频

机器学习示例 (Jupyter Notebook)

创建一个机器学习模型来预测泰坦尼克号乘客生存率的演示:

https://github.com/user-attachments/assets/59ef810c-80d8-4ef1-8edf-82ba64178b85

体育数据分析 (Web UI)

各种体育数据分析查询的示例:

https://github.com/user-attachments/assets/7b9c9cd6-56e3-46ee-a6c6-c32324a0c5ef

安装

pip install bambooai

或者克隆仓库并安装依赖:

git clone https://github.com/pgalko/BambooAI.git
pip install -r requirements.txt

快速开始

在 Google Colab 上尝试一个基础示例:在 Colab 中打开

基础示例

  1. 安装 BambooAI:
    bash pip install bambooai

  2. 配置环境:
    bash cp .env.example .env # 使用你的设置编辑 .env 文件

  3. 配置智能体/模型:
    bash cp LLM_CONFIG_sample.json LLM_CONFIG.json # 使用你期望的智能体、模型和参数组合编辑 LLM_CONFIG.json

  4. 运行:
    ```python
    import pandas as pd
    from bambooai import BambooAI

    import plotly.io as pio
    pio.renderers.default = 'jupyterlab'

    df = pd.read_csv('titanic.csv')
    bamboo = BambooAI(df=df, planning=True, vector_db=False, search_tool=True)
    bamboo.pd_agent_converse()
    ```

工作原理

BambooAI 通过六个关键步骤运行:

  1. 初始化
    - 以用户问题或提示启动
    - 在对话循环中持续进行直到退出

  2. 任务路由
    - 使用 LLM 对问题进行分类
    - 路由到适当的处理程序(文本响应或代码生成)

  3. 用户反馈
    - 如果指令模糊或不清晰,模型将暂停并向用户寻求反馈
    - 如果模型在解决过程中遇到任何歧义,它将暂停并提供几个选项以寻求方向

  4. 动态提示构建
    - 评估数据需求
    - 如果需要更多上下文,则请求反馈或使用工具
    - 制定分析计划
    - 执行语义搜索以查找类似问题
    - 使用选定的 LLM 生成代码

  5. 调试与执行
    - 执行生成的代码
    - 使用基于 LLM 的纠正处理错误
    - 重试直到成功或达到限制

  6. 结果与知识库
    - 对答案质量进行排序
    - 将高质量解决方案存储在向量数据库中
    - 呈现格式化的结果或可视化图表

流程图

配置

参数

BambooAI 接受以下初始化参数:

bamboo = BambooAI(
    df=None,                    # 要分析的 DataFrame
    auxiliary_datasets=None,    # 辅助数据集路径列表
    max_conversations=4,        # 内存中保留的对话对数量
    search_tool=False,          # 启用互联网搜索功能
    planning=False,             # 启用用于复杂任务的规划智能体
    webui=False,                # 以 Web 应用模式运行
    vector_db=False,            # 启用用于知识存储的向量数据库
    df_ontology=False,          # 使用自定义数据框本体
    exploratory=True,           # 启用专家选择以处理查询
    custom_prompt_file=None     # 启用自定义/修改的提示模板
)

详细参数说明:

  • df (pd.DataFrame, 可选)
  • 用于分析的输入数据框
  • 如果未提供,BambooAI 将尝试从互联网或辅助数据源获取数据

  • auxiliary_datasets (列表, 默认=None)

  • 辅助数据集路径列表
  • 这些数据集将根据需要被纳入解决方案中,并在代码执行时加载
  • 用于补充主数据框

  • max_conversations (整数, 默认=4)

  • 在上下文中保留的用户-助手对话对数量
  • 影响上下文窗口和令牌使用量

  • search_tool (布尔值, 默认=False)

  • 启用互联网搜索功能
  • 启用时需要相应的 API 密钥

  • planning (布尔值, 默认=False)

  • 启用用于复杂任务的规划智能体
  • 将任务分解为可管理的步骤
  • 提高复杂查询的解决方案质量

  • webui (布尔值, 默认=False)

  • 以 Web 应用程序模式运行 BambooAI
  • 使用 Flask API 提供 Web 界面

  • vector_db (布尔值, 默认=False)

  • 启用用于知识存储和语义搜索的向量数据库
  • 存储高质量解决方案以供将来参考
  • 需要 Pinecone API 密钥
  • 支持两种嵌入模型 text-embedding-3-small(OpenAI) 和 all-MiniLM-L6-v2(HF)

  • df_ontology (字符串, 默认=None)

  • 使用自定义数据框本体以改进理解
  • 需要 OWL 本体作为 .ttl 文件。参数接受 TTL 文件的路径。
  • 显著提高解决方案质量

  • exploratory (布尔值, 默认=True)

  • 启用专家选择以处理查询
  • 在研究专家和数据分析师角色之间进行选择

  • custom_prompt_file (字符串, 默认=None)

  • 允许用户提供自定义提示模板
  • 需要包含模板的 YAML 文件的路径

智能体与模型配置

BambooAI 使用多智能体系统,其中不同的专业智能体处理数据分析过程的特定方面。每个智能体可以根据其特定需求配置为使用不同的 LLM 模型和参数。

配置结构

LLM 配置存储在 LLM_CONFIG.json 中。以下是完整的配置结构:

{
  "agent_configs": [
    {"agent": "Expert Selector", "details": {"model": "gpt-4.1", "provider":"openai","max_tokens": 2000, "temperature": 0}},
    {"agent": "Analyst Selector", "details": {"model": "claude-3-7-sonnet-20250219", "provider":"anthropic","max_tokens": 2000, "temperature": 0}},
    {"agent": "Theorist", "details": {"model": "gemini-2.5-pro-preview-03-25", "provider":"gemini","max_tokens": 4000, "temperature": 0}},
    {"agent": "Dataframe Inspector", "details": {"model": "gemini-2.0-flash", "provider":"gemini","max_tokens": 8000, "temperature": 0}},
    {"agent": "Planner", "details": {"model": "gemini-2.5-pro-preview-03-25", "provider":"gemini","max_tokens": 8000, "temperature": 0}},
    {"agent": "Code Generator", "details": {"model": "claude-3-5-sonnet-20241022", "provider":"anthropic","max_tokens": 8000, "temperature": 0}},
    {"agent": "Error Corrector", "details": {"model": "claude-3-5-sonnet-20241022", "provider":"anthropic","max_tokens": 8000, "temperature": 0}},
    {"agent": "Reviewer", "details": {"model": "gemini-2.5-pro-preview-03-25", "provider":"gemini","max_tokens": 8000, "temperature": 0}},
    {"agent": "Solution Summarizer", "details": {"model": "gemini-2.5-flash-preview-04-17", "provider":"gemini","max_tokens": 4000, "temperature": 0}},
    {"agent": "Google Search Executor", "details": {"model": "gemini-2.5-flash-preview-04-17", "provider":"gemini","max_tokens": 4000, "temperature": 0}},
    {"agent": "Google Search Summarizer", "details": {"model": "gemini-2.5-flash-preview-04-17", "provider":"gemini","max_tokens": 4000, "temperature": 0}}
  ],
  "model_properties": {
    "gpt-4o": {"capability":"base","multimodal":"true", "templ_formating":"text", "prompt_tokens": 0.0025, "completion_tokens": 0.010},
    "gpt-4.1": {"capability":"base","multimodal":"true", "templ_formating":"text", "prompt_tokens": 0.002, "completion_tokens": 0.008},
    "gpt-4o-mini": {"capability":"base", "multimodal":"true","templ_formating":"text", "prompt_tokens": 0.00015, "completion_tokens": 0.0006},
    "gpt-4.1-mini": {"capability":"base", "multimodal":"true","templ_formating":"text", "prompt_tokens": 0.0004, "completion_tokens": 0.0016},
    "o1-mini": {"capability":"reasoning", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.003, "completion_tokens": 0.012},
    "o3-mini": {"capability":"reasoning", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.0011, "completion_tokens": 0.0044},
    "o1": {"capability":"reasoning", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.015, "completion_tokens": 0.06},
    "gemini-2.0-flash": {"capability":"base", "multimodal":"true","templ_formating":"text", "prompt_tokens": 0.0001, "completion_tokens": 0.0004},
    "gemini-2.5-flash-preview-04-17": {"capability":"reasoning", "multimodal":"true","templ_formating":"text", "prompt_tokens": 0.00015, "completion_tokens": 0.0035},
    "gemini-2.0-flash-thinking-exp-01-21": {"capability":"reasoning", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.0, "completion_tokens": 0.0},
    "gemini-2.5-pro-exp-03-25": {"capability":"reasoning", "multimodal":"true","templ_formating":"text", "prompt_tokens": 0.0, "completion_tokens": 0.0},
    "gemini-2.5-pro-preview-03-25": {"capability":"reasoning", "multimodal":"true","templ_formating":"text", "prompt_tokens": 0.00125, "completion_tokens": 0.01},
    "claude-3-5-haiku-20241022": {"capability":"base", "multimodal":"true","templ_formating":"xml", "prompt_tokens": 0.0008, "completion_tokens": 0.004},
    "claude-3-5-sonnet-20241022": {"capability":"base", "multimodal":"true","templ_formating":"xml", "prompt_tokens": 0.003, "completion_tokens": 0.015},
    "claude-3-7-sonnet-20250219": {"capability":"base", "multimodal":"true","templ_formating":"xml", "prompt_tokens": 0.003, "completion_tokens": 0.015},
    "open-mixtral-8x7b": {"capability":"base", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.0007, "completion_tokens": 0.0007},
    "mistral-small-latest": {"capability":"base", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.001, "completion_tokens": 0.003},
    "codestral-latest": {"capability":"base", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.001, "completion_tokens": 0.003},
    "open-mixtral-8x22b": {"capability":"base", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.002, "completion_tokens": 0.006},
    "mistral-large-2407": {"capability":"base", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.003, "completion_tokens": 0.009},
    "deepseek-chat": {"capability":"base", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.00014, "completion_tokens": 0.00028},
    "deepseek-reasoner": {"capability":"reasoning", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.00055, "completion_tokens": 0.00219},
    "/mnt/c/Users/pgalk/vllm/models/DeepSeek-R1-Distill-Qwen-14B": {"capability":"reasoning", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.00, "completion_tokens": 0.00},
    "deepseek-r1-distill-llama-70b": {"capability":"reasoning", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.00, "completion_tokens": 0.00},
    "deepseek-r1:32b": {"capability":"reasoning", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.00, "completion_tokens": 0.00},
    "deepseek-ai/deepseek-r1": {"capability":"reasoning", "multimodal":"false","templ_formating":"text", "prompt_tokens": 0.00, "completion_tokens": 0.00}
  }
}

LLM_CONFIG.json 配置文件需要位于 BambooAI 的工作目录中,例如 /Users/palogalko/AI_Experiments/Bamboo_AI/web_app/LLM_CONFIG.json,并且指定模型的所有 API 密钥也需要存在于工作目录中的 .env 文件中。
根据我们截至 2025 年 4 月 22 日使用体育和性能数据集的测试,上述智能体/模型组合是性能最佳的。强烈建议你尝试这些设置,以找到最适合你特定用例的组合。

智能体角色

  • 专家选择器:确定处理查询的最佳专家类型
  • 分析师选择器:选择具体的分析方法
  • 理论家:提供理论背景和方法论
  • 数据框检查器:分析并理解数据结构。(需要本体文件)
  • **
5 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 19 ms
Developed with Cursor