diff --git a/llmage/init.py b/llmage/init.py index 7aae783..4bda169 100644 --- a/llmage/init.py +++ b/llmage/init.py @@ -10,17 +10,18 @@ from .utils import ( read_webpath, llm_query_price, get_llm_by_model, + get_llms_by_catelog, + get_llms_sort_by_provider, + get_llmcatelogs, + get_llms_by_catelog_to_customer, + get_llmproviders, + get_llm, BufferedLLMs ) from .llmclient import ( - get_llm, inference_generator, - inference, - get_llmproviders, - get_llms_sort_by_provider, - get_llmcatelogs, - get_llms_by_catelog + inference ) from .accounting import ( checkCustomerBalance, diff --git a/llmage/utils.py b/llmage/utils.py index b8529d5..e2b529a 100644 --- a/llmage/utils.py +++ b/llmage/utils.py @@ -141,7 +141,45 @@ async def get_llmcatelogs(): return [] -async def get_llms_by_catelog(catelogid=None): +async def get_llms_by_catelog_to_customer(catelogid=None, orderby='providerid'): + env = ServerEnv() + async with get_sor_context(env, 'llmage') as sor: + today = curDateString() + # Join with llm_catalog_rel to support multiple catalogs per LLM + sql = """select a.*, b.name as catelogname, rel.llmcatelogid as catelog_id + from llm a + join llm_catalog_rel rel on a.id = rel.llmid + join llmcatelog b on rel.llmcatelogid = b.id + where a.enabled_date <= ${today}$ + and a.ppid is not null + and a.expired_date > ${today}$ + """ + params = {'today': today, 'sort': orderby} + if catelogid: + sql += " and rel.llmcatelogid = ${catelogid}$" + params['catelogid'] = catelogid + + sql += " order by rel.llmcatelogid, a.id" + + recs = await sor.sqlExe(sql, params) + d = [] + cid = '' + x = None + for r in recs: + if cid != r.catelog_id: + x = { + 'catelogid': r.catelog_id, + 'catelogname': r.catelogname, + 'llms': [r] + } + d.append(x) + cid = r.catelog_id + else: + x['llms'].append(r) + return d + return [] + +async def get_llms_by_catelog(catelogid=None, orderby='providerid'): env = ServerEnv() async with get_sor_context(env, 'llmage') as sor: today = curDateString() @@ -152,7 +190,7 @@ async def get_llms_by_catelog(catelogid=None): join llmcatelog b on rel.llmcatelogid = b.id where a.enabled_date <= ${today}$ and a.expired_date > ${today}$""" - params = {'today': today} + params = {'today': today, 'sort': orderby} if catelogid: sql += " and rel.llmcatelogid = ${catelogid}$" params['catelogid'] = catelogid diff --git a/wwwroot/list_llms/index.dspy b/wwwroot/list_llms/index.dspy new file mode 100644 index 0000000..0c2cef1 --- /dev/null +++ b/wwwroot/list_llms/index.dspy @@ -0,0 +1,3 @@ +lctype=params_kw.lctype +order_by=params_kw.orderby or 'providerid' +return await get_llms_by_catelog_to_customer(catelogid=lctype, orderby=orderby)