调用概述
运行时部署成功后,开发者即可通过AgentArts提供的RESTful API与该运行时进行交互。AgentArts的运行时调用能力不仅限于向Agent发送消息获取回复,还涵盖了在会话隔离沙箱中动态执行系统命令、在本地与运行时沙箱环境之间进行大文件传输,以及调用用户在镜像中定义的自定义前缀接口。
运行时API一览
调用运行时不仅仅是向智能体发一条消息、拿到一段回复。AgentArts运行时提供了一套规范的RESTful API,覆盖智能体交互中的常见操作:
| 功能 | API标识 | 接口 | 说明 |
|---|---|---|---|
| 向智能体发送并获取消息 | ExecuteRuntime | POST /runtimes/{runtime_name}/invocations | 最核心的调用接口。将用户输入发送给 Agent,获取 Agent 的回复。 |
| 创建会话 | StartRuntimeSession | POST /runtimes/{runtime_name}/sessions-start | 创建一个独立的会话实例。执行命令、文件上传下载等操作依赖会话提供的沙箱环境。 |
| 停止会话 | StopRuntimeSession | POST /runtimes/{runtime_name}/sessions-stop | 销毁会话实例并释放资源。会话内的文件会被自动清除。 |
| 在会话中执行Shell命令 | ExecuteRuntimeCommands | POST /runtimes/{runtime_name}/commands | 在会话沙箱内执行命令,返回标准输出和错误输出。 |
| 上传文件到会话 | ExecuteRuntimeUploadFiles | POST /runtimes/{runtime_name}/upload-files | 将本地文件上传到会话沙箱的文件系统中。 |
| 从会话下载文件 | ExecuteRuntimeDownloadFiles | GET /runtimes/{runtime_name}/download-files | 将会话沙箱中的文件下载到本地。 |
| 调用自定义路径接口 | ExecuteRuntimeWithPrefix | 任意 /runtimes/{runtime_name}/invocations/{custom_path} | 当Agent暴露了自定义路由时,通过此接口访问非标准路径。该接口支持所有HTTP方法(包括但不限于POST、GET、DELETE、PUT等)。 |
请求体由您的Agent代码决定
您的 Agent 代码定义了它接收什么字段、返回什么字段,平台网关只做鉴权和路由,不对请求体做任何修改。您在调用 API 时传入的 JSON Body,会被原样转发到您的 Agent 容器中。
这意味着:
- 请求体中应该包含哪些字段,完全取决于您编写的 Agent 代码中定义的接收逻辑。
- 响应体的结构也完全由您的 Agent 代码返回值决定。
举例说明,假设您的 Agent 代码如下:
@app.invocation_handler
def handle_invocation(request: dict) -> dict:
user_msg = request.get("message", "") # 您的代码读取 "message" 字段
# ... 业务处理 ...
return {"reply": result, "status": "success"} # 您的代码返回这两个字段 将该智能体打包成镜像,部署到AgentArts运行时后,调用API时,那么调用时就必须传 "message" 字段,收到的响应就是 "reply" 和 "status" 字段。如果API参数填写为其他参数,运行时接口虽然能调用,但会因为message实际传参为空,导致智能体无法正常回答问题。
- 如果您团队中的不同Agent使用了不同的字段名(例如有的用message,有的用query),调用方需要分别适配。
- 调用前请与Agent开发者确认接口约定。
- 本文档示例统一使用message作为请求字段名、reply作为响应字段名,仅作演示用途。实际调用时请以您的Agent代码为准。
典型调用场景
根据业务场景的不同,AgentArts运行时支持以下几种典型交互场景:
场景一:基础对话
最简单的场景:向智能体发消息,拿到回复。
调用智能体(ExecuteRuntime)
→ 发送 {"message": "你好"}
← 收到 {"reply": "你好!有什么可以帮助你的?"} 基础对话场景下,您只需直接调用ExecuteRuntime接口即可。在请求头中携带X-Hw-Agentarts-Session-Id,同一个Session ID的多次调用在Agent侧可以关联上下文,实现多轮对话。
场景二:涉及文件处理
当您需要让Agent处理本地文件(如分析CSV数据),流程为:
① 创建会话(StartRuntimeSession) → 获取沙箱环境 ② 上传文件(ExecuteRuntimeUploadFiles) → 文件进入沙箱 ③ 调用智能体(ExecuteRuntime) → Agent 读取并处理文件 ④ 下载文件(ExecuteRuntimeDownloadFiles)→ 取回处理结果 ⑤ 停止会话(StopRuntimeSession) → 释放资源
必须先通过StartRuntimeSession创建会话来初始化沙箱环境,上传下载文件才有目标容器可操作。
创建运行时过程中需要开启“文件上传下载”功能。
场景三:涉及命令执行
当您需要在 Agent 的沙箱环境中直接执行 Shell 命令(如运行脚本、安装依赖、检查环境),流程为:
① 创建会话(StartRuntimeSession) → 获取沙箱环境 ② 调用智能体(ExecuteRuntime) → Agent 推理决策 ③ 执行命令(ExecuteRuntimeCommands) → 运行 Agent 决策的脚本 ④ 调用智能体(ExecuteRuntime) → Agent 基于命令结果继续推理 ⑤ 停止会话(StopRuntimeSession) → 释放资源
步骤②③④可以多次循环,形成“推理 → 执行 → 再推理”的闭环。
前置条件与调用依赖
在开始调用运行时之前,请确保已完成以下准备:
- 运行时已部署且状态为“正常”。您可以在AgentArts控制台的“智能体运行时”列表中查看运行时状态。
- 已获取“运行时接口”。在运行时详情页的“基本信息”区域可以找到接口地址。 图1 获取运行时接口
- 已配置身份认证凭据。根据创建运行时选择的入站认证方式(IAM认证、API Key认证或OAuth 2.0),准备好对应的认证信息。
- 如需进行文件上传或下载操作,在托管智能体,创建运行时过程中需要开启“文件上传下载”功能。如果创建时未开启,后续将无法使用文件传输能力。 图2 文件上传下载
关于身份认证
每一个调用请求的Authorization请求头都必须携带有效的身份认证凭据。AgentArts运行时支持三种入站认证方式:
| 认证方式 | Authorization 格式 | 使用复杂度 | 适用场景 |
|---|---|---|---|
| API Key | Bearer {api_key} | 低,直接在请求头中写入固定凭证。 | 快速验证、开发调试、内部测试。 |
| IAM 认证(AK/SK) | 由签名 SDK 自动生成 | 高,需要使用签名SDK对请求进行V11-HMAC-SHA256签名。 | 生产环境、企业级集成。 |
| OAuth 2.0 | Bearer {OAuth_Token} | 高,需要先通过OAuth流程获取Token。 | 第三方应用集成。 |
认证方式在部署运行时时选定。本章节的示例以API Key认证为主(最简单直观),IAM认证的签名流程请参见使用API调用运行时接口(IAM认证)。