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)