第三方AI服务接入指南
更新时间:2019-06-14
第三方AI能力接入协议
第三方AI服务接入时需遵循百度现有协议规范,包含鉴权方式、请求协议、响应协议,本文主要介绍人脸和物体识别两项第三方AI服务接入规范。
鉴权方式
第三方AI服务接入时,需要提供服务地址的URL。若第三方AI服务需要进行认证鉴权,则需以access_token作为认证方式。本产品后端在访问第三方AI服务时,将把access_token作为query参数拼接到服务地址URL,发送给第三方AI服务。access_token填写位置为“接入密钥”,为选填项。配置方式如下:
人脸识别服务接入协议
-
请求说明
请求示例
HTTP方法:POST
请求URL:管理控制台上已设置的第三方人脸识别服务的URL
URL参数:参数 值 access_token 通过管理控制台“拓展技能>编辑物体识别”选择服务来源,
为用户自定义,设置的接入密钥,可编辑保存完成更新。Header如下:
参数 值 Content-Type application/json
Body中放置请求参数,参数详情如下:
请求参数
参数 必选 类型 说明 requestId 是 string 请求唯一标识码,随机字符串 image 是 string 图片大小:不超过10M ,最短边15px,最长边最大4096px,
具体根据机器人摄像头可采集的图片的大小和格式决定;
Base64编码:机器人服务端对图片进行了Base64编码,
因此自定义服务端需要实现解码图片逻辑(ABC Robot服务端对图片的二进制用Base64格式编码);
图片格式:JPEG,目前不支持其他格式。 -
返回示例
{ “requestId”: xxxx, // string, 记录唯一标识 “result”: { “userId”: “u333333”, // String, 用户ID “userName”: “无名”, // String, 最终进行播报的人名 “userInfos”: { “gender”: “”, “age”: “” }, // map<String,String>, 用户的其他描述信息 “score”: 99.0 // float, 阈值0-100, 返回的人脸识别的阈值分数 “filterThreshold”: 80.0 // float, 0-100,返回设置的过滤人脸的阈值,如果设置的score < filterThreshold 则会返回ABC Robot默认的兜底策略。 } }
物体识别服务接入协议
-
请求说明
请求示例
HTTP方法:POST
请求URL:管理控制台上已设置的第三方物体识别服务的URL
URL参数:参数 值 access_token 通过管理控制台“拓展技能>编辑物体识别”选择服务来源,
为用户自定义,设置的接入密钥,可编辑保存完成更新。Header如下:
参数 值 Content-Type application/json
Body中放置请求参数,参数详情如下:
请求参数
参数 必选 类型 说明 requestId 是 string 请求唯一标识码,随机字符串 image 是 string 图片大小:不超过10M ,最短边15px,最长边最大4096px,
具体根据机器人摄像头可采集的图片的大小和格式决定;
Base64编码:机器人服务端对图片进行了Base64编码,因此自定义服务端需要实现解码图片逻辑
(ABC Robot服务端对图片的二进制用Base64格式编码);
图片格式:JPEG,目前不支持其他格式 -
返回示例
返回参数
参数 必选 类型 说明 requestId 是 string 唯一的request id,用于问题定位 extInfos 否 map<String,String> 其他需要返回的一些信息,主要用于后续自定义bot等使用 filterThreshold 是 float 范围:0-1 resultNum 是 unit32 返回结果数目,及result数组中的元素个数 result 是 object() 标签结果数组 +keyword 是 string 图片中的物体或场景名称,ABCrobot服务端会根据设置的 filterThreshold
以及自定义服务端返回的结果数组中超过阈值且最大score的结果返回,用于返回和语音播报。+score 是 float 置信度:0-1 +root 否 string 识别结果的上层标签,可选择是否返回 返回示例
HTTP / 1.1 200 OK Content - Type: application / json; charset = UTF - 8 {“ result”: [{“ score”: 0.996184, “root”: “商品 - 电脑办公”, “keyword”: “台式机” }, {“ score”: 0.799921, “root”: “Logo”, “keyword”: “联想” }, {“ score”: 0.424538, “root”: “商品 - 电脑办公”, “keyword”: “电脑” }, {“ score”: 0.213236, “root”: “商品 - 电脑办公”, “keyword”: “服务器 / 工作站” }, {“ score”: 0.10919, “root”: “商品 - 数码产品”, “keyword”: “台式电脑” } ], “extInfos”: {} “filterThreshold”: 0.7, “resultNum”: 5, “requestId”: 2 sfdsfsdf689001477dsd }
返回错误码说明
非200请求失败需要使用以下定义进行返回。
所有错误除了使用HTTP状态码以外,应同时在内容中至少包含下表的参数,第三方服务需适当增加返回错误码以便定位问题。
参数名 | 类型 | 说明 |
---|---|---|
message | String | 该错误相关说明 |
requestId | String | 导致该错误的requestId |
通用返回定义,其余未包含在此说明中,第三方服务可以根据其服务的逻辑进行更改。
Code | Message | HTTP Status Code | 说明 |
---|---|---|---|
AccessDenied | Access denied. | 403 Forbidden | 无权限访问对应的资源 |
InappropriateJSON | The JSON you provided was well-formed and valid, but not appropriate for this operation. | 400 Bad Request | 请求中的JSON格式正确,但语义上不符合要求。 如缺少某个必需项,或者值类型不匹配等。 出于兼容性考虑,对于所有无法识别的项应直接忽略,不应该返回这个错误。 |
InternalError | We encountered an internal error. Please try again. | 500 Internal Server Error | 所有未定义的其他错误。在有明确对应的其他类型的错误时(包括通用的和服务自定义的)不应该使用。 |
InvalidAccessToken | The access token you provided does not exist in our records. | 403 Forbidden | Access Token不存在 |
InvalidHTTPRequest | There was an error in the body of your HTTP request. | 400 Bad Request | HTTP body格式错误。例如不符合指定的Encoding等 |
MalformedJSON | The JSON you provided was not well-formed. | 400 Bad Request | JSON格式不合法 |