Pandora Box: Code Interpreter平替,Python驱动Agent最佳选择
在大型语言模型(LLMs)的时代,Pandora Box作为一款开创性的开源Python包,旨在赋能开发者和创新者创建基于LLM的应用程序和Agent。这一多功能工具旨在提供一个健壯且安全的Python环境,便于无缝集成和执行LLM驱动的项目。Pandora Box完全免费,通过pip install即可轻松安装。
Pandora Box的关键优势:
-
完全开源且免费:采用Pandora Box,拥抱开放开发精神,提供对其源代码的完全访问权限。这确保了一个协作且不断进化的平台,供从事LLM应用和Agent开发的开发者使用,无需任何财务障碍。
-
无缝本地部署:通过一个简单的pip install命令即可立即开始。Pandora Box的安装便捷性使得开发者能够迅速配置并深入LLM基础项目开发。
-
多功能应用:无论是在Python脚本中,还是Http服务方式,Pandora Box都提供了实现你愿景所需的灵活性和工具。
-
高效的环境管理:以前所未有的便捷性创建、执行和关闭Python环境。Pandora Box简化了开发过程,使开发者能够专注于创新,而不是环境设置和管理。
-
Python驱动的LLM Agent:Pandora Box能很好的满足基于LLM的Python驱动的Agent开发。它提供了一个安全的环境,用于运行python代码,确保你的LLM代理能够高效地运行。
Pandora Box不仅仅是一个Python包;它是通往LLM基础开发未来的大门。通过提供一个安全、易用且完全开源的解决方案,它使开发者能够探索他们的LLM应用和代理的全部潜力。无论你是在创建一个编码助手、一个AI数据分析师,还是任何其他LLM驱动的工具,Pandora Box都为你提供了创新和卓越的基础。
安装
为了确保环境隔离和安全,最好使用conda
来创建一个独立的虚拟环境。
# python >= 3.11
conda create -n pandora-box python=3.11
conda activate pandora-box
pip install PandoraBox
使用
Pandora Box可以通过两种不同的方式使用:要么通过Python脚本,要么通过HTTP服务,从而满足多种使用场景的需求。
HTTP 服务
HTTP服务器主要通过pbox
命令使用,该命令包括创建和查询API KEY,以及启动HTTP服务器。你可以通过使用pbox -h
查看详细信息。
$ pbox -h
usage: pbox [-h] {s,a,k} ...
positional arguments:
{s,a,k}
s Start Pandora Box Server
a Add a new API KEY
k List all API KEYS
options:
-h, --help show this help message and exit
在启动HTTP服务器之前,你需要先使用以下命令创建一个API KEY,该API KEY将用于在访问你接下来创建的HTTP服务器时进行身份验证。
$ pbox a
pb-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
你可以通过上述方法创建多个API KEY。
然后,你可以通过以下命令查看你创建的所有API KEY:
$ pbox k
API-KEY-1
...
API-KEY-n
现在,你可以使用以下命令启动HTTP服务器:
$ pbox s
默认情况下,服务启动在地址0.0.0.0
和端口9501
。你可以在使用pbox s
命令时,通过传递server
和port
参数来指定启动地址和端口。
$ pbox s --server x.x.x.x --port xxxx
$ pbox s -h
usage: pbox s [-h] [--server SERVER] [--port PORT]
options:
-h, --help show this help message and exit
--server SERVER Server address
--port PORT Port
恭喜🎉,你已经启动了HTTP服务器。你可以在http://127.0.0.1:9501/docs查看API文档。
状态检查
你可以使用curl
来检查http服务器的健康状态:
$ curl http://127.0.0.1:9501/health
success
创建 Python SandBox
你可以按照以下方式创建一个Python沙盒环境:
$ curl http://127.0.0.1:9501/create \
-H "API-KEY: your-api-key"
{
"kernel_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
你将收到一个kernel_id,这是Python沙盒的唯一标识符。如果创建后返回了kernel_id,这表明创建成功。
查询 Python SandBox
当前已创建的Python环境可以通过以下方式查询:
$ curl http://127.0.0.1:9501/kernels \
-H "API-KEY: your-api-key"
{
"kernel_ids":[
"kernel_id_1",
"kernel_id_2",
"...",
"kernel_id_n"]
}
执行 Python 代码
现在,你可以在这个Python沙盒中执行Python代码:
$ curl http://127.0.0.1:9501/execute \
-H "API-KEY: your-api-key" \
-H "Content-Type: application/json; charset=utf-8" \
-H "KERNEL-ID: your-kernel-id" \
-d '{
"code": "print(\"Hello, Pandora Box!\")"
}'
{
"results": [],
"logs": {
"stdout": ["Hello, Pandora Box!"],
"stderr": []
},
"error": null
}
执行Python代码后,返回的结果可能包括以下几个部分:
results
包含了base64编码的图像数据,如果你使用matplotlib绘制了图片。
logs
包含了执行过程中打印到标准输出(stdout)和标准错误(stderr)的信息。日志的例子包括打印语句、警告、子进程输出等。它包含两个字段:
stdout
:字符串列表,每个字符串是打印到标准输出的一行。stderr
:字符串列表,每个字符串是打印到标准错误的一行。
error
包含了执行单元格过程中出现的错误信息。它包含三个字段:
name
:错误的名称,例如NameError、ValueError等。value
:错误的值,例如’name ’non_existent_variable’ is not defined’等。traceback
:错误的追踪信息。
关闭 Python Sandbox
当你不需要使用Python环境时,可以及时关闭它以减少资源浪费。
$ curl http://127.0.0.1:9501/close \
-H "API-KEY: your-api-key" \
-H "KERNEL-ID: your-kernel-id"
{
"message": "Sandbox Closed."
}
每个sandbox如果没有手动关闭,将在6小时后自动关闭。这意味着每个内核的最大持续时间是6小时。这样做是为了避免资源浪费。当前版本还不支持持续时间设置。
Python 脚本中使用
你可以在Python脚本中直接导入pbox包进行使用。如果你不需要任何Python环境管理或API KEY认证功能,你可以直接使用CodeSandBox创建一个Python环境并执行代码。
from pbox import CodeSandBox
code_sandbox = CodeSandBox()
result = code_sandbox.execute_code("print('Hello, PandaroBox!')")
print(str(result))
print(result.logs.stdout)
Result(results=[], logs=Logs(stdout=['Hello, PandaroBox!'], stderr=[]), error=None)
['Hello, PandaroBox!']
返回的结果是一个Result
类,你可以使用str()
查看具体内容。Result
中包含的results
是一个列表。Logs
也是一个类似于Result
的类,包含两个列表:stdout
和stderr
。当代码正常执行时,error
为null
;当代码出现错误时,error
是一个Error
类,包含三个属性:name
、value
和traceback
。可以使用.
操作符访问Result
、Logs
和Error
中的值,例如result.logs.stdout
。
CodeSandBox
具有记住Python代码上下文的能力,直到它被关闭。
from pbox import CodeSandBox
code_sandbox = CodeSandBox()
code_sandbox.execute_code("x = 'Hello, PandoraBox!'")
result = code_sandbox.execute_code("print(x)")
print(str(result))
Result(results=[], logs=Logs(stdout=['Hello, PandoraBox!'], stderr=[]), error=None)
如果你不再需要它,可以直接关闭它。
code_sandbox.close()
如果你需要API KEY认证机制以及内核在6小时后自动关闭的机制,你可以使用CodeSandBoxManager
来创建和关闭沙盒以及执行代码。
from pbox import CodeSandBoxManager
csb_manager = CodeSandBoxManager()
# creqte sandbox
kernel_id = csb_manager.create_sandbox("your-api-key")
# list sandbox
csb_manager.kernels("your-api-key")
# execute code
result = csb_manager.execute_code (
"your-api-key",
"your-kernel-id",
"print('Hello, Pandaro Box!')"
)
# close sandbox, If you forget, it will automatically close after 6 hours.
csb_manager.close_sandbox(
"your-api-key",
"your-kernel-id"
)