使用API调用工作流
在AgentArts平台上开发完成工作流后,其最终目的是要融入企业的核心业务流中。为了实现上述集成,AgentArts提供了标准的RESTful API。完整的调用架构分为两步:
- 认证鉴权:在AgentArts平台获取鉴权参数Authorization(新版AgentArts部署区域为西南-贵阳一,使用Authorization参数鉴权,而非老版本的使用Token鉴权)。
- 业务调用:携带鉴权信息,调用工作流接口。
前置检查
已开通AgentArts服务。
步骤一:获取API调用凭证(获取Authorization)
- 登录AgentArts智能体开发平台。
- 在左侧导航栏中选择“智能体管理”选择需要调用的工作流。并复制ID。 对应的工作流需要是“已提交”状态。如果显示“未提交”请单击工作流的名称,进入编辑页面,进行“提交版本”操作。未提交状态的智能体无法获取调用凭证。图1 获取ID
图2 提交版本
- 获取ID后,在“部署运行 > 智能体运行时”页面搜索ID。 图3 搜索ID
- 单击ID名称,进入基本信息页面,找到“访问与权限控制”对应的URN。单击RUN名称。 图4 单击URN名称
- 在页面中获取API Key的取值。
获取API Key的值后,在API Key值前加上“Bearer ”即为Authorization的值(注意Bearer后有一个空格)。
图5 获取API Key取值
步骤二:调用工作流
API接口:
POST /agent/{runtime_name}/invocations
API接口获取方法:
- 登录AgentArts智能体开发平台。
- 在左侧导航栏中选择“开发中心 > 智能体管理”,在“工作流”页签选择所需的工作流应用。
- 复制调用路径。(注意智能体需要经过发布,显示为“已提交”状态) 图6 获取API接口
核心请求参数说明:
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| Authorization | 是 | String | 参数解释: 鉴权参数。获取方式请参考步骤一:获取API调用凭证(获取Authorization)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| X-Invoke-Mode | 否 | String | 参数解释: 该参数用于标识运行时运行的模式。 约束限制: 不涉及。 取值范围: 默认取值: published。 |
| x-hw-agentarts-session-id | 是 | String | 参数解释: 会话ID,每个会话的唯一标识符。用户可将会话ID设置为任意字符串,例如“123e4567e89b12d3a456426614174000”,无需在其他地方获取。 约束限制: 不涉及。 取值范围: 由英文,数字,“-”,“_”组成,不超过64位字符。 默认取值: 不涉及。 |
| X-Request-Id | 否 | String | 参数解释: 调用链ID,每个请求的唯一标识符。用于日志中跟踪整个请求的调用链路。用户可将调用链ID设置为任意字符串,例如“123e4567e89b12d3a4564266141740”,无需在其他地方获取。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| Content-Type | 是 | String | 参数解释: 发送的实体的MIME类型。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: application/json。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| inputs | 是 | Map<String,Object> | 参数解释: 在调用工作流接口时,inputs对象中的字段(Key)并非API预留的固定字段,而是取决于您在工作流“开始节点”中定义的变量名。 约束限制: 为确保工作流正常运行,请遵循以下原则判断哪些变量需要传入:
取值范围: 不涉及。 默认取值: 不涉及。 |
Python调用示例:
import requests
import json
# 替换为真实的API接口
url = "https://{endpoint}/agent/{runtime_name}/invocations"
# 构造请求体:inputs 内部的 key 需对应工作流开始节点的变量定义
payload = json.dumps({
"inputs": {
"query": "你好"
}
})
headers = {
'Content-Type': 'application/json',
'Authorization': '您的Authorization',
'x-hw-agentarts-session-id': '您的会话ID,任意ID,不超过64位字符'
}
# 发起请求
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text) cURL调用示例:
针对不同操作系统,命令的转义和换行符有所不同。
- Windows
curl -X POST "https://{endpoint}/agent/{runtime_name}/invocations" ^ -H "Content-Type: application/json" ^ -H "Authorization: 您的Authorization" ^ -H "x-hw-agentarts-session-id: 您的会话ID" ^ -d "{ \"inputs\": { \"query\": \"你好\" } }" - Linux/macOS
curl -X POST "https://{endpoint}/agent/{runtime_name}/invocations" \ -H "Content-Type: application/json" \ -H "Authorization: 您的Authorization" \ -H "x-hw-agentarts-session-id: 您的会话ID" \ -d '{ "inputs": { "query": "你好" } }'
