代码解释器
CodeInterpreterTool
是一个强大的工具,旨在在安全、隔离的环境中执行 Python 3 代码。
CodeInterpreterTool
描述
CodeInterpreterTool
使 CrewAI 代理能够执行它们自主生成的 Python 3 代码。这项功能尤其有价值,因为它允许代理创建代码、执行代码、获取结果,并利用这些信息来指导后续决策和行动。
有几种使用此工具的方法
Docker 容器(推荐)
这是主要选项。代码在一个安全、隔离的 Docker 容器中运行,确保无论代码内容如何都安全。请确保你的系统上已安装并运行 Docker。如果还没有,你可以从此处安装。
沙盒环境
如果 Docker 不可用——无论是未安装还是因任何原因无法访问——代码将在受限制的 Python 环境(称为沙盒)中执行。此环境非常有限,对许多模块和内置函数有严格限制。
不安全执行
不推荐用于生产环境 此模式允许执行任何 Python 代码,包括对 sys
、os
等危险模块的调用。查看如何启用此模式
日志记录
CodeInterpreterTool
将选定的执行策略记录到 STDOUT。
安装
要使用此工具,你需要安装 CrewAI 工具包
示例
以下示例演示了如何将 CodeInterpreterTool
与 CrewAI 代理一起使用
你还可以在创建代理时直接启用代码执行
启用 unsafe_mode
参数
CodeInterpreterTool
在初始化期间接受以下参数
- user_dockerfile_path: 可选。用于代码解释器容器的自定义 Dockerfile 路径。
- user_docker_base_url: 可选。用于运行容器的 Docker daemon URL。
- unsafe_mode: 可选。是否直接在主机上运行代码,而不是在 Docker 容器或沙盒中运行。默认为
False
。请谨慎使用! - default_image_tag: 可选。默认 Docker 镜像标签。默认为
code-interpreter:latest
。
将此工具与代理一起使用时,代理需要提供
- code: 必需。要执行的 Python 3 代码。
- libraries_used: 可选。代码中使用的需要安装的库列表。默认为
[]
。
代理集成示例
以下是关于如何将 CodeInterpreterTool
与 CrewAI 代理集成的更详细示例
实现细节
CodeInterpreterTool
使用 Docker 创建安全的代码执行环境
该工具执行以下步骤
- 验证 Docker 镜像是否存在,如果需要则构建它
- 创建一个挂载当前工作目录的 Docker 容器
- 安装代理指定的任何必需库
- 在容器中执行 Python 代码
- 返回代码执行的输出
- 通过停止并移除容器进行清理
安全注意事项
默认情况下,CodeInterpreterTool
在隔离的 Docker 容器中运行代码,这提供了一层安全性。但是,仍有一些安全注意事项需要牢记
- Docker 容器可以访问当前工作目录,因此敏感文件可能被访问。
- 如果 Docker 容器不可用且代码需要安全运行,它将在沙盒环境中执行。出于安全原因,不允许安装任意库。
unsafe_mode
参数允许代码直接在主机上执行,这只能在受信任的环境中使用。- 允许代理安装任意库时要小心,因为它们可能包含恶意代码。
结论
CodeInterpreterTool
为 CrewAI 代理提供了一种在相对安全的环境中执行 Python 代码的强大方式。通过使代理能够编写和运行代码,它显著扩展了它们的解决问题的能力,特别是对于涉及数据分析、计算或其他计算工作的任务。对于需要执行用代码表达比用自然语言更高效的复杂操作的代理来说,这个工具尤其有用。