1. Pandas AI是什么?

PandasAI是一个Python库,可以很容易地用自然语言向数据提问。它帮助非技术用户以更自然的方式与他们的数据交互,并帮助技术用户在处理数据时节省时间和精力。

2. 准备工作

We use poetry as 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]            [沙箱]          [验证]
  1. Agent.chat() 接收自然语言查询
  2. CodeGenerator 根据 schema/data 构建 prompt,调用 LLM 生成 Python 代码
  3. CodeExecutor 在受控环境中执行代码(包含数据框)
  4. ResponseParser 验证并将结果转换为类型化响应(String/Number/DataFrame/Chart)
  5. 将结果返回给用户

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 使用插件架构实现可扩展性:

  1. extensions/llms: LLM 提供商(openai、litellm)
  2. extensions/connectors: 数据源连接器(sql、yfinance)
  3. extensions/ee: 企业版功能

扩展模式:

  1. 每个扩展有独立的 `pyproject.toml`
  2. 单独安装:`pip install pandasai-openai`
  3. 基础库不需要特定扩展

测试扩展:

cd extensions/llms/{extension_name}
poetry install --with test
poetry run pytest tests/

下一篇介绍如何用数据验证 Pandas AI

数据来源(Find Open Datasets and Machine Learning Projects | Kaggle

更多推荐