沙箱
在隔离环境中执行代码。
Agent 生成代码、与文件系统交互、运行 shell 命令。沙箱通过创建执行环境与主机系统之间的隔离边界,防止 Agent 访问凭证、文件或网络。
在 Deep Agents 中,沙箱是后端,定义 Agent 操作的环境。与仅暴露文件操作的其他后端不同,沙箱后端还给 Agent 提供了 execute 工具用于运行 shell 命令。
为什么使用沙箱?
沙箱用于安全。它们让 Agent 在隔离环境中执行任意代码、访问文件和使用网络,而不会泄露你的凭证、本地文件或主机系统。
沙箱特别适用于:
- 编码 Agent — 使用 shell、git、克隆仓库、运行构建和测试
- 数据分析 Agent — 加载文件、安装数据分析库、运行统计分析
基本用法
python
from deepagents import create_deep_agent
from deepagents.backends import LocalShellBackend
# 本地沙箱(无隔离 - 仅用于开发环境)
agent = create_deep_agent(
model="openai:gpt-4o",
backend=LocalShellBackend(
root_dir=".",
env={"PATH": "/usr/bin:/bin"},
),
)可用的沙箱提供商
Modal
bash
pip install langchain-modalpython
import modal
from deepagents import create_deep_agent
from langchain_modal import ModalSandbox
app = modal.App.lookup("your-app")
modal_sandbox = modal.Sandbox.create(app=app)
backend = ModalSandbox(sandbox=modal_sandbox)
agent = create_deep_agent(
model="openai:gpt-4o",
backend=backend,
)Daytona
bash
pip install langchain-daytonapython
from daytona import Daytona
from deepagents import create_deep_agent
from langchain_daytona import DaytonaSandbox
sandbox = Daytona().create()
backend = DaytonaSandbox(sandbox=sandbox)
agent = create_deep_agent(
model="openai:gpt-4o",
backend=backend,
)Runloop
bash
pip install langchain-runlooppython
from deepagents import create_deep_agent
from langchain_runloop import RunloopSandbox
from runloop_api_client import RunloopSDK
client = RunloopSDK(bearer_token=os.environ["RUNLOOP_API_KEY"])
devbox = client.devbox.create()
backend = RunloopSandbox(devbox=devbox)
agent = create_deep_agent(
model="openai:gpt-4o",
backend=backend,
)生命周期
大多数应用为每个线程创建一个沙箱。沙箱消耗资源,使用后应关闭:
python
try:
result = agent.invoke({"messages": [...]})
finally:
sandbox.stop() # 或 modal_sandbox.terminate() / devbox.shutdown()