
# 在智能体中集成沙箱工具
创建沙箱工具后，您需要将沙箱工具集成到智能体代码中，以便智能体可以调用隔离环境来完成代码运行等复杂任务。
#### 前提条件
- 已创建代码解释器工具，具体请参见[创建沙箱工具](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_011.html)。
- 已安装Python，且版本不低于3.10。
- 已安装agentarts-sdk包。
- 配置访问端点：通过AGENTARTS_CODEINTERPRETER_DATA_ENDPOINT设置环境变量 ，访问端点获取请参考[终端节点](https://support.huaweicloud.com/api-agentarts/agentarts_07_0001.html)，获取到终端节点后，在配置使用时，请配置为http://{域名}。
 
#### 在智能体中集成沙箱工具
1. 登录[AgentArts智能体平台](https://console.huaweicloud.com/agentarts/#/home/overview)。
2. 在左侧导航栏选择"开发中心 \> 组件库 "，单击"沙箱工具"页签，进入沙箱工具界面。
3. 在工具列表单击操作列的"调用代码"，通过SDK调用工具实现执行代码的能力，并通过tools装饰器封装成工具，SDK提供code_session函数，可快速启动代码解释器的会话，并支持自动停止会话。
   
   "调用代码"仅为代码示例，请根据实际情况替换代码示例中的"arguments"、"operate_type"。
   API_KEY认证代码示例如下，获取API_KEY请参考[如何获取沙箱工具的API_KEY](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_050.html)。
   ```
   from agentarts.sdk.tools import code_session
   api_key = "your_actual_api_key" # your api key
   with code_session("cn-southwest-2", "your_code_interpreter_name", api_key=api_key) as code_client:
       response = code_client.invoke(
           operate_type="execute_code",
           api_key=api_key,
           arguments={
               "code": code, # your code
               "language": "python",
               "clear_context": False
           }
       )
   ```
   IAM认证代码示例如下，获取AK/SK请参考[如何获取华为云AK/SK](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_047.html#agentarts_10_047__section13365141032517)。
   ```
   from agentarts.sdk.tools import code_session
   # Please configure the HUAWEICLOUD_SDK_AK/HUAWEICLOUD_SDK_SK in your environment variables in advance.
   with code_session("cn-southwest-2", "your_code_interpreter_name", auth_type="IAM") as code_client:
       response = code_client.invoke(
           operate_type="execute_code",
           arguments={
               "code": code, # your code
               "language": "python",
               "clear_context": False
           }
       )
   ```
   沙箱工具支持的操作如下：
   - execute_code：执行代码。
     arguments：执行代码参数。
     ```
     {
         "code": 'print("Hello World!")',
         "language": "python",
         "clear_context": False
     }
     ```
     
   
   - execute_command：执行命令。
     arguments：执行代码参数。
     ```
     {
         "command": "ls -la"
     }
     ```
     
   
   - read_files：读取文件。
     arguments：执行代码参数。
     ```
     {
         "paths": ["/home/user/file1.txt", "/home/user/file2.txt"]
     }
     ```
     
   
   - write_files：写入文件。
     arguments：执行代码参数。
     ```
     {
         "write_contents": [{"path": "/home/user/file1.txt", "text": "content"}]
     }
     ```
     
   
   
   参数说明:
   - code：在代码解释器会话中执行的代码。这是指定编程语言的源代码，将由代码解释器执行。 长度限制：最小长度为 0，最大长度为 1048576。
     
   
   - command： 要使用该工具执行的命令。长度限制：最小长度为 0，最大长度为 65536。
   
   - language： 要执行的代码所使用的编程语言，告诉代码解释器使用哪种语言运行时来执行代码。支持语言：Python。
   
   - write_contents：当请求操作为write_files时，待写入的内容，包含待写入数据内容和文件路径。列表限制：最小元素数量为0，最大元素数量为1000。
   
   - paths：当请求操作为read_files时， 所需读取的文件路径，需保证每个路径唯一。列表限制：最小元素数量为0，最大元素数量为1000。
   
   
   
   
4. 将[3]中的执行代码能力封装成工具，此处使用langgraph的tool装饰器作为演示。
   
   ```
   import json
   from agentarts.sdk.tools import code_session
   from langchain_core.tools import tool
   @tool
   def execute_python_tool(code: str, description: str) -> str | None:
       """Execute Python Code in the sandbox"""
       api_key = "your_actual_api_key" # your api key    
       with code_session("your_region", "your_code_interpreter_name", api_key=api_key) as code_client:
           response = code_client.invoke(
               operate_type="execute_code",
               api_key=api_key,
               arguments={
                   "code": 'print("Hello World!")',
                   "language": "python",
                   "clear_context": False
               }
           )
       return json.dumps(response["result"])
   ```
   
   
5. 将[4]集成到智能体中，此处以langgraph框架开发智能体为例。
   
   ```
   from langchain_openai import ChatOpenAI
   llm = ChatOpenAI(
       model="deepseek-v4-flash",
       api_key=os.environ.get("MODEL_API_KEY", ""),
       base_url=os.environ.get("BASE_URL", ""),
       max_tokens=1000,
       temperature=0.7,
   )
   # 创建工具列表
   tools = [execute_python_tool]
   # 工具绑定Agent
   llm = llm.bind_tools(tools)
   ```
   
   
 
#### 后续操作
将开发好的Agent打包成镜像部署到智能体运行时，详细操作请参见[通过控制台部署智能体运行时](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_031.html)。
#### 相关文档
创建工具详情请参考[创建沙箱工具](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_011.html)。
