You need to enable JavaScript to run this app.
文档中心
ArkClaw 企业版

ArkClaw 企业版

复制全文
下载 pdf
ArkClaw A2A 接口集成最佳实践
ArkClaw A2A 接口集成基础调用说明
复制全文
下载 pdf
ArkClaw A2A 接口集成基础调用说明
本文介绍如何通过 A2A(Agent-to-Agent)JSON-RPC 标准接口远程调用 ArkClaw 智能体能力。支持同步阻塞、流式推送、异步轮询三种调用模式,可适配简单问答、实时输出、长耗时任务等各类业务场景。开发者可通过 curl、Python、Postman 等任意 HTTP 客户端完成对接调试与业务集成。
本文将以curl命令和Python代码为例介绍接口调用方式。
ArkClaw A2A 接口能做什么
ArkClaw A2A(Agent-to-Agent)接口基于 JSON-RPC 2.0 协议,将 ArkClaw 智能体的能力开放给外部系统调用。通过该接口可以实现:
  • 业务系统集成智能问答:将智能体接入业务后端,提供知识问答、语义搜索等能力。
  • 长耗时任务异步处理:适合报告生成、复杂检索等场景,避免同步等待。
  • 流式交互体验:前端实时展示智能体输出,提升用户体验。
  • 多轮上下文对话:通过会话保持支持连续追问、上下文推理。
请求地址与公共参数说明
开启并获取 Webhook 请求地址
开启 ArkClaw 实例基于 A2A 协议的外部接入能力后,平台将自动生成 Endpoint URL 和 API Key,供外部业务系统通过公网访问调用当前 ArkClaw。
  1. 在目标 ArkClaw 实例详情页面,切换至“设置”页签后,单击图标,开启 Webhook。了解更多
  1. 单击图标,复制生成的公网访问链接,以备后续调用时使用。了解更多
公共参数说明
  • 接口统一请求地址
  • 所有 A2A 接口请求统一访问以下公网地址,链接中占位参数请替换为当前 ArkClaw 的实际配置信息:
  • https://{GATEWAY_HOST}/a2a/jsonrpc?apikey={API_KEY}&clawId={CLAW_ID}
说明
上述请求地址为 Webhook 公网 Endpoint,可从 开启并获取 Webhook 请求地址 中获取。
  • 公网地址参数说明
  • 参数
    说明
    示例值
    {GATEWAY_HOST}
    API 网关公网域名。
    必须使用公网域名,禁止携带-inner内网后缀,内网域名仅支持内网访问、公网无法解析。
    xxxxxxxx.apigateway-cn-beijing.volceapi.com
    {API_KEY}
    接口鉴权密钥,用于服务端身份校验,全局唯一。请妥善保管切勿外泄,避免出现权限盗用、接口滥用等安全风险。
    9ac252facbad4e519ddd6413ed****
    {CLAW_ID}
    ArkClaw 实例唯一ID,用于定位具体调用的智能体实例。
    ci-yep7s80hdsrkm4w****
公共请求头
所有接口请求统一固定请求头:Content-Type: application/json
通过curl命令调用 A2A 接口
curl调用适合快速调试、临时验证接口,无需开发环境,复制命令直接在终端执行,多用于测试排错、快速看返回结构。您可以按需选择以下任意方式进行 A2A 接口调试。
同步阻塞调用
异步轮询调用
流式调用
适用于简短问答、轻量计算及整体耗时较短的任务,详情请参见 ArkClaw A2A接口同Session多轮对话最佳实践 中的同步访问 A2A 接口
使用Python命令调用 A2A 接口
通过 Python 的 requests 库调用 A2A 接口,适用于在服务端脚本、自动化任务或后端应用中接入 ArkClaw 的 A2A 能力。调用方式包括同步阻塞调用、流式调用,以及异步任务轮询三种模式。
步骤一:安装依赖环境
  1. 执行如下命令,安装网络请求依赖库。
  • pip install requests
  1. 打开终端,执行以下命令,展示 Version 版本信息、Location 安装路径,即为安装完成。
  • pip show requests
步骤二:配置接口地址并封装公共请求方法
将接口调用地址替换为 ArkClaw 控制台提供的公网 Endpoint,并封装消息构造方法与通用请求方法。便于后续的同步调用、流式调用和异步任务调用复用,可避免重复编写请求构造。
import json
import time
import uuid
import requests
URL = f"https://sd8ojs9tiq5rjni****.apigateway-cn-beijing.volceapi.com/a2a/jsonrpc?apikey=9ac252facbad4e519ddd6****&clawId=ci-yeok2q4dmo3pe****"
HEADERS = {"Content-Type": "application/json"}
def build_message(text):
return {
"parts": [{"kind": "text", "text": text}],
"messageId": str(uuid.uuid4()),
"role": "user",
}
def post_jsonrpc(method, params, timeout=120):
payload = {
"jsonrpc": "2.0",
"id": str(uuid.uuid4()),
"method": method,
"params": params,
}
response = requests.post(URL, headers=HEADERS, json=payload, timeout=timeout)
response.raise_for_status()
data = response.json()
if "error" in data:
raise RuntimeError(data["error"])
return data["result"]
参数说明如下表所示,请根据实际值替换。
参数名
类型
是否必填
说明
取值示例
基础配置参数
URL
String
接口调用地址,需替换为 ArkClaw 控制台提供的 公网 Endpoint
https://sd8ojs9tiq5rjni****.apigateway-cn-beijing.volceapi.com/a2a/jsonrpc?apikey=9ac252facbad4e519ddd6****&clawId=ci-yeok2q4dmo3pe****
HEADERS
Dict
HTTP 请求头。固定为 {"Content-Type": "application/json"},无需修改。
保持默认
构造 A2A 消息体参数
text
String
用户输入文本,作为本次对话请求的内容,可根据业务需求自定义修改。
你是谁
parts[].kind
String
消息片段类型,固定取值为text,表示文本消息。
保持默认
messageId
String
消息唯一标识,用于标识一次用户消息。
保持默认
role
String
消息角色标识,固定为user,代表本条消息为用户侧提问内容。
保持默认
JSON-RPC 请求参数
method
String
JSON-RPC 调用的方法名,不同调用方式对应不同取值。取值:
  • message/send:同步阻塞调用
  • message/stream:流式调用
  • tasks/get:轮询查询异步任务结果
message/send
params
Dict
方法调用参数对象,不同调用方式下子字段取值范围如下:
  • 同步阻塞调用(message/send)时,需传入params.message
  • 流式调用(message/stream)时,需传入 params.message
  • 异步任务提交(message/send且 params.configuration.blocking=false)时,需传入params.messageparams.configuration
  • 异步任务查询(tasks/get)时,包含 params.id
timeout
Integer
HTTP 请求超时时间,单位为秒,默认值为 120 秒。若业务存在长耗时推理场景,可按需调大该数值,仅需传入整数数值即可。
保持默认
jsonrpc
String
JSON-RPC 协议版本,固定为 2.0,无需修改。
保持默认
id
String
请求唯一标识,自动生成,用于匹配请求与响应。
保持默认
步骤三:按业务场景选择调用方式
将基础封装代码与同步阻塞、流式或异步轮询调用示例拼接至同一个 Python 脚本,直接运行该文件,程序将自动输出智能体返回的完整对话结果。
同步阻塞调用
流式调用
异步轮询调用
同步阻塞调用适用于适用于普通问答、短文本生成、结果可在单次请求内返回的场景,例如单轮问答或轻量级指令执行。
调用通用请求函数 post_jsonrpc,传入方法名 message/send 和构造好的对话消息体,接口会在服务端处理完成后一次性返回最终结果。
说明
按需将send_sync("你是谁") 括号内的文本,替换成您想要提问的内容即可。
def send_sync(text):
result = post_jsonrpc(
"message/send",
{"message": build_message(text)},
)
parts = result.get("status", {}).get("message", {}).get("parts", [])
return "".join(part.get("text", "") for part in parts if part.get("kind") == "text")
answer = send_sync("你是谁")
print(answer)
最近更新时间:2026.07.16 20:01:02
这个页面对您有帮助吗?
有用
有用
无用
无用