PandasAI V3 中文对话功能体验:结合 DeepSeek-R1 与本地大模型,开启智能数据分析新旅程_pandasai调用本地大模型接口
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\"# 替代:使用 pippip 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 paifrom 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 说中文的功能。有需要的,可以关注我,后台给我留言获取。