# 调用智能体（IAM认证）
本章节以IAM认证为例，面向首次使用者，从零开始逐步配置并运行managed_agents_client.py脚本，该脚本用于通过WebSocket与Managed Agents后端交互，调测智能体与用户本地连通性。
#### 前提条件
智能体的"入站身份认证"选择"IAM 认证"。
#### 环境准备
1. Python版本要求。 需要**Python 3.10或以上版本**（代码使用了str\|None类型标注语法）。
   检查方法，打开电脑系统自带的命令提示符窗口（应用程序中搜索cmd），输入命令：
   ```
   python --version
   ```
   预期输出类似：
   ```
   Python 3.14.0
   ```
   如果版本低于3.10，请前往[python.org](https://www.python.org/downloads/)升级。
   
2. pip安装。 Python 3.4及以上版本自带pip。
   安装Python时，勾选"Add Python.exe to PATH"（这里以3.12版本为例，不同版本名称有所不同，以实际为准），默认自带pip。
   打开cmd/PowerShell验证：
   ```
   pip --version
   ```
   输出版本号说明已经安装完成。
   ```
   pip 25.0.1 from ...
   ```
   Windows如果提示pip不是内部或外部命令，执行以下操作。
   单击安装包，选择"Modify"，勾选"pip"、"Add Python to environment variables"。
   安装后，重新打开命令提示符窗口，才会生效。
   
3. 安装依赖。 pip就绪后，安装websockets库：
   ```
   pip install websockets>=10.0 --break-system-packages
   ```
   
4. 验证安装。
   ```
   python -c "import websockets; print(websockets.__version__)"
   ```
   预期输出类似：
   ```
   17.1
   ```
   
 
#### 准备签名SDK
1. 在[签名指南](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-python.html)文档中下载Python SDK，并在本地解压。签名指南文档中的其他内容本案例中可不用关注。
   图1获取SDK   
   ![](https://support.huaweicloud.com/managedagents-agentarts/zh-cn_image_0000002759738775.png "点击放大")
   解压后的文件目录结构如下：
   ```
   ApiGateway-python-sdk/              ← 根目录（解压出来的文件夹）
   │
   ├── apig_sdk/                       ← 【核心签名库，不要动！】
   │   ├── __init__.py                 ← 包的入口标识文件
   │   └── signer.py                   ← 签名核心代码（所有签名逻辑都在这里）
   │
   ├── main.py                         ← 【您要改的文件】调用示例
   │
   └── licenses/                       ← 开源许可证文件夹（不用管）
       └── license-requests            ← requests库的许可证说明
   ```
   图2目录结构   
   ![](https://support.huaweicloud.com/managedagents-agentarts/zh-cn_image_0000002730219032.png "点击放大") 
2. 下载[managed_agents_client.py](https://res-static.hc-cdn.cn/cloudbu-site/china/zh-cn/agentarts/ManagedAgents/managed_agents_client.py)至本地，放入Python SDK解压的文件夹中，该脚本用于通过WebSocket与Managed Agents后端交互，调测智能体与用户本地连通性。
   在Python SDK的文件夹上方显示路径的地址栏里，清空地址，直接输入cmd后按回车。
   
 
#### 调用智能体
Windows cmd：
```
python managed_agents_client.py ^
  --url "ws://{endpoint}/runtimes/{runtime_name}/ws" ^
  --auth-type iam ^
  --ak "{AK}" --sk "{SK}" ^
  --session-id "{会话ID}" ^
  --message "你好"
```
通用写法（所有平台通用）：
```
python managed_agents_client.py --url "ws://{endpoint}/runtimes/{runtime_name}/ws" --auth-type iam --ak "{AK}" --sk "{SK}" --session-id "{会话ID}" --message "你好"
```
调用参数信息，请按[表1]获取，替换命令中花括号内的占位符。
 表1获取调用信息 
| 参数                         | 操作                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|
| *managed_agents_client.py* | 脚本文件名由脚本名称和文件类型后缀组成。例如，脚本名称为managed_agents_client，文件类型为Python脚本（.py），则完整文件名为managed_agents_client.py。                                                                                                                                                                                                                                                                                                                                                                          |
| 运行时名称（*{runtime_name}*）    | 1. 在"Managed Agents \> 智能体"页面，复制需要调用的智能体名称。  2. 在左侧导航选择"托管与运行 \> 智能体运行时"，搜索已获取的智能体名称。 在"智能体运行时"列表，显示的名称以managed-开头，即为运行时名称。 ![](https://support.huaweicloud.com/managedagents-agentarts/zh-cn_image_0000002759631423.png "点击放大")    |
| 访问域名（*{endpoint}*）           | 单击运行时名称，进入运行时详情页面，在"访问域名"区域，即可复制访问域名。 ![](https://support.huaweicloud.com/managedagents-agentarts/zh-cn_image_0000002730191780.png "点击放大")                                                                                                                                                                                                                                                                                                    |
| *{AK}*                     | 登录控制台"[我的凭证 \> 访问密钥](https://console.huaweicloud.com/iam/#/mine/accessKey)"，获取AK和SK。AK、SK最多可添加2个。 图3获取AK、SK ![](https://support.huaweicloud.com/managedagents-agentarts/zh-cn_image_0000002759658683.png "点击放大") 图4AK、SK示例 ![](https://support.huaweicloud.com/managedagents-agentarts/zh-cn_image_0000002730059174.png "点击放大")                                                                                                                                                 |
| *{SK}*                       | 登录控制台"[我的凭证 \> 访问密钥](https://console.huaweicloud.com/iam/#/mine/accessKey)"，获取AK和SK。AK、SK最多可添加2个。 图3获取AK、SK ![](https://support.huaweicloud.com/managedagents-agentarts/zh-cn_image_0000002759658683.png "点击放大") 图4AK、SK示例 ![](https://support.huaweicloud.com/managedagents-agentarts/zh-cn_image_0000002730059174.png "点击放大")                                                                                                                                                 |
| 会话ID（*{会话ID}*）             | 每个会话的唯一标识符。用户可将会话ID设置为任意字符串，由英文、数字、"-"、"_"组成，不超过64个字符。例如"123e4567e89b12d3a456426614174000"。                                                                                                                                                                                                                                                                                                                                                                                    |
| message                    | 会话内容。按实际进行替换。                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   
#### 显示结果
预期终端输出：
```
[2/5] 已连接 ws://{endpoint}/runtimes/{runtime_name}/ws
[3/5] 服务端就绪
[4/5] 已发送: 你好
[Frame] {"response_kind":"e2a.chunk","status":"in_progress","body":{"delta_kind":"text","delta":"你好","event_type":"chat.delta"}}
你好
[Frame] {"response_kind":"e2a.chunk","status":"in_progress","body":{"delta_kind":"text","delta":"！有什么可以帮你的吗？","event_type":"chat.delta"}}
！有什么可以帮你的吗？
[Frame] {"response_kind":"e2a.complete","status":"succeeded","is_final":true,"body":{"result":{"content":"你好！有什么可以帮你的吗？"}}}
========================================
回复: 你好！有什么可以帮你的吗？
========================================
[5/5] 已断开
```
权限审批和用户提问均在后台自动处理，终端只显示"Frame"原始帧和流式回复文本。
