基于 Docker 的代码执行器
在 v3.4.2
版本及之后,AstrBot 支持代码执行器以强化 LLM 的能力,并实现一些自动化的操作。
如果您要使用此功能,请确保您的机器安装了 Docker
。因为此功能需要启动专用的 Docker 沙箱环境以执行代码,以防止 LLM 生成恶意代码对您的机器造成损害。
Linux Docker 启动 AstrBot
如果您使用 Docker 部署了 AstrBot,需要多做一些工作。
- 您需要在启动 Docker 容器时,请将
/var/run/docker.sock
挂载到容器内部。这样 AstrBot 才能够启动沙箱容器。
sudo docker run -itd -p 6180-6200:6180-6200 -p 11451:11451 -v $PWD/data:/AstrBot/data -v /var/run/docker.sock:/var/run/docker.sock --name astrbot soulter/astrbot:latest
- 在聊天时使用
/pi absdir <绝对路径地址>
设置您宿主机上 AstrBot 的 data 目录的所在目录的绝对路径。
例子:
Linux 手动源码 启动 AstrBot
如果你的 Docker 指令需要 sudo 权限来执行,那么你需要在启动 AstrBot 时,使用 sudo
来启动,否则代码执行器会因为权限不足而无法调用 Docker。
sudo —E python3 main.py
使用
本功能使用的镜像是 soulter/astrbot-code-interpreter-sandbox
,您可以在 Docker Hub 上查看镜像的详细信息。
镜像中提供了常用的 Python 库:
- Pillow
- requests
- numpy
- matplotlib
- scipy
- scikit-learn
- beautifulsoup4
- pandas
- opencv-python
- python-docx
- python-pptx
- pymupdf
- mplfonts
基本上能够实现的任务:
- 图片编辑
- 网页抓取等
- 数据分析、简单的机器学习
- 文档处理,如读写 Word、PPT、PDF 等
- 数学计算,如画图、求解方程等
由于中国大陆无法访问 docker hub,因此如果您的环境在中国大陆,请使用 /pi mirror
来查看/设置镜像源。比如,截至本文档编写时,您可以使用 cjie.eu.org
作为镜像源。即设置 /pi mirror cjie.eu.org
。
在第一次触发代码执行器时,AstrBot 会自动拉取镜像,这可能需要一些时间。请耐心等待。
镜像可能会不定时间更新以提供更多的功能,因此请定期查看镜像的更新。如果需要更新镜像,可以使用 /pi repull
命令重新拉取镜像。
TIP
如果一开始没有正常启动此功能,在启动成功之后,需要执行 /tool on python_interpreter
来开启此功能。 您可以通过 /tool ls
查看所有的工具以及它们的启用状态。
文件输入/输出
代码执行器除了能够识别和处理图片、文字任务,还能够识别您发送的文件,并且能够发送文件。但是,目前来说有一些环境上的限制。
文件输入/输出只支持 QQ
平台,并且使用 napcat
,并且非 Docker 部署 napcat。