2天81starsTerrarium高效经济的Python沙盒AI开源项目

内容同步自知识星球《AGI Hunt》,加入可查看更多项目与实时AI动向
Terrarium:高效经济的Python沙盒
2024-04-24 81 stars 17 forks
Terrarium 是由 cohere-ai 创建的一个简单、低延迟且经济的 Python 沙盒,专为执行不可信用户或 LLM(大型语言模型)生成的 Python 代码而设计。它可以作为 Docker 部署的容器,例如在 GCP Cloud Run 上使用。
特点
快速 :生成一个 200 dpi 的 matplotlib 条形图的运行时间仅为 900ms,SVG 版本为 500ms。
经济 :在 GCP 上托管 Terrarium 的成本每月不到 30 美元。
完全隔离 :每次调用后沙盒都会被完全回收,不携带任何状态。
支持原生输入/输出文件 :可以发送任意数量和类型的文件作为请求的一部分,执行代码后会收集所有生成的文件并随响应返回。
支持多种常见包 :Terrarium 运行在 Pyodide 上,因此支持 numpy、pandas、matplotlib、sympy 等标准 Python 包。
使用 Terrarium
使用已部署的 Cloud Run 非常简单,只需通过以下命令调用:
curl -X POST --url <你的部署 GCP Cloud Run 名称> -H "Authorization: bearer $(gcloud auth print-identity-token)" -H "Content-Type: application/json" --no-buffer --data-raw '{"code": "1 + 1"}'
返回结果示例:
{ "output_files":[], "final_expression":2, "success":true, "std_out":"", "std_err":"", "code_runtime":16}
沙盒设计
Terrarium 的沙盒由多层组成:
在 node.js 进程中解析、编译并执行 Python 代码,通过 CPython 编译为 WebAssembly 实现,不以原生方式运行。
将 node.js 主机部署到 GCP Cloud Run 容器中,进一步限制运行时环境。
开发与部署
Terrarium 需要在系统上安装 node.js。可以通过 npm install 安装依赖,并使用 Docker 进行构建、运行和停止。
部署到 GCP Cloud Run
可以通过 GCP Cloud Run 进行部署,并且可以分配更多资源以加快运行时间,同时限制并发数。
处理超时
Pyodide 运行在 node.js 主进程上,可能会阻塞 node.js 响应。如果需要中断,建议使用 Worker。
限制
版权声明:
作者:clash
链接:https://www.shadowrocket6.top/258.html
来源:Shadowrocket官网
文章版权归作者所有,未经允许请勿转载。


共有 0 条评论