AI开源应用:Pandas AI(一)
1. Pandas AI是什么?
PandasAI是一个Python库,可以很容易地用自然语言向数据提问。它帮助非技术用户以更自然的方式与他们的数据交互,并帮助技术用户在处理数据时节省时间和精力。
2. 准备工作
关于 conda & python 环境可以看之前的文:Windows下 AutoGen(一)环境准备-CSDN博客
git clone https://github.com/sinaptik-ai/pandas-ai.git# The currently activated Python version 3.13.5 is not supported by the project (>=3.8,<3.12).
# so create venv with python=3.10
conda create -n py310 python=3.10
conda activate py310# install pipx, 假设你的python已经装了
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, PandasAI 用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_allmake test_coremake test_extensionsmake 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)

