核心接口只有一个,以下为 0.1.0 版接口说明。
https://jev.amigos-robot.com/v1/systemone
请求体:
{
"state": "文本,或 JSON 对象/数组",
"images": ["base64 串 或 http(s) URL 或 服务器本地路径"],
"model": "jev-lite",
"questions": {
"<问题名>": {"type": "choice|score|noul", "instructions": "...", "criteria": ...}
}
}
| 字段 | 必填 | 说明 |
|---|---|---|
state | 是 | 状态信息:纯文本,或 JSON 对象/数组(服务端会序列化成文本)。受模型上下文长度 8192 token 限制,超长会被拒绝 |
images | 否 | 最多 4 张,按数组顺序传给模型。三种来源任选:base64 串(裸串或 data URL)、 http(s) URL(服务端下载,超时 10 秒)、服务器本地路径。长边超过 1024px 的图会自动等比缩小。不支持视频 |
model | 否 | 固定写 "jev-lite" 即可,仅回显 |
questions | 是 | 键是问题名(只用于在答案里对应回你的问题,不进模型),值是问题定义,见下 |
criteria 是一个非空对象:key 是选项名(答案里回显用),value 是该选项的描述。选项顺序即你书写顺序,最多 50 个。
"questions": {
"下一步动作": {"type": "choice", "instructions": "机械臂当前应执行哪个动作?",
"criteria": {"抓取": "目标物体在夹爪正下方且无障碍,直接闭合夹爪",
"移动": "先移动夹爪到目标正上方再考虑抓取",
"停止": "检测到人员靠近或异常情况,立即停下"}}
}
返回 choice(概率最高的选项)、probabilities(各选项概率,和为 1)、confidence(置信度,0~1,分布越集中越接近 1)、latency_ms。
criteria 是长度 ≥2 的有序等级数组,从低到高排列。
"questions": {
"抓取稳定性": {"type": "score", "instructions": "评估机械臂当前抓取的稳定程度",
"criteria": ["不稳定", "较稳定", "非常稳定"]}
}
返回 score(概率加权后的期望下标,范围 [0, 档数-1],可落在两档之间)、probabilities(各档位概率)、legend(下标→档位映射)、confidence、latency_ms。
criteria 必须包含 true(是)和 false(否)两个键,value 是对应描述。
"questions": {
"是否空抓": {"type": "noul", "instructions": "机械臂是否空抓?",
"criteria": {"true": "夹爪闭合但没有抓到物体", "false": "夹爪抓到了物体"}}
}
返回 noul(P(是) 的概率,0~1)、confidence、latency_ms。
{
"model": "jev-lite",
"latency_ms": 132.5,
"answers": {
"<问题名>": { "type": "...", "...": "见上方各类型说明" }
}
}
import base64, requests
with open("photo.jpg", "rb") as f:
b64 = base64.b64encode(f.read()).decode()
r = requests.post("https://jev.amigos-robot.com/v1/systemone", json={
"state": "机械臂执行抓取后的场景",
"images": [b64],
"model": "jev-lite",
"questions": {
"是否空抓": {"type": "noul", "instructions": "机械臂是否空抓?",
"criteria": {"true": "夹爪闭合但没有抓到物体",
"false": "夹爪抓到了物体"}}
},
})
print(r.json()["answers"]["是否空抓"])
# {'type': 'noul', 'noul': 0.98, 'confidence': ..., 'latency_ms': ...}
| 状态码 | 场景 |
|---|---|
| 200 | 成功 |
| 422 | 请求不合规:choice 选项超过 50 个;图像超过 4 张;图像下载/解码失败;问题类型或 criteria 格式不对;state + 图像总长度超过 8192;请求体字段类型错误 |
| 500 | 服务内部异常(正常调用不应出现;遇到请带上出错时间反馈给维护者) |
错误返回体统一为 {"detail": "<可读的错误信息>"}。
confidence 低说明模型也不确定,可在业务上走人工兜底;选项描述写得越清晰具体,结果越可靠。