这篇说说如何在 Agent 执行引擎一键部署和使用 All-in-One 沙箱应用。
注意:说明:
一、前置依赖
首次使用 Agent 执行引擎,需要先参考 Agent 执行引擎访问授权 完成授权,才能部署 All-in-One 沙箱应用。
二、部署应用
1. 登录 Serverless 控制台,单击左侧导航栏的 Agent。
2. 在 Agent 应用引擎页面,选择沙箱工具,单击创建应用,进入应用创建流程。
3. 填写基础配置:
| 配置项 | 说明 |
| 应用类型 | 选择 All-in-One 沙箱。 |
| 应用名称 | 应用的唯一标识,只能包含字母、数字、下划线、连字符,以字母开头,以数字或字母结尾,2~60个字符。应用名称创建后不可修改。 |
| 地域 | 选择资源归属地域。 |
4. 填写环境配置:
| 配置项 | 说明 |
| 内存 | 设置资源类型对应的规格,详情请参见 函数算力支持。默认 3072MB。 |
| 环境变量 | 在配置中定义的环境变量可在函数运行时从环境中获取到。详情请参见 环境变量。 |
5. 填写网络配置:
| 配置项 | 说明 |
| 公网访问 | 启用后,则可以访问公网资源。默认未启用。 |
| 私有网络 | 启用后,应用可以访问同一个私有网络下的资源,详情请参见 环境变量。默认未启用。 |
6. 填写日志配置:启用日志投递,可将函数运行日志实时投递到指定位置。详情请参见 日志投递配置。默认启用。
注意:腾讯云日志服务 CLS 为独立计费产品,可能会产生日志服务费用,具体请查看 CLS 计费详情。
7. 填写隔离、并发配置:
·实例安全隔离:
·如果启用,保证一个沙箱独占一个实例,沙箱销毁时,实例也销毁。
·如果不启用,多个沙箱可能共享一个实例。
·配置基于会话单实例并发模式,该配置主要用于标记客户端请求以哪种方式携带沙箱 ID、配置沙箱生命周期、底层实例支持的沙箱并发数和请求,其中本应用中“会话”的配置对应的是“沙箱”的配置。具体配置项说明如下:
| 配置项 | 说明 | 示例 |
| 会话 Key 来源 | 标记客户端请求以哪种方式携带沙箱 ID,系统根据此标记来决定要调度到某个沙箱上。可选项:Http Header、Cookie、Query String,三选一。不同选项支持场景说明如下:Http Header通过 HTTP 请求头传递客户端会话标识,后台确保相同标识的请求被路由到同一个沙箱。适用于 WebSocket 协议、gRPC 协议、HTTP 协议。支持客户端自定义沙箱 ID,也支持服务端生成。Cookie将携带相同 Cookie 信息的请求路由到同一个沙箱。支持客户端生成沙箱 ID,也支持服务端生成。Query String将携带相同 Query String 信息的请求路由到同一个沙箱,需要客户端生成沙箱 ID。 | Http Header |
| 会话 Key 名称 | Key 用途及命名规则:用途:沙箱的唯一标识名称。命名要求:必须以字母开头;非首字母可包含数字、字母、下划线(_)、中划线(-);长度限制5-40 个字符(含边界值)。Key 对应 Value(沙箱 ID )生成逻辑及字符要求:生成逻辑:来源为 Http Header、Cookie:支持客户端在首次调用时自主生成 Value;若客户端未生成,系统将自动生成。来源为 QueryString:首次 Value 需由客户端生成。字符要求:含数字、字母、下划线(_)、中划线(-)长度限制128个字节。 | x-sandbox-id |
| 会话最长生命周期 | 从沙箱创建、使用到最终销毁的全过程,单位秒。超过生命周期后,服务端将自动销毁沙箱。最长可设置7天,默认21600秒。 | 21600秒 |
| 会话最长空闲时间 | 用户在一段时间内没有进行任何操作,导致沙箱进入空闲状态,单位秒。最长不得超过会话最长生命周期,默认1800秒。超过最长空闲(Idle)时间后,服务端将按照“会话空闲超时处理策略”处理沙箱。 | 1800秒 |
| 会话空闲超时处理策略 | 如果你开启了“实例安全隔离”,会话空闲超时处理策略可选自动销毁或者自动暂停。如果你没有开启“实例安全隔离”,会话空闲超时处理策略默认自动销毁。 | 自动销毁 |
| 单实例最大并发会话数 | 单实例在同一时间内支持的最大沙箱数,默认值为20,最大支持100。 | 20 |
| 单实例最大并发请求数 | 单实例在同一时间内支持的最大请求数,默认为10,最大支持100。 | 10 |
8. 单击提交,开始部署应用。可点击应用构建详情,查看应用构建日志。
三、获取应用访问地址
应用部署完成后,单击应用名称,进入应用详情页面,即可获取应用访问地址。
四、Langchain Deepagents 集成 AIO 沙箱
import asynciofrom langchain_mcp_adapters.client import MultiServerMCPClientfrom deepagents import create_deep_agentfrom langchain.chat_models.base import init_chat_modelimport os# Ensure localhost bypasses proxyos.environ['NO_PROXY'] = 'localhost,127.0.0.1'async def main(): # Collect MCP tools mcp_client = MultiServerMCPClient({ "sandbox": { "url": "https://******-******.ap-hongkong.tencentscf.com/mcp/", # 替换成沙箱应用的访问地址 "transport": "streamable_http", "headers": {"x-sandbox-id": "my123456"} }, }) mcp_tools = await mcp_client.get_tools() # Create agent agent = create_deep_agent( tools=mcp_tools, system_prompt="You are a deepResearch agent that can use the sandbox to answer questions.", model=init_chat_model( model="deepseek-chat", base_url=os.getenv("DEEPSEEK_BASEURL"), api_key=os.getenv("DEEPSEEK_API_KEY"), ), ) # Stream the agent async for chunk in agent.astream( {"messages": [{"role": "user", "content": "打开百度网站查询深圳天气"}]}, stream_mode="values" ): if "messages" in chunk: chunk["messages"][-1].pretty_print()if __name__ == "__main__": from dotenv import load_dotenv # 环境变量要配置 DEEPSEEK_BASEURL、DEEPSEEK_API_KEY load_dotenv() asyncio.run(main())
五、调用 AIO 沙箱执行代码
import osfrom agent_sandbox import Sandboxdef main(): client = Sandbox(base_url="https://******-******.ap-hongkong.tencentscf.com",headers={"x-sandbox-id": "my123456"}) session = client.jupyter.create_session( kernel_name="python3", ) client.jupyter.execute_code( code="foo=1", kernel_name="python3", session_id=session.data.session_id ) result = client.jupyter.execute_code( code="print(foo)", session_id=session.data.session_id, kernel_name="python3", ) print("Code execution result:", result.data.outputs[0].text) client.shell.exec_command(command="pip3.12 install agent-sandbox") result = client.jupyter.execute_code( code="""from agent_sandbox import Sandboxsandbox = Sandbox(base_url= "https://******-******.ap-hongkong.tencentscf.com",headers={"x-sandbox-id": "my123456"})context = sandbox.sandbox.get_context()print(context)""", kernel_name="python3.12", ) print("After installed code result:", result.data.outputs[0].text)if __name__ == "__main__": main()
六、MCP
1. 查看 MCP 工具列表(可选)。
1.1 在终端输入如下命令,输入后自动跳转至 Inspector 页面。
npx @modelcontextprotocol/inspector
1.2 填写配置后,点击连接。
| 配置项 | 说明 |
| Transport Type | 下拉选择 Streamable HTTP。 |
| URL | 沙箱应用访问地址增加 /mcp 后缀,例如:https://******-******.ap-hongkong.tencentscf.com/mcp |
| Authentication | 在 Custom Header 增加会话 ID(沙箱 ID) 的配置,例如配置为 x-sandbox-id。 |
2. 在服务中配置 MCP 客户端。
{ "mcpServers": { "sandbox": { "url": "https://******-******.ap-hongkong.tencentscf.com/mcp/", "transport": "streamable_http", "headers": {"x-sandbox-id": "******"} } }}
七、API
API 使用说明请参见:https://sandbox.agent-infra.com/api
八、SDK
Python SDK 示例如下。将示例中的 base_url 替换为你的沙箱应用访问地址。
from agent_sandbox import Sandboxclient = Sandbox(base_url="https://******-******.ap-hongkong.tencentscf.com",headers={"x-sandbox-id": "my123456"})ctx = client.sandbox.get_context()print(ctx)result = client.shell.exec_command(command="ls -la")print(result)
九、沙箱实例管理
1. 在沙箱应用详情页面,单击函数名称,进入函数管理页面。
2. 选择会话管理页签,即可查看会话状态。