35 lines
1.2 KiB
Plaintext
35 lines
1.2 KiB
Plaintext
# GET /llmage/v1/pricing
|
|
# Get model pricing display information
|
|
# Required params: model (model name, e.g. qwen3.7-max)
|
|
# Optional params: catelogid (default: t2t)
|
|
#
|
|
# Example: /llmage/v1/pricing?model=qwen3.7-max
|
|
# Returns: { "status": "ok", "data": { "display_text": "...", ... } }
|
|
|
|
model = params_kw.model
|
|
if not model:
|
|
return json.dumps({"status": "error", "message": "model parameter required"}, ensure_ascii=False)
|
|
|
|
catelogid = params_kw.catelogid or 't2t'
|
|
env = request._run_ns
|
|
|
|
try:
|
|
async with get_sor_context(env, 'llmage') as sor:
|
|
sql = """select m.ppid from llm a
|
|
join llm_api_map m on a.id = m.llmid
|
|
where a.model = ${model}$
|
|
and a.status = 'published'
|
|
and m.ppid is not null
|
|
and m.isdefaultcatelog = '1'
|
|
"""
|
|
recs = await sor.sqlExe(sql, {'model': model})
|
|
if len(recs) == 0:
|
|
return json.dumps({"status": "error", "message": f"model '{model}' not found or has no pricing"}, ensure_ascii=False)
|
|
ppid = recs[0].ppid
|
|
|
|
result = await env.get_pricing_display(ppid)
|
|
return json.dumps({"status": "ok", "data": result}, ensure_ascii=False, default=str)
|
|
except Exception as e:
|
|
exception(f'get pricing for {model} failed: {e}\n{format_exc()}')
|
|
return json.dumps({"status": "error", "message": str(e)}, ensure_ascii=False)
|