Merge branch 'main' of https://git.opencomputing.cn/yumoqing/rag
This commit is contained in:
commit
28f2bb1526
13
json/ragllm.json
Normal file
13
json/ragllm.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"tblname": "ragllm",
|
||||
"title":"知识库限额",
|
||||
"params":{
|
||||
"logined_userorgid":"ownerid",
|
||||
"sortby":"name",
|
||||
"browserfields":{
|
||||
"exclouded":["id", "ownerid"],
|
||||
"alters":{}
|
||||
},
|
||||
"editexclouded":["id", "ownerid" ]
|
||||
}
|
||||
}
|
||||
@ -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
20
rag/ragllm_utils.py
Normal 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 []
|
||||
|
||||
@ -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
43
wwwroot/ragllm_dialog.ui
Normal 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 %}
|
||||
6
wwwroot/ragllminference.dspy
Normal file
6
wwwroot/ragllminference.dspy
Normal 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
97
wwwroot/show_ragllms.ui
Normal 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 %}
|
||||
]
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user