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 .file import file_uploaded, file_deleted
|
||||||
from .folderinfo import RagFileMgr
|
from .folderinfo import RagFileMgr
|
||||||
from .ragprogram import set_program, get_rag_programs
|
from .ragprogram import set_program, get_rag_programs
|
||||||
|
from ragllm_utils import get_ragllms
|
||||||
from appPublic.registerfunction import RegisterFunction
|
from appPublic.registerfunction import RegisterFunction
|
||||||
|
|
||||||
async def _make_connection_request(action: str, params: dict = None) -> dict:
|
async def _make_connection_request(action: str, params: dict = None) -> dict:
|
||||||
@ -155,4 +156,5 @@ def load_rag():
|
|||||||
env.RagFileMgr = RagFileMgr
|
env.RagFileMgr = RagFileMgr
|
||||||
env.set_program = set_program
|
env.set_program = set_program
|
||||||
env.get_rag_programs = get_rag_programs
|
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')}}",
|
"icon": "{{entire_url('/imgs/kdb.svg')}}",
|
||||||
"url": "{{entire_url('/rag/kdb')}}"
|
"url": "{{entire_url('/rag/kdb')}}"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name":"ragllm",
|
||||||
|
"label":"知识库加持大模型",
|
||||||
|
"icon": "{{entire_url('/imgs/ragllm.svg')}}",
|
||||||
|
"url": "{{entire_url('/rag/ragllm')}}"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name":"craw",
|
"name":"craw",
|
||||||
"label":"知识获取",
|
"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