常见问题
Authenticationfailed报错
调用API时出现{"code":401,"data":null,"message":"Authenticationfailed!"}报错,表示Authentication失效,请重新获取。
- 调用智能体/工作流接口:请参考步骤一:获取API调用凭证(获取Authorization)重新获取Authentication。
- 调用观测/评估/沙箱/网关等接口:请参考步骤二:构造接口调用脚本、步骤三:运行脚本获取接口响应重新获取Authentication。
智能体运行正常,发布后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。
解决措施:
- 在AgentArts平台配置模型API Key。
- 登录AgentArts智能体开发平台。
- 在左侧导航栏中选择“授权管理”在“模型”页签单击“鉴权管理”。根据页面提示获取并填入API Key。 图1 配置模型API Key
- 重新编辑智能体中的模型,并更新智能体版本。
模型API Key配置完成后,返回“智能体管理”页面,重新配置智能体、工作流的模型,并进行“更新版本”操作。
图2 编辑并更新智能体示例
签名过期,报错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)