PandasAI v3 移除 custom_whitelisted_dependencies 后如何用 Docker 沙箱替代

发布时间:2026/9/14 17:10:11

PandasAI v3 移除 custom_whitelisted_dependencies 后如何用 Docker 沙箱替代 PandasAI v3 移除 custom_whitelisted_dependencies 后如何用 Docker 沙箱替代【免费下载链接】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如果你在 v2 里用custom_whitelisted_dependencies给 PandasAI 的 LLM 代码执行加了自定义模块升级到 v3 后会发现这个配置项已经被删除——v3 明确用沙箱环境sandbox environment来处理代码执行安全。这篇文章面向正在做 v2 到 v3 迁移的开发者任务是把依赖白名单配置的旧应用改造成 v3 写法并让 LLM 生成的代码在 Docker 沙箱中运行。适用前提系统上已安装并在运行 Docker项目里已配置好 LLM文中示例使用pandasai-litellm扩展。custom_whitelisted_dependencies 在 v2 与 v3 中的差别v2 的默认白名单模块为pandas、numpy、matplotlib、seaborn、datetime、json、base64实例化Agent时可通过custom_whitelisted_dependencies参数追加模块模块必须已安装在 PandasAI 运行的环境中见 v2 自定义白名单文档。v2 文档同时给出了关键限制PandasAI cannot sandbox arbitrary code execution for custom libraries that are whitelisted.也就是说被加入白名单的库等于完全不受沙箱约束可以执行任意代码。这正是 v3 移除该配置项的原因。v3 的 迁移指南 在“Breaking Changes / Configuration”一节列出了被删除的配置项save_charts, enable_cache, security, custom_whitelisted_dependencies, save_charts_path, custom_head并说明了替代方向“Security handled through sandbox environment”。迁移步骤的 Step 7 也要求把custom_whitelisted_dependencies、security等旧配置从代码中删掉只保留 v3 的全局配置pai.config.set({ llm: llm, save_logs: True, verbose: False, max_retries: 3 })所以迁移路径是固定的两步删掉旧白名单配置改用 Docker 沙箱承载 LLM 生成代码的执行。准备条件按 隐私与安全文档 和 Agent 文档 的要求使用前需要本机安装 Docker 并确保它正在运行文档明确要求Make sure you have Docker running on your system before using the sandbox environment。安装 PandasAI 本体和 LLM 扩展pip install pandasai pandasai-litellm安装沙箱扩展pip install pandasai-docker沙箱扩展的 README 也给出 poetry 安装方式poetry add pandasai-docker。配置全局设置并启用沙箱v3 的配置是全局的pai.config.set()对所有 DataFrame 生效不再有 per-dataframe 的config参数。完整的最小示例来自 隐私与安全文档import pandasai as pai from pandasai_docker import DockerSandbox from pandasai_litellm.litellm import LiteLLM # Initialize LiteLLM with your OpenAI model llm LiteLLM(modelgpt-4.1-mini, api_keyYOUR_OPENAI_API_KEY) # Configure PandasAI to use this LLM pai.config.set({ llm: llm }) # initialize the sandbox sandbox DockerSandbox() sandbox.start() # read a csv as df df pai.read_csv(./data/heart.csv) # pass the df and the sandbox result pai.chat(plot total heart patients by gender, df, sandboxsandbox) # display the chart result.show() # stop the sandbox (docker container) sandbox.stop()代码中需要替换的只有两处api_key换成你自己的 LLM 密钥./data/heart.csv换成你要分析的本地 CSV 相对路径仓库 examples/data/heart.csv 有一份同名样例数据可参考。各步骤的判断依据pai.config.set()是 v3 唯一的全局配置入口若配置不生效迁移排查文档 指出应确认改用pai.config.set(config)而不是 v2 的SmartDataframe(data, configconfig)写法pai.chat(..., sandboxsandbox)传入沙箱后LLM 生成的代码在隔离的 Docker 容器内执行而不是在宿主机上直接跑result.show()能正常渲染出图表说明这次带沙箱的问答走通了用完后必须调用sandbox.stop()停掉容器否则会遗留一个常驻的 sandbox 容器。文档列出的沙箱特性包括代码在完全隔离的 Docker 容器内执行Isolated Execution、沙箱全程离线运行、阻断任何外部网络请求Offline Operation、严格的系统资源控制Resource Limitations、文件系统隔离File System Isolation。离线这一点要注意沙箱内的代码无法访问外网如果你的分析代码原本依赖下载资源这条路不成立。文档建议在这些场景下使用沙箱构建面向公众的应用、处理不可信的用户输入、生产环境部署、处理敏感数据、多租户环境。在 Agent 中替代 v2 的白名单配置如果你的 v2 代码是通过Agent(df, config{custom_whitelisted_dependencies: [...]})挂白名单的v3 对应写法是把沙箱传给Agent示例来自 Agent 文档from pandasai import Agent from pandasai_docker import DockerSandbox # Initialize the sandbox sandbox DockerSandbox() sandbox.start() # Create an agent with the sandbox df pai.read_csv(data.csv) agent Agent([df], sandboxsandbox) # Chat with the agent - code will run in the sandbox response agent.chat(Calculate the average sales) # Dont forget to stop the sandbox when done sandbox.stop()Agent本身在 v3 中保持不变只是移除了clarification_questions()、rephrase_query()、explain()三个方法多轮场景用follow_up()代替见 迁移指南。如果默认沙箱镜像不满足需求Agent 文档给出了自定义入口指定自定义镜像名和自定义 Dockerfilesandbox DockerSandbox( custom-sandbox-name, /path/to/custom/Dockerfile )第二个参数需要你替换为自己机器上某个 Dockerfile 的路径文档没有提供具体的自定义 Dockerfile 内容只能给出签名。默认镜像里装了什么可以看扩展自带的 Dockerfile基础镜像为python:3.9只安装了pandas、numpy、matplotlib工作目录/app容器命令为sleep infinity保持存活。对照 v2 的默认白名单含seaborn、datetime、json、base64可以据此判断你的分析代码能否直接在默认沙箱里跑依赖pandas/numpy/matplotlib的没问题依赖其他第三方库的要么改代码要么按上一节的方式换成自建 Dockerfile。另外沙箱代码中执行 SQL 时查询结果会被转成 CSV 文件传入容器处理见 docker_sandbox.py 中transfer_file相关实现SQL 查询本身在宿主侧完成这一点与“容器完全离线”并不矛盾。验证迁移结果迁移指南给出了迁移后的验证用例可直接作为沙箱改造后的回归测试Basic Chat Testimport pandasai as pai import pandas as pd df pd.DataFrame({x: [1, 2, 3], y: [4, 5, 6]}) df pai.DataFrame(df) response df.chat(What is the sum of x?) print(response)判断标准代码里不再出现custom_whitelisted_dependencies、security、enable_cache等 v2 配置项且用pai.config.set()完成全局配置后程序无异常带sandboxsandbox的pai.chat/agent.chat能返回结果result.show()能展示图表结束时sandbox.stop()成功停掉容器无遗留的 sandbox 容器。若出现ModuleNotFoundError: No module named pandasai.llm这是 v2 导入路径残留安装pandasai-litellm并改用 LLM 扩展 的导入方式即可具体对照见 迁移排查文档。限制沙箱是 v3 的替代方案但它不等同于 v2 的“白名单 信任库”模式默认镜像只带pandas、numpy、matplotlibv2 白名单里的seaborn等模块不会自动出现在沙箱中。沙箱容器离线运行容器内代码不能发起外部网络请求。使用沙箱前 Docker 必须处于运行状态文档未提供更细的错误排查顺序遇到容器级报错时先确认 Docker 服务状态与pandasai-docker是否安装成功。生产环境若需要自定义安全策略、高级资源管理、增强监控等能力文档将其归为企业版Enterprise license提供的沙箱选项见 隐私与安全文档 的 Enterprise Sandbox Options 一节。【免费下载链接】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),仅供参考
延伸阅读

更多相关文章

2026/9/14 17:50:14

2026年实验室防潮升级:红外防潮箱如何实现温湿度双控与自动再生

前段时间帮一个做材料研发的朋友调试新实验室,聊到防潮设备时他抱怨说,传统防潮箱里的变色硅胶一到梅雨季就“撑不住”,三天两头要取出来烘烤,仪器间的湿度还总是忽高忽低。后来我们换了一台红外防潮箱,几个月用下来&a…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码