PandaAI 是一个开源框架,将智能数据处理和自然语言分析相结合。无论您是处理复杂的数据集,还是刚刚开始数据之旅,PandaAI 都提供了定义、处理和高效分析数据的工具。通过其强大的数据准备层和直观的自然语言界面,您可以在不编写复杂代码的情况下将原始数据转化为可操作的见解。
对于之前版本的用户来说,PandaAI 3.0 (目前处于测试阶段)标志着一个重要的发展,它不仅超越了对话分析,还引入了一个全面的数据准备框架,彻底改变了您构建和与数据交互的方式。
PandaAI 3.0 以强大的数据准备层为根基,该准备层赋予用户诸多能力,例如利用丰富的元数据来定义语义数据架构,搭建起不同表格之间的数据关联,打造出融合多个数据源的集成视图,同时还能够处理诸如Parquet、CSV 等在内的各种数据格式。
在继承过往优势的基础上,PandaAI 持续拓展其自然语言功能,能够将普通的英语查询转化为可执行代码,生成动态的可视化图表,并且借助简易的对话就能完成复杂的数据分析。
安装
PandaAI 需要 Python 3.8+,但低于 3.12。我们推荐使用 Poetry 进行依赖管理:
# 使用 Poetry(推荐)
poetry add "pandasai>=3.0.0b2"
# 替代:使用 pip
pip install "pandasai>=3.0.0b2"
快速设置
要使用 PandaAI,您需要一个大型语言模型(LLM)。虽然您可以使用任何 LLM,但平台推荐使用 BambooLLM。您可以在 https://app.pandabi.ai 注册以获取免费的 API 密钥,这将使您既能使用数据平台,又能获得 BambooLLM 的使用额度。
首先,导入 PandaAI 并设置您的 API 密钥:
import pandasai as pai
# 从 https://app.pandabi.ai 获取您的 API 密钥
pai.api_key.set("YOUR_PANDABI_API_KEY")
与数据对话
import pandasai as pai
# 加载数据
df = pai.read_csv("data/companies.csv")
response = df.chat("每个地区的平均收入是多少?")
print(response)
当您提问时,PandaAI 将使用 LLM 生成答案并输出响应。根据您的问题,它可能会返回不同类型的响应:字符串、数据框、图表、数字
创建您的第一个数据层
1. 定义数据源 从创建描述您数据集的数据架构开始:
import pandasai as pai
# 加载数据
df = pai.read_csv("data/companies.csv")
# 创建数据层
companies = pai.create(
path="my-org/companies",
df=df,
description="客户公司数据集"
)
此数据集将保存在您项目的 datasets/my-org/companies 文件夹中。
2. 定义数据集的结构
默认情况下,列将从数据中推断出来。然而,为了获得更多的控制权,您可以定义明确的列架构:
# 使用明确的架构定义公司数据集
companies =
pai.create(
path="my-org/companies",
df=df,
description="客户公司数据集",
columns=[
{
"name":
"company_name",
"type": "string",
"description": "公司名称"
},
{
"name": "revenue",
"type": "float",
"description": "公司收入"
},
{
"name": "region",
"type": "string",
"description": "公司所在地区"
}
]
)
3. 加载和查询数据 定义完成后,您可以轻松加载和查询您的数据集:
# 加载现有数据集
stocks = pai.load("organization/coca_cola_stock")
companies = pai.load("organization/companies")
# 使用自然语言查询
response = stocks.chat("可口可乐股票的波动性如何?")
response = companies.chat("每个地区的平均收入是多少?")
# 使用多个数据集查询
result = pai.chat("比较可口可乐和苹果的收入", stocks, companies)
分享与协作 将您的数据层与团队共享:
# 将数据集推送到平台
stocks.push()
companies.push()
团队成员可以通过以下方式访问和查询共享的数据集:
• https://app.pandabi.ai 的网页界面
• 使用自己的 PandaAI 代码,例如 pai.load("organization/dataset-name")
当然,他们只能看到他们有权限访问的数据集。您可以使用权限管理功能来控制访问权限。
使用API访问国产大模型
这段代码展示了如何在使用 PandaAI 时,配置并使用 OpenAI 的语言模型(LLM),特别是将一个名为 deepseek-r1
的模型集成到 PandaAI 的配置中。以下是对代码的逐步解释:
1. 导入必要的模块
import pandasai as pai
from pandasai_openai import OpenAI
import pandasai as pai
:导入 PandaAI 库,并将其简称为 pai
,以便后续调用其功能。
from pandasai_openai import OpenAI
:从 PandaAI 的 OpenAI 扩展模块中导入 OpenAI
类。这个类用于与 OpenAI 的语言模型进行交互。
2. 实例化 OpenAI 类
llm = OpenAI(api_base="xxx",
api_token="xxx")
OpenAI(api_base="xxx", api_token="xxx")
:创建一个 OpenAI
对象 llm
,并传入两个参数:
api_base
:指定 OpenAI API 的基础 URL。这通常是 OpenAI 提供的 API 服务地址,但在这里用 "xxx"
占位,需要替换为实际的 API 地址。
api_token
:OpenAI API 的认证令牌,用于身份验证。同样,"xxx"
是占位符,需要替换为您的实际 API 密钥。
3. 配置语言模型
llm.model = "deepseek-r1"
llm._supported_chat_models.append(llm.model)
llm.model = "deepseek-r1"
:将 llm
对象的 model
属性设置为 "deepseek-r1"
,指定要使用的语言模型为 deepseek-r1
。
llm._supported_chat_models.append(llm.model)
:将 deepseek-r1
模型添加到 llm
对象支持的聊天模型列表中。这一步确保 PandaAI 知道可以使用 deepseek-r1
模型进行聊天功能。
4. 配置 PandaAI
pai.config.set({
"llm": llm,
"save_logs": True,
"verbose": False,
"max_retries": 3
})
pai.config.set({...})
:使用 pai.config.set()
方法设置 PandaAI 的全局配置。
"llm": llm
:将前面创建并配置好的 OpenAI
对象 llm
设置为 PandaAI 使用的语言模型。
"save_logs": True
:启用日志保存功能,将 PandaAI 的运行日志保存到文件中。这有助于后续的调试和问题排查。
"verbose": False
:禁用详细模式,不将日志信息输出到控制台。这可以使输出更加简洁,避免过多的日志信息干扰。
"max_retries": 3
:设置最大重试次数为 3。当与语言模型交互时,如果出现错误或失败,PandaAI 最多会重试 3 次。
调用本地大模型
如果你是用Ollama搭建的本地大模型,那么,也可以很方便地进行使用。只需要将对应的 api_base 和 api_token 更换即可。api_base可设置为 http://localhost:11434/v1/,而api_token默认可设置为EMPTY,或者你已指定的token。调用代码参考:
llm = OpenAI(api_base="http://localhost:11434/v1/", api_token="EMPTY")
llm.model = "deepseek-r1:14b"
llm._supported_chat_models.append(llm.model)
其它代码与上相同。
让PandasAI说中文
如图所示,代码中,我们仅仅设置了三个环境变量:PANDABI_API_URL、PANDABI_API_KEY、MODEL,即实现了让 PandasAI 说中文的能力。其实,这里修改了一处源码,稍微调整了一下。使用这个源码就能实现 PandasAI 说中文的功能。有需要的,可以关注我,后台给我留言获取。