llmage/wwwroot/t2t/index.dspy
yumoqing d6e4221a7b feat: add model publish/unpublish (上架/下架) functionality
- llm table: add status field (published/unpublished, default unpublished)
- User-facing queries: filter by status='published' in 11 query points:
  - utils.py: get_llms_by_catelog_to_customer, get_llms_by_catelog,
    get_llm, get_llmproviders, get_llms_sort_by_provider
  - v1 endpoints: chat/completions, image/generations, video/generations
  - user pages: t2t, get_type_llms, list_catelog_models,
    list_paging_catelog_llms, llmcheck
- CRUD: status column visible/editable with select dropdown
- Admin CRUD list shows ALL models regardless of status
- Migration SQL: sql/add_status_field.sql (existing models set to published)
2026-05-28 23:42:29 +08:00

41 lines
1.0 KiB
Plaintext

debug(f'{params_kw=}')
lctype='文生文'
if params_kw.off_peak:
off_peak = params_kw.off_peak
if off_peak in [True, "Y" "y", 1, "1"]:
off_peak = True
else:
off_peak = False
params_kw.off_peak = off_peak
userid = await get_user()
userorgid = await get_userorgid()
if userid is None:
return openai_403()
if not params_kw.prompt:
d = return_error('Missing need data(prompt)')
return json_response(d, status=400)
env = request._run_ns
async with get_sor_context(env, 'llmage') as sor:
sql = """select distinct a.* from llm a
join llm_api_map m on a.id = m.llmid
join llmcatelog b on m.llmcatelogid = b.id
where b.name = ${lctype}$
and a.model=${model}$
and a.status = 'published'"""
recs = await sor.sqlExe(sql, {
'lctype': lctype,
'model': params_kw.model or 'qwen3-max'
})
if len(recs) == 0:
return openai_400()
params_kw.llmid = recs[0].id
f = await checkCustomerBalance(params_kw.llmid, userorgid)
if not f:
return openai_429()
env = DictObject(**globals())
return await inference(request, env=env)