
# 常见问题
#### Authorization failed报错
调用API时出现{"code":401,"data":null,"message":"Authorization failed!"}报错，表示Authorization失效，请重新获取。
- 调用智能体/工作流接口：请参考[步骤二：获取API调用凭证（获取Authorization）](https://support.huaweicloud.com/bestpractice-agentarts/agentarts_06_0021.html#agentarts_06_0021__section18407172873816)重新获取Authorization。
- 调用观测/评估/沙箱/网关等接口：请参考[步骤二：构造接口调用脚本](https://support.huaweicloud.com/bestpractice-agentarts/agentarts_06_0024.html#agentarts_06_0024__section8967131163011)、[步骤三：运行脚本获取接口响应](https://support.huaweicloud.com/bestpractice-agentarts/agentarts_06_0024.html#agentarts_06_0024__section1854533718411)重新获取Authorization。
 
#### 智能体运行正常，发布后API调用报错API Key validity AgentArts.103004、Failed to call model
**问题现象：**
在平台页面测试智能体时一切正常，但通过API调用已发布的智能体、工作流时，收到如下错误响应：
```
"message": "Planning assistance engine failed to plan or execute: Failed to call model, root cause=[100025]Model request error: Failed to get the authorization header."
"error_suggestion": "Check the availability of the backend model service, API Key validity, and network connectivity.", "error_code": "AgentArts.103004"
```
**原因分析：**
由于未在AgentArts平台上配置模型API Key所致。
- 试运行阶段：平台为了方便用户快速上手，会为页面上的"试运行/预览"提供部分免费额度的Token，用户无需配置即可直接对话（免费Token用完后需要配置API Key）。
- 发布运行态：当智能体发布并转为API调用时，系统认为已进入正式生产环境。出于资源权属和计费考虑，生产环境不支持使用平台的免费Token。此时，智能体内部引用的底层大模型（如GLM、DeepSeek或其他第三方模型）必须使用用户自己在平台配置的API Key。
- 理解误区：在平台"授权管理 \> 模型"页面看到的"已开通"状态，仅表示您已订阅或具备使用该模型的权限，并不等同于您已配置了用于扣费和鉴权的API Key。
**解决措施：**
1. **在AgentArts平台配置模型API Key。**
   
   1. 登录[AgentArts智能体平台](https://console.huaweicloud.com/agentarts/#/home/overview)。
   
   2. 在左侧导航栏中选择"授权管理"，在"模型"页签单击"鉴权管理"。根据页面提示获取并填入API Key。
      图1配置模型API Key   
      ![](https://support.huaweicloud.com/bestpractice-agentarts/zh-cn_image_0000002717389423.png "点击放大") 
   
   
   
   
2. **重新编辑智能体中的模型，并更新智能体版本。**
   
   模型API Key配置完成后，返回"智能体管理"页面，重新配置智能体、工作流的模型，并进行"更新版本"操作。
   图2编辑并更新智能体示例   
   ![](https://support.huaweicloud.com/bestpractice-agentarts/zh-cn_image_0000002687949660.png "点击放大")
   
   
 
#### 签名过期，报错signature expired, signature time:..., server time:...APIGW.0301
**问题现象：**
接口返回401错误，提示signature expired，并给出了两个具体的时间戳，通过两个时间戳的差值可以看到签名时间超过15分钟（客户端签名时间 (signature time): 07:41:40Z、服务器当前时间 (server time): 08:03:32Z，时间差约22分钟）。
```
{"request_id":"318656a7b2c5bea7edb00296f0d896ce","error_msg":"Incorrect IAM authentication information: calc ak sk signature failed:signature expired, signature time:20260422T074140Z,server time:20260422T080332Z","error_code":"APIGW.0301"}
```
**原因分析：**
安全机制要求请求从发起签名到送达服务器的时间差必须在15分钟以内，引发超时的原因主要有：
- 手动复制粘贴延迟。您在Python脚本中生成了Authorization和X-Sdk-Date，但经过较长时间（超过15分钟）才将其复制粘贴到Postman或其他工具中使用。
- 本地系统时钟不同步。您发送请求的机器本地时间比标准UTC时间慢了（或快了）15分钟以上。
- 缓存了鉴权头。在代码中重复使用很久以前生成的Header报文，而没有在每次请求前重新执行签名函数。
**解决方法：**
- 确保在代码逻辑中，"计算签名"和"发送请求"这两个动作是连续完成的。不要使用之前算好并保存下来的旧签名，因为签名15分钟后就会失效。
- 检查运行环境的系统时间。如果是Linux服务器，建议使用ntpdate同步标准时间。
- 如果您是手动调试，请重新运行Python脚本以获取带有最新时间戳的Authorization并在15分钟内完成调用。
 
#### 如何构造POST接口的消息体（Body）
对于复杂的POST接口，应根据API文档定义的结构构造JSON字符串：
**示例场景：创建评测集**
根据文档定义的参数（name、description、schemas等），构造方式如下：
- **参数映射逻辑：**
  - name（必选）：字符串类型。
  
  - description（可选）：字符串类型。
  
  - schemas（可选）：对象数组，每个对象包含必选的name（标识符）和type（数据类型）。
   
- **代码示例：**
  ```
  import json
  # 1. 按照文档定义的嵌套结构构造字典
  post_data = {
      "name": "Evaluation_Set_001",           # 必填项
      "description": "业务背景描述",           # 可选项
      "schemas": [                            # 嵌套对象数组
          {
              "name": "user_input",           # Schema中的必填项
              "type": "String"                # Schema中的必填项
          },
          {
              "name": "score",
              "type": "Float"
          }
      ]
  }
  # 2. 将字典转换为字符串，传给签名对象 r.body
  body = json.dumps(post_data)
  # 3. 后续执行签名 sig.Sign(r)
  ```
  
 
