AI开源应用:Pandas AI(一)
1. Pandas AI是什么?
PandasAI是一个Python库,可以很容易地用自然语言向数据提问。它帮助非技术用户以更自然的方式与他们的数据交互,并帮助技术用户在处理数据时节省时间和精力。
2. 准备工作
We use
poetryas our package manager. You can install poetry by following the instructions here.Please DO NOT use pip or conda to install the dependencies. Instead, use poetry:
git clone https://github.com/sinaptik-ai/pandas-ai.git
# ----------安装 Poetry-------------------
# (1) install python-poetry, Powershell 下:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
poetry --version
# (2) install pipx -> poetry
py -m pip install --user pipx
# 可能有WARNING: The script pipx.exe is installed in 'C:\Users\abc\AppData\Roaming\Python\Python314\Scripts' which is not on PATH.
# 把给你的这个文件夹 加到 sysdm.cpl 的 Path 环境变量里面,之后 pipx 就能识别了
# install poetry
pipx install poetry
# install make
choco install make
到项目目录下:
# Package manager
poetry install --all-extras --with dev
# Pre-commit
pre-commit install
# Linting
make format_diff
# Code Format with ruff-format
make format
# Spell check
make spell_fix
# Testing
make test_all
make test_core
make test_extensions
make test-coverage
# Make sure that all tests pass before submitting a pull request.
3. 项目
3.1 核心流程
用户查询 → CodeGenerator → CodeExecutor → ResponseParser → 响应
↓ ↓ ↓
[LLM] [沙箱] [验证]
- Agent.chat() 接收自然语言查询
- CodeGenerator 根据 schema/data 构建 prompt,调用 LLM 生成 Python 代码
- CodeExecutor 在受控环境中执行代码(包含数据框)
- ResponseParser 验证并将结果转换为类型化响应(String/Number/DataFrame/Chart)
- 将结果返回给用户
3.2 核心组件
Agent (pandasai/agent/base.py)
- 主要编排器,管理完整的对话生命周期
- 方法:`chat()`、`follow_up()`、`generate_code()`、`execute_code()`
- 包含代码生成和执行的重试逻辑
AgentState (pandasai/agent/state.py)
- 在流程中传递的上下文容器
- 包含:数据框、配置、内存、中间值(上次生成/执行的代码)
- 使用延迟属性初始化的数据类
CodeGenerator (pandasai/core/code_generation/base.py)
- 通过 LLM 从自然语言生成 Python 代码
- 执行验证、清理和错误处理
- 与 LLM 抽象层的集成点
CodeExecutor (pandasai/core/code_execution/code_executor.py)
- 在受控环境中执行生成的 Python 代码
- 返回包含执行结果的环境字典
- 支持错误处理和结果提取
LLM Abstraction (pandasai/llm/base.py)
- 接口:generate_code(prompt, context)->str
- 可扩展以支持自定义 LLM 提供商
- 实现在 (extensions/llms/): openai、litellm
DataFrame Abstraction (pandasai/dataframe/base.py)
- 扩展 `pd.DataFrame`,添加 `.chat()` 方法
- 包含元数据:schema、description、source
QueryBuilders (pandasai/query_builders/)
- 为不同数据源适配查询
- 类型:LocalQueryBuilder(DuckDB)、SQLQueryBuilder(远程数据库)、ViewQueryBuilder
- 处理 SQL 生成、分页、转换
ResponseParser (pandasai/core/response/parser.py)
- 验证响应结构:`{"type": "...", "value": ...}`
- 创建类型化响应对象(NumberResponse、StringResponse、DataFrameResponse、ChartResponse)
3.3 插件扩展
PandasAI 使用插件架构实现可扩展性:
- extensions/llms: LLM 提供商(openai、litellm)
- extensions/connectors: 数据源连接器(sql、yfinance)
- extensions/ee: 企业版功能
扩展模式:
- 每个扩展有独立的 `pyproject.toml`
- 单独安装:`pip install pandasai-openai`
- 基础库不需要特定扩展
测试扩展:
cd extensions/llms/{extension_name}
poetry install --with test
poetry run pytest tests/
下一篇介绍如何用数据验证 Pandas AI
数据来源(Find Open Datasets and Machine Learning Projects | Kaggle)
更多推荐


所有评论(0)