LangChain 与 deepagents
sandrpod 自带 LangChain 后端,所以 deepagents 智能体可以跑在你自己硬件上的沙箱里, 而不是某个托管服务。
bash
pip install langchain-sandrpodpython
import os
from langchain_sandrpod import SandrPodClient
from deepagents import create_deep_agent
client = SandrPodClient(api_url=os.environ["SANDRPOD_API_URL"],
token=os.environ["SANDRPOD_API_TOKEN"])
sb = client.get_sandbox("my-sandbox")
agent = create_deep_agent(model=model, backend=sb)
result = agent.invoke({"messages": [{"role": "user", "content": "画一下 /workspace 里的数据"}]})或者让客户端管理沙箱生命周期:
python
with client.sandbox("temp-sb") as sb:
agent = create_deep_agent(model=model, backend=sb)
agent.invoke({"messages": [{"role": "user", "content": "ls"}]})
# 退出时沙箱被删除环境变量
| 变量 | 含义 |
|---|---|
SANDRPOD_API_URL | 你的控制面 |
SANDRPOD_API_TOKEN | sk_ 工作区 key,或平台 token |
如果你已经在用 langchain-e2b
在 deepagents 集成里,两个后端驱动的十二项行为完全一致。只要把 E2B_DOMAIN 指向你的 服务器,E2B 那个在 SandrPod 上原样可用 —— 见 E2B 直接替换。选哪个取决于你 已经依赖哪个包,而不是哪个更强。
常见做法
| 想要 | 怎么做 |
|---|---|
| 隔离单个任务 | with client.sandbox(...),退出即删 |
| 复用准备好的环境 | 装好后 snapshot,之后从那个镜像创建 |
| 不让智能体上网 | 创建时带 --allow-domain,只列它需要的 |
| 保留长对话的文件 | 创建一次,每轮都传同一个沙箱 |