如何用 PandasAI v3 语义层接入 PostgreSQL 表并用自然语言查询【免费下载链接】pandas-aiChat with your database or your datalake (SQL, CSV, parquet). PandasAI makes data analysis conversational using LLMs and RAG.项目地址: https://gitcode.com/GitHub_Trending/pa/pandas-ai如果你在用 PandasAI v3想把 PostgreSQL 数据库里的一张表接入语义层semantic layer然后用自然语言直接提问而不是手写 SQL本文给出的完整路径是安装pandasai-sql[postgres]扩展 → 用pai.create()声明数据源并生成 schema → 用pai.load()加载数据集 → 调用chat()提问。适用前提Python3.8 3.11一个可用的 LLM文档示例通过pandasai-litellm扩展使用 OpenAI 模型以及一个可访问的 PostgreSQL 实例和数据库账号。准备安装 PandasAI 与 SQL 扩展PandasAI 基础包不包含 SQL 扩展需要按目标数据库单独安装。接入 PostgreSQL 时安装postgresextrapip install pandasai pandasai-litellm pip install pandasai-sql[postgres]也可以用 poetrypoetry add pandasai pandasai-litellm、poetry add pandasai-sql[postgres]。postgresextra 会带进psycopg2-binary驱动见 extensions/connectors/sql/pyproject.toml。PandasAI v3 的 LLM 不再是内置功能而是扩展且配置是全局的通过pai.config.set()生效于所有 dataframe不再按单个 dataframe 传 configimport pandasai as pai from pandasai_litellm.litellm import LiteLLM llm LiteLLM(modelgpt-4.1-mini, api_keyYOUR_OPENAI_API_KEY) pai.config.set({ llm: llm })YOUR_OPENAI_API_KEY替换为你自己的 API key迁移指南的示例中使用的是gpt-4o-mini两者均出自文档示例可按 LiteLLM 支持的模型自行选择。用 pai.create() 声明 PostgreSQL 数据源v2 里是用PostgreSQLConnector直接构造SmartDataframev3 改为通过语义层的pai.create()声明数据源。最小可用写法字段均来自 docs/v3/migration-guide.mdx 的迁移示例import pandasai as pai sql_table pai.create( pathcompany/sales, descriptionSales data from PostgreSQL, source{ type: postgres, connection: { host: localhost, database: mydb, user: ${DB_USER}, password: ${DB_PASSWORD} }, table: sales } )各参数在 docs/v3/semantic-layer/new.mdx 中的说明path数据集在 PandasAI 中的唯一标识格式为organization/dataset例如acme-corp/sales-data组织标识在你的组织内唯一数据集标识在组织内唯一。source.type数据源类型。PostgreSQL 在文档的 type 列表中写作 postgresql但所有可运行的示例Pythonpai.create()示例、YAML 示例和仓库集成测试使用的都是type: postgres本文代码块与示例保持一致。source.connection连接信息包含host、port、database、user、password。文档明确要求敏感信息用环境变量占位如${DB_USER}、${DB_PASSWORD}不要硬编码凭据。source.table要查询的表名。如果还需要向 LLM 说明列的含义可以追加columns参数docs/v3/semantic-layer/data-ingestion.mdx 的 MySQL 示例即此结构columns: [ {name: transaction_id, type: string, description: Unique identifier for each transaction}, {name: quantity, type: integer, description: Number of items sold} ]不传columns时输入的全部列都会进入语义层传了则只包含声明的列。支持的type取值string、integer、float、datetime、boolean。调用pai.create()后项目datasets/目录下会自动生成一份 YAML 配置文件。你也可以跳过 Python API直接在datasets/organization_name/dataset_name目录下手写schema.yamlPostgreSQL 源的 YAML 形态如下来自 docs/v3/semantic-layer/new.mdxsource: type: postgres connection: host: postgres-host port: 5432 database: postgres user: postgres password: ****** table: orders view: false注意该文档示例中password为脱敏占位******实际使用时替换为真实密码或按安全建议改为环境变量host、database、user、table同理替换为你自己的值。加载数据集并用自然语言查询数据集创建完成后用pai.load(path)加载再调用chat()提问dataset pai.load(company/sales) response dataset.chat(What is the total sales by product?) print(response)这是 docs/v3/migration-guide.mdx 中 Migrate Data Connectors 一步之后的查询方式与 CSV/parquet 数据集的用法一致。chat()的返回类型取决于问题可能是 string、dataframe、chart 或 number见 docs/v3/getting-started.mdx。验证接入是否成功仓库的集成测试 tests/integration_tests/sql/test_sql.py 展示了文档体系中对 PostgreSQL 数据集的两类检查可以照着核对schema 文件已生成datasets/organization/dataset/schema.yaml存在测试断言schema.yaml路径存在。数据可加载、可查询pai.load(slug)后调用head()能取到表头数据对数据集调用chat(Give me all the dataset)返回结果对象其.value为 DataFrame。如果chat()报连接类错误文档没有给出排错顺序只能确认上面 connection 字段与数据库实例的 host、port、账号是否对应。从 v2 迁移过来时的对应关系如果你的代码里还有 v2 写法对照关系如下docs/v3/migration-guide.mdxv2v3pip install pandasai含内置 connectorpip install pandasai-sql[postgres]扩展独立安装from pandasai.connectors import PostgreSQLConnectorimport pandasai as paiSmartDataframe(PostgreSQLConnector(config{...}))pai.create(path..., source{type: postgres, ...})每个 dataframe 单独传config{llm: llm}全局pai.config.set({llm: llm})迁移指南的 Basic Chat Test 给出了一个不依赖数据库的冒烟测试用pai.DataFrame包装一个内存 DataFrame 并chat(What is the sum of x?)可以先验证 LLM 配置是否正常再排查数据库侧问题。限制与注意事项语义层在文档中标注为实验性功能experimental feature文档建议面向进阶用户schema 定义出错时优先检查columns的type是否落在上述五种取值内。pai.create()支持的其他数据源MySQL、BigQuery、Snowflake 等取决于已安装的数据扩展云数据扩展Snowflake、Databricks、BigQuery、Oracle需要企业版 licensePostgreSQL 所在的pandasai-sql不需要。v2 的save_charts、enable_cache、security等配置项在 v3 已移除配置里只保留llm、save_logs、verbose、max_retries这类现行选项。下一步可以继续查阅 Data Ingestion 了解全部数据扩展清单以及 Semantic Data Layer 中语义层的作用与 schema 创建细节。【免费下载链接】pandas-aiChat with your database or your datalake (SQL, CSV, parquet). PandasAI makes data analysis conversational using LLMs and RAG.项目地址: https://gitcode.com/GitHub_Trending/pa/pandas-ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
