71 lines
1.7 KiB
Plaintext
71 lines
1.7 KiB
Plaintext
# OpenAI-compatible Video Generation API
|
|
# POST /v1/video/generations
|
|
# Required params: model, catelogid
|
|
# Optional params: prompt, image_url, duration, resolution, n, etc.
|
|
#
|
|
# Example request:
|
|
# {
|
|
# "model": "keling-2.1",
|
|
# "catelogid": "t2v",
|
|
# "prompt": "A beautiful sunset over the ocean",
|
|
# "duration": "5s",
|
|
# "resolution": "1080p"
|
|
# }
|
|
#
|
|
# Response (async task):
|
|
# {
|
|
# "id": "vid_xxx",
|
|
# "object": "video.generation",
|
|
# "model": "keling-2.1",
|
|
# "status": "submitted",
|
|
# "taskid": "task_xxx",
|
|
# "created": 1234567890
|
|
# }
|
|
|
|
|
|
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)
|
|
|
|
if not params_kw.catelogid:
|
|
d = return_error('Missing required parameter: catelogid')
|
|
return json_response(d, status=400)
|
|
|
|
if not params_kw.prompt:
|
|
d = return_error('Missing required parameter: prompt')
|
|
return json_response(d, status=400)
|
|
|
|
lctype = params_kw.catelogid
|
|
|
|
env = request._run_ns
|
|
llmid = await env.get_llmid_cached(env, params_kw.model, lctype)
|
|
if not llmid:
|
|
debug(f'{params_kw.model=} not found for catalog {lctype}')
|
|
return openai_400()
|
|
params_kw.llmid = llmid
|
|
params_kw.llmcatelogid = lctype
|
|
|
|
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 and attach to params
|
|
if not params_kw.transno:
|
|
params_kw.transno = getID()
|
|
|
|
# Call inference (video/image generation is typically async via callback)
|
|
return await inference(request, env=env)
|