
# 创建沙箱工具
创建沙箱工具允许用户在安全的环境中测试和验证智能体的功能，确保在实际部署前能够发现和解决问题。当前仅支持创建代码解释器。代码解释器能够理解并解释代码的逻辑，帮助用户更好地理解代码的运行机制和功能。
创建代码解释器有两种方式：
- [通过控制台创建代码解释器]
- [通过SDK创建代码解释器]
#### 前提条件
- 使用沙箱工具前需要先[开通AgentArts服务](https://support.huaweicloud.com/qs-agentarts/agentarts_04_0000.html)并进行服务授权，请在"授权管理"页面进行云服务开通及授权，详细信息请参考[授权管理](https://support.huaweicloud.com/lowcode-agentarts/agentarts_05_0218.html)。
- （可选）管理员可在IAM控制台为创建的IAM子用户授予权限，授权后，子用户即可根据权限使用账号中的云服务资源，相关操作步骤如下。
  1. [创建IAM用户](https://support.huaweicloud.com/usermanual-iam5/iam_01_1144.html)。
  
  2. [给IAM用户授权](https://support.huaweicloud.com/usermanual-iam5/iam_01_1145.html)。
     - 为子用户授予完整的沙箱工具权限，需授予AgentArtsFullAccessPolicy及AgentIdentityFullAccessPolicy身份策略。
     
     - [创建自定义身份策略](https://support.huaweicloud.com/usermanual-iam5/iam_01_0917.html)并授予如下权限，授权项功能介绍请参考[表1]。
        表1授权项 
       | 授权项                                | 功能介绍             |
       |:---|:---|
       | iam:agencies:pass                  | 授予向云服务传递委托的权限    |
       | vpc:nativePorts:create             | 授予原生API创建端口权限    |
       | vpc:routeTables:update             | 授予更新路由表权限        |
       | vpc:nativePorts:delete             | 授予原生API删除端口权限    |
       | eip:publicIps:associateInstance    | 授予将弹性公网IP绑定网卡的权限 |
       | eip:publicIps:disassociateInstance | 授予将弹性公网IP解绑网卡的权限 |
          
       图1授权策略   
       ![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002660211671.png "点击放大") 
      
   
 
 #### 通过控制台创建代码解释器
支持用户在控制台上通过配置相关参数创建代码解释器。
1. 登录[AgentArts智能体平台](https://console.huaweicloud.com/agentarts/#/home/overview)。
2. 在左侧导航栏选择"开发中心 \> 组件库 "，单击"沙箱工具"页签，进入沙箱工具界面。
3. 单击右上角"创建代码解释器"。
4. 在"创建代码解释器"的弹框中，输入相关配置信息，参数说明请参考[表2]。
   
    表2参数说明 
   | 参数                                                          || 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   |:---|---|:---|
   | 基本信息                                               | 名称      | 工具的名称，同一账号下沙箱工具名称不可重复，创建后不支持修改。 命名规则： - 以小写字母开头，小写字母或数字结尾。  - 名称中可包含数字、字母、中划线。  - 长度为2\~40个字符。   系统会默认生成工具的名称，可根据需求自定义修改。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 基本信息                                               | 描述      | 用于对工具内容和用途的简要说明。 规则：长度不大于4096个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 权限与身份认证  | 委托      | （可选）授予的代理权限或代理功能，允许代表智能体与外部系统进行通信和交互。 可不填写，如需手动创建，请单击"创建委托"并参考如下配置创建。 - 委托名称：自定义。  - 信任主体类型：选择"云服务"。  - 云服务：搜索service.WorkloadSandboxMetadata。  - 其余参数使用默认值。   图2创建委托 ![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002588747844.png "点击放大") 委托创建完成后可对委托进行授权，操作具体详情请参考[创建委托并授权](https://support.huaweicloud.com/usermanual-iam/iam_06_0002.html)。                                                                                                                                                                                                                                                                                                                  |
   | 权限与身份认证  | 入站身份认证  | 配置代码解释器的身份认证方式。入站身份认证是指代码解释器在接收和处理来自智能体或SDK的请求时，对请求进行身份验证，确保只有经过验证的请求才能访问沙箱工具中的资源，提高系统的安全性和可靠性。 支持以下认证方式： - IAM认证：将华为云IAM身份配置为入站身份认证，以验证调用者的身份。  - API Key认证：通过接口的访问密钥进行身份验证和授权。系统会自动生成API Key的名称，可根据需求自定义修改。 身份认证凭证在凭据管理服务（DEW）托管，托管按需计费，费用说明请参考[DEW 计费说明](https://support.huaweicloud.com/price-dew/dew_03_0006.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 可观测配置                                              | 日志记录    | - 未开启，工具运行过程产生的日志无法上报至云日志服务。  - 开启后，工具运行过程产生的日志会上报云日志服务（LTS），日志管理费用按需收取，有关计费相关内容请参考[LTS计费详情](https://www.huaweicloud.com/pricing/calculator.html#/lts)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 高级配置       | 出网网络配置  | - 公网访问：能够连接到外部的互联网，访问外部的资源和服务。  - 私网访问：能够连接到内部的私有网络，访问内部的资源和服务。 当选择"私网访问"时，需配置如下参数： - 选择已配置的VPC，如未配置，请单击"新建VPC"，具体请参考[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。  - 选择已配置的子网，如未配置，请单击"新建子网"，具体请参考[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。  - 选择已配置的安全组，如未配置，请单击"新建安全组"，具体请参考[创建安全组](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013748715.html)。   配置后单击![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002579283703.png)刷新。    |
   | 高级配置       | 标签 (可选) | 由"标签键"和"标签值"组成，用于标识和分类云资源。 您可以在TMS中创建预定义标签，用于使用同一标签标识多种云资源，创建后可在标签输入框下拉选择同一标签，具体操作请参考[创建预定义标签](https://support.huaweicloud.com/usermanual-tms/zh-cn_topic_0144368884.html)，创建后单击![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002610162931.png)刷新。 单击"添加标签"，选择在TMS中创建的预定义标签，或自定义输入标签键和标签值。 可添加一个或多个标签，最多添加20个标签。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
      
   
   
 #### 通过SDK创建代码解释器
代码解释器工具支持在代码沙箱中进行上传、下载和执行代码等操作。SDK提供create_code_interpreter接口用于创建代码解释器工具，通过SDK创建的代码解释器将在代码解释器列表中展示。
在Python文件中通过SDK创建代码解释器，相关参数说明以及配置示例如下：
- **方法名**：create_code_interpreter
- **配置以下参数** ：
  
  | 参数名                   | 类型   | 描述                                       |
  |:---|:---|:---|
  | name                  | str  | **Required** code_interpreter名称。         |
  | auth_type             | str  | 认证类型，支持 "API_KEY" 或 "IAM"，默认 "API_KEY"。  |
  | api_key_name          | str  | **Required** API Key名称。                  |
  | description           | str  | 代码解释器的描述。**Default**：None                |
  | execution_agency_name | str  | 为代码解释器提供访问云服务的权限的IAM委托名。**Default**：None |
  | observability         | Dict | 可观测性配置（日志+指标）。**Default**：None           |
  | network_config        | Dict | 出站网络配置。**Default**：None                  |
  | agent_gateway_id      | str  | Agent Gateway ID。**Default**： None       |
  | tags                  | List | 标签列表。**Default**：None                    |
     
  
- **返回值** 如下：
  包含代码解释器信息的字典，包括：
  - id (str): 代码解释器的ID。
  
  - name (str): 代码解释器的名称。该名称在您的账户中必须是唯一的。
  
  - description (str): 代码解释器的描述，用于LLM上下文分析。
  
  - created_at (str): 创建时间。
  
  - updated_at (str): 更新时间。
  
  - execution_agency_name(str): IAM委托名。
  
  - agent_gateway_id (str): Agent Gateway ID。
  
  - workload_identity (Dict): 认证信息。
  
  - observability (Dict): 可观测性配置（日志+指标）。
  
  - access_endpoint(str): 访问域名。
  
  - tags(List): 标签列表。
  
  - network_config(Dict): 出站网络配置。
    
APIKEY代码示例：
```
from agentarts.sdk.tools import CodeInterpreter
demo_client = CodeInterpreter(region="your_region", auth_type="API_KEY")
code_interpreter = demo_client.create_code_interpreter(
    name="your_code_interpreter_name",
    api_key_name="your_api_key_name"
)
```
IAM代码示例：
```
from agentarts.sdk.tools import CodeInterpreter
demo_client = CodeInterpreter(region="your_region", auth_type="IAM")
code_interpreter = client.create_code_interpreter(
    name="your_code_interpreter_name",
    auth_type="IAM"
    )
```
#### 后续操作
创建成功后，您可以在智能体中集成工具，使其能够调用隔离环境来完成代码运行等复杂任务。详细操作请参见[在智能体中集成沙箱工具](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_012.html)。
#### 更多操作
您还可以对已创建的代码解释器执行如下操作。
表3更多操作 
| 操作      | 说明                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|
| 查看代码解释器 | 1. 进入工具界面。  2. 在代码解释器列表中单击代码解释器名称，查看代码解释器详情。  3. 在"配置信息"页签，修改代码解释器信息，置灰项不可修改。                                                          |
| 删除代码解释器 | 代码解释器删除后不可恢复，请谨慎操作。 1. 进入工具界面。  2. 单击代码解释器列表操作列的"删除"。  3. 在弹框中确认要删除后输入"DELETE"，然后单击"确定"。                |
| 复制代码解释器 | 支持用户基于已配置的工具快速创建新的工具。 1. 进入工具界面。  2. 单击代码解释器列表操作列的"复制"。  3. 修改其基础信息，如名称、描述、参数配置等，配置完成后单击"立即创建"。   |
   
