This commit is contained in:
wangmeihua 2025-10-09 14:02:17 +08:00
commit 28f2bb1526
7 changed files with 187 additions and 0 deletions

13
json/ragllm.json Normal file
View File

@ -0,0 +1,13 @@
{
"tblname": "ragllm",
"title":"知识库限额",
"params":{
"logined_userorgid":"ownerid",
"sortby":"name",
"browserfields":{
"exclouded":["id", "ownerid"],
"alters":{}
},
"editexclouded":["id", "ownerid" ]
}
}

View File

@ -6,6 +6,7 @@ import json
from .file import file_uploaded, file_deleted
from .folderinfo import RagFileMgr
from .ragprogram import set_program, get_rag_programs
from ragllm_utils import get_ragllms
from appPublic.registerfunction import RegisterFunction
async def _make_connection_request(action: str, params: dict = None) -> dict:
@ -155,4 +156,5 @@ def load_rag():
env.RagFileMgr = RagFileMgr
env.set_program = set_program
env.get_rag_programs = get_rag_programs
env.get_ragllms = get_ragllms

20
rag/ragllm_utils.py Normal file
View File

@ -0,0 +1,20 @@
from sqlor.dbpools import DBPools
async def get_ragllms_by_catelog(request, **params):
catelogid = params.get('catelogid')
if not catelogid:
raise 'need applies catelogid'
env = request._run_ns
userid = await env.get_user()
userorgid = await env.get_userorgid()
dbname = env.get_module_dbname('rag')
db = DBPools()
async with db.sqlorContext(dbname) as sor:
sql = '''select * from ragllm
where catelogid = ${catelogid}$
and (userscope = 'unlimited' or ownerid = ${userorgid}$)'''
recs = await sor.sqlExe(sql, {'userorgid': userorgid})
return recs
return []

View File

@ -42,6 +42,12 @@
"icon": "{{entire_url('/imgs/kdb.svg')}}",
"url": "{{entire_url('/rag/kdb')}}"
},
{
"name":"ragllm",
"label":"知识库加持大模型",
"icon": "{{entire_url('/imgs/ragllm.svg')}}",
"url": "{{entire_url('/rag/ragllm')}}"
},
{
"name":"craw",
"label":"知识获取",

43
wwwroot/ragllm_dialog.ui Normal file
View File

@ -0,0 +1,43 @@
{% if get_user() %}
{% set llm = get_llm(params_kw.id) %}
{% if llm %}
{
"widgettype":"LlmIO",
"options":{
"width":"100%",
"height":"100%",
"title":"{{llm.name}}",
"list_models_url":"{{entire_url('list_paging_catelog_llms.dspy')}}",
"estimate_url":"{{entire_url('model_estimate.dspy')}}",
"input_fields":{{llm.input_fields}},
"models":[
{
"llmid":"{{llm.id}}",
"llmcatelogid":"{{llm.llmcatelogid}}",
"response_mode": "{{llm.stream}}",
"icon":"{{entire_url('/appbase/show_icon.dspy')}}?id={{llm.iconid}}",
"url":"{{entire_url('/llmage/llminference.dspy')}}",
"model":"{{llm.model}}",
"modelname":"{{llm.name}}"
}
]
}
}
{% else %}
{
"widgettype":"Text",
"options":{
"otext": "没找到模型",
"i18n":true
}
}
{% endif %}
{% else %}
{
"widgettype":"Text",
"options":{
"otext":"You need login to use llm",
"i18n":true
}
}
{% endif %}

View File

@ -0,0 +1,6 @@
debug(f'{params_kw=}')
userid = await get_user()
if userid is None:
return UiError(title='llm inference', message='Please login first')
env = DictObject(**globals())
return await inference(request, env=env)

97
wwwroot/show_ragllms.ui Normal file
View File

@ -0,0 +1,97 @@
{
"widgettype":"VScrollPanel",
"options":{
"width":"100%",
"height":"100%"
},
"subwidgets":[
{% for cate in get_llmcatelogs() %}
{
"widgettype": "VBox",
"options":{
"width":"100%"
},
"subwidgets":[
{
"widgettype":"Title3",
"options":{
"text":"{{cate.name}}"
}
},
{
"widgettype":"DynamicColumn",
"options":{
"css":"filler",
"width":"100%"
},
"subwidgets":[
{% for llm in get_ragllms_by_catelog(cate.id) %}
{
"widgettype":"VScrollPanel",
"options":{
"css":"card",
"bgcolor": "#def0f0",
"cwidth":20,
"cheight":12
},
"subwidgets":[
{
"widgettype":"HBox",
"options":{
"cheight":2
},
"subwidgets":[
{
"widgettype":"Svg",
"options":{
"rate":1.5,
"url":"{{entire_url('/appbase/show_icon.dspy')}}?id={{llm.iconid}}"
}
},
{
"widgettype":"Title6",
"options":{
"text":"{{llm.name}}"
}
}
]
},
{
"widgettype":"Text",
"options":{
"text":{{json.dumps(llm.description, ensure_ascii=False)}},
"wrap":true,
"halign":"left"
}
}
],
"binds":[
{
"wid":"self",
"event":"click",
"actiontype":"urlwidget",
"target":"PopupWindow",
"popup_options":{
"title":"{{llm.name}}",
"cwidth":24,
"height":"80%"
},
"options":{
"params":{
"id":"{{llm.id}}"
},
"url":"{{entire_url('./ragllm_dialog.ui')}}"
}
}
]
}
{% if not loop.last %}, {% endif %}
{% endfor %}
]
}
]
}
{% if not loop.last %}, {% endif %}
{% endfor %}
]
}