云端 API
查询模型、生成动作,并管理连续任务的会话与请求。
云端模型 API 接收当前观测,返回一段机器人动作。正式 Base URL 为 https://api.pokebot.com/v1。按账户与 API Key设置 PLATFORM_BASE_URL 和 PLATFORM_API_KEY。
所有请求使用 Authorization: Bearer <API_KEY>。以下路径均相对于 Base URL,凭据应保存在服务端或本地控制程序中。
接口概览
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /models | 列出可用模型 |
| GET | /models/{model_id} | 查看模型信息 |
| GET | /models/{model_id}/schema | 查看输入、输出与会话约束 |
| POST | /chat/completions | 根据当前观测生成动作 |
| POST | /sessions | 创建连续任务的会话 |
| GET | /sessions/{session_id} | 查看会话状态与下一轮次 |
| GET | /sessions/{session_id}/turns/{turn} | 查询某轮状态和已保存的响应 |
| POST | /sessions/{session_id}/close | 提交最后的执行回执并关闭会话 |
| GET | /requests/{request_id} | 查询推理状态、耗时和用量 |
第一次调用可从快速开始入手。连续执行任务的轮次和回执流程见连续任务与会话。
获取模型
GET /models
返回当前 API Key 可调用的模型。从响应的 data 数组读取 id,将选中的值用于后续请求的 model 字段。
curl --fail-with-body "$PLATFORM_BASE_URL/models" \
-H "Authorization: Bearer $PLATFORM_API_KEY"模型 ID 是调用标识。直接使用返回的值,无需根据产品名称推导。
查看模型约束
GET /models/{model_id}/schema
选定模型后,使用它的 ID 查询 schema。下面的 PLATFORM_MODEL 是从模型列表中选择的值。
curl --fail-with-body "$PLATFORM_BASE_URL/models/$PLATFORM_MODEL/schema" \
-H "Authorization: Bearer $PLATFORM_API_KEY"| 字段 | 说明 |
|---|---|
inputs | 状态数组的长度、类型与数值限制 |
image | 图像格式、色彩模式、像素数与宽高比限制 |
text | 指令要求;存在 max_chars 时按其限制长度 |
output | 模型原始动作输出的形状 |
session | 会话支持与实际交付动作的形状字段 |
streaming | 是否支持流式响应 |
更换模型时重新读取 schema,按所选模型的约束准备观测与动作。
生成动作
POST /chat/completions
请求使用 JSON,包含模型 ID 和一条描述当前观测的 user 消息。
| 字段 | 类型 | 说明 |
|---|---|---|
model | string | 从 /models 获取的模型 ID |
messages | array | 当前观测消息 |
messages[0].role | string | user |
messages[0].content | array | 一段 JSON 文本和一张图像 |
文本部分包含 instruction 和 state,并通过 JSON.stringify() 编码为字符串。图像部分使用 base64 data URL。
const request = {
model: process.env.PLATFORM_MODEL,
messages: [{
role: "user",
content: [
{
type: "text",
text: JSON.stringify({ instruction, state })
},
{
type: "image_url",
image_url: { url: imageDataUrl }
}
]
}]
};instruction 是任务指令,state 是采集到的机器人状态,imageDataUrl 是对应时刻的相机图像。格式见观测与动作;完整调用见 Python 或 JavaScript 与 curl。
读取动作
响应通过 execute_actions 工具调用返回动作。找到 choices[0].message.tool_calls 中对应的条目,将 function.arguments 解析为 JSON,读取其中的 output。
const call = result.choices?.[0]?.message?.tool_calls?.find(
(item) => item.function?.name === "execute_actions"
);
if (!call) throw new Error("Missing execute_actions result");
const { output } = JSON.parse(call.function.arguments);output 是动作序列:每行包含 8 个数值,行数以本次结果为准。数据顺序和坐标要求见观测与动作。
会话响应中的 metadata.action_shape 是 JSON 字符串,解析后表示本轮交付的动作形状;inference_usage.output_shape 描述原始模型输出,两者可能不同。控制程序应核对本轮交付形状,再执行动作并采集下一次观测。RoboAPI 本地运行程序负责这一循环和执行回执;自行接入时按连续任务与会话实现。
查询请求与用量
GET /requests/{request_id}
使用推理响应头 X-Request-ID 查询本次请求;查询会话轮次时,也可读取该轮的 request_id。completion 响应体的 id(如 chatcmpl-…)是另一种标识,不能用于这个接口。
Python 示例通过 response._request_id 读取请求编号,JavaScript 通过 response.headers.get("x-request-id") 读取。将实际编号填入 REQUEST_ID:
REQUEST_ID="<X_REQUEST_ID>"
curl --fail-with-body "$PLATFORM_BASE_URL/requests/$REQUEST_ID" \
-H "Authorization: Bearer $PLATFORM_API_KEY"查询结果包含 status、code、started_at、finished_at、timings 和 inference_usage。succeeded 表示推理完成,机器人是否执行动作由控制程序的回执确认。若会话请求中断且未收到请求 ID,可用会话 ID 和轮次查询已保存的响应,避免盲目重新执行。
inference_usage 字段 | 含义 |
|---|---|
input_images | 本次推理的输入图像数 |
output_shape、output_elements | 原始模型输出的形状与元素数,不代表实际执行步数 |
timings_ms.total_ms | 服务端处理总耗时,单位为毫秒,不包含完整网络往返时间 |
usage 可能为 null。推理用量用于了解一次调用的计算结果;账户额度和账单以开发者控制台为准。
处理错误
先检查 HTTP 状态,再解析响应。认证、权限、输入格式和服务繁忙的处理方式见云端调用错误。
首次接入可从云端快速开始完成一次调用。连接自有机器人后,可通过本地 HTTP API操作本地运行程序。