gBuilder 自定义端点服务示例
本 repo 提供了一个通过 Flask 构建 gBuilder 自定义 endpoint 的最简示例,用于演示如何构建自定义端点服务。通过本 repo 启用的自定义端点服务,可以成功注册至 gBuilder 模型中心(需要端点服务能被公网访问到)。
具体的实现请参照 app.py
中的内容,与本文的说明配合理解。
- 安装依赖:
pip install -r requirements.txt
- 启动服务:
python app.py
- 将服务地址添加至 gBuilder 模型中心。
如果您希望基于本示例直接实现 gBuilder endpoint,请修改
app.py
中的process
函数的内容。
gBuilder 自定义端点服务需要实现以下接口:
通过本接口,gBuilder 系统可以获知自定义 endpoint 的当前状态。
- 请求地址:
/status
- 请求方式:GET
- 返回内容:
{"status": STATUS}
- 状态值(STATUS)及说明:
STATUS | Description |
---|---|
1 | 当前Endpoint处于可用状态 |
2 | 当前Endpoint处于满载状态,需要等待前置任务完成 |
3 | 当前Endpoint处于错误状态,暂时无法提供服务 |
- 示例
curl http://localhost:5050/status
返回:
{"status": 0}
通过本接口,gBuilder 可以向端点分派任务及数据,或获知当前端点上某个任务的执行状态
本接口接受 POST 请求,以向端点提交一个 Inference 任务。
- 请求地址:
/tasks
- 请求方式:POST
- 接收字段:以
form-data
形式接收一下字段:
Field | Description | Required |
---|---|---|
task_id | 用于区分不同任务的任务id | Y |
task_file | 以文件形式传输的数据文件 | Y |
immediate | 确定是否以异步的形式执行任务。如果是长时间推理任务需要将其设为 true,否则无需填写 | N |
- 返回内容:
{"status": 200}
如果出现错误,会以对应错误码形式返回报错。
通过该接口,gBuilder 可以获知当前 Endpoint 上执行的 id 为 <task_id>
的任务的执行状态。
- 请求地址:
/tasks/<task_id>
- 请求方式:GET
- 返回内容:
{"status": STATUS}
- 状态值(STATUS)及说明:
STATUS | Description |
---|---|
0 | 该任务当前正在执行 |
1 | 该任务正在等待前置任务执行完成 |
2 | 该任务已经完成 |
3 | 执行该任务时发生了错误 |
-1 | 该端点中没有对应 task_id 的任务 |
通过该接口,gBuilder 可以取得该任务的执行结果。
- 请求地址:
/tasks/<task_id>/results
- 请求方式:GET (文件下载)
- 返回内容:以文件的形式返回处理好的数据
通过该接口,gBuilder 可以通知本端点即刻停止正在执行的 id 为 <task_id>
的任务。
- 请求地址:
/tasks/<task_id>
- 请求方式:DELETE
- 返回内容:
{"status": 200}
如果出现错误,会以对应错误码形式返回报错。
请参考数据结构中的内容,制定模型端点的输入输出。
通过实现上述接口,即可以实现一个能够提供服务的 gBuilder Endpoint,可以在 gBuilder 模型中心中通过填写对应的端点地址,将自定义的端点加入 gBuilder 模型中心,从而在 gBuilder 知识图谱构建 Flowline 中提供服务。