65 lines
1.6 KiB
Plaintext
65 lines
1.6 KiB
Plaintext
# KTV Pipeline / GPU Service Inference API
|
||
# POST /v1/pipeline/submit
|
||
# catelogid 固定为 ktv_pipeline,无需传 catelogid
|
||
#
|
||
# Required params:
|
||
# model: string - 模型名称,如 "ky-asr-transcribe"
|
||
#
|
||
# 各服务特定参数见 API 文档
|
||
#
|
||
# 同步服务直接返回结果:
|
||
# {
|
||
# "taskid": "luid_xxx",
|
||
# "taskstatus": "SUCCEEDED",
|
||
# ...服务特定结果字段...,
|
||
# "usage": {...}
|
||
# }
|
||
#
|
||
# 异步服务返回任务信息:
|
||
# {
|
||
# "taskid": "luid_xxx",
|
||
# "taskstatus": "PENDING"
|
||
# }
|
||
# 异步结果通过 /v1/tasks?taskid=xxx 查询
|
||
|
||
debug_params('params_kw', params_kw)
|
||
|
||
userid = await get_user()
|
||
userorgid = await get_userorgid()
|
||
if userid is None:
|
||
debug('need login')
|
||
return openai_403()
|
||
|
||
# Validate required parameters
|
||
if not params_kw.model:
|
||
d = return_error('Missing required parameter: model')
|
||
return json_response(d, status=400)
|
||
|
||
catelogid = 'ktv_pipeline'
|
||
params_kw.catelogid = catelogid
|
||
|
||
env = request._run_ns
|
||
# llmid from cache (model+catelogid -> llmid)
|
||
llmid = await env.get_llmid_cached(env, params_kw.model, catelogid)
|
||
if not llmid:
|
||
debug(f'{params_kw.model=} not found under ktv_pipeline catalog')
|
||
d = return_error(f'Model "{params_kw.model}" not found or not available')
|
||
return json_response(d, status=400)
|
||
params_kw.llmid = llmid
|
||
params_kw.llmcatelogid = catelogid
|
||
|
||
debug(f'{params_kw.llmid=}')
|
||
|
||
# Check balance
|
||
f = await checkCustomerBalance(params_kw.llmid, userid, userorgid)
|
||
if not f:
|
||
debug(f'{userid=} balance not enough')
|
||
return openai_429()
|
||
|
||
# Generate task ID
|
||
if not params_kw.transno:
|
||
params_kw.transno = getID()
|
||
|
||
# Call inference
|
||
return await inference(request, env=env)
|