This commit is contained in:
yumoqing 2026-04-09 14:58:49 +08:00
parent 3659c75097
commit b5da4b902d
5 changed files with 23 additions and 29 deletions

View File

@ -169,13 +169,8 @@ where a.llmid = b.id
# debug(f'{sql=}, {ns=}, {len(recs)=}')
for r in recs:
if r.usages is None:
io = json.loads(r.ioinfo)
if len(io['output']) == 0:
llmusage.accounting_status = 'failed'
await sor.U('llmusage', {'id': llmusage.id, 'accounting_status': 'failed'})
debug(f'{len(io["output"])} is 0')
continue
r.usages = json.dumps(io['output'][-1].get('usage'))
output = await get_lastoutput(r.ioinfo)
r.usages = output.get('usage')
if r.usages is None:
llmusage.accounting_status = 'failed'
await sor.U('llmusage', {'id': llmusage.id, 'accounting_status': 'failed'})

View File

@ -35,11 +35,8 @@ async def get_asynctask_status(taskid):
recs = await sor.R('llmusage', {'taskid': taskid})
if recs:
r = recs[0]
io = json.loads(r.ioinfo)
d = io.get('output', {})
if isinstance(d, list):
return d[-1]
return d
output = await get_lastoutput(r.ioinfo)
return output
return {
'taskid': taskid,
'status': 'FAILED',
@ -129,14 +126,6 @@ async def modify_llmusage_status(llmusage):
'status': llmusage.status
})
def get_llmusage_last_output(r):
io = json.loads(r.ioinfo)
outs = io.get('output', [])
if len(outs) == 0:
return None
d = DictObject(**outs[-1])
return d
async def get_llm_llmusage(luid):
env = request._run_ns
async with get_sor_context(env, 'llmage') as sor:
@ -165,7 +154,7 @@ async def query_task_status(request, upappid, apiname, luid, userid, taskid):
for apiname in apinames:
while True
lastoutout = get_llmusage_last_output(llmusage)
lastoutout = await get_lastoutput(llmusage.ioinfo)
if lastoutout['status'] in ['FAILED', 'SUCCEEDED']
return
ns = {'taskid': taskid}

View File

@ -84,10 +84,13 @@ async def uapi_request(request, llm, callerid, callerorgid, params_kw=None):
llmusage.use_time = timestampstr()
llmusage.userid = callerid
llmusage.usages = json.dumps(usage, ensure_ascii=False)
llmusage.ioinfo = json.dumps({
ioinfo = json.dumps({
"input": params_kw,
"output": outlines
'output': [d]
}, ensure_ascii=False)
webpath = await write_llmio(llmusage.id, ioinfo)
llmusage.ioinfo = webpath
debug(f'webpath={webpath}:')
llmusage.transno = params_kw.transno
llmusage.responsed_seconds = responsed_seconds
llmusage.finish_seconds = finish_seconds

View File

@ -50,10 +50,12 @@ async def sync_uapi_request(request, llm, callerid, callerorgid, params_kw=None)
llmusage.use_time = timestampstr()
llmusage.userid = callerid
llmusage.usages = json.dumps(usage, ensure_ascii=False)
llmusage.ioinfo = json.dumps({
ioinfo = json.dumps({
"input": params_kw,
"output": [d]
'output': [d]
}, ensure_ascii=False)
webpath = await write_llmio(llmusage.id, ioinfo)
llmusage.ioinfo = webpath
llmusage.transno = params_kw.transno
llmusage.responsed_seconds = responsed_seconds
llmusage.finish_seconds = finish_seconds

View File

@ -25,6 +25,11 @@ async def append_new_llmoutput(webpath, output):
iostr = json.dumps(io, ensure_ascii=False, indent=4)
f.write(iostr.encode('utf-8'))
async def get_usage_from_lastoutput(webpath):
bin = await read_webpath(webpath)
io = json.load(bin.decode('utf-8'))
return io['output'][-1]
async def read_webpath(webpath):
fs = FileStorage()
p = fs.realPath(webpath)