云函数 All-in-One 沙箱应用(内测中)

All-in-One 沙箱应用是腾讯云推出的高度集成云端开发与执行环境解决方案。该产品通过将开发与交互所需的核心工具(如 VSCode 编辑器、 Python 和 Node.js 运行时、浏览器环境、Shell 终端、文件系统)封装在单个沙箱环境中,为 AI Agent、自动化任务、云端开发和安全代码执行提供开箱即用的标准化开发平台。解决了传统分离式工具链中环境不一致、文件传输繁琐、组件间交互困难等痛点,实现了真正意。

相关产品
云函数 产品页,含版本规格、价格与购买入口。

这篇说说如何在 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. 选择会话管理页签,即可查看会话状态。

赞 (0)
上一篇 4天前
下一篇 4天前