mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
perf: Model check
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import json
|
||||
from typing import List, Union
|
||||
from apps.ai_model.model_factory import LLMConfig, LLMFactory
|
||||
from apps.system.schemas.ai_model_schema import AiModelConfigItem, AiModelCreator, AiModelEditor, AiModelGridItem
|
||||
from fastapi import APIRouter, Query
|
||||
from sqlmodel import func, select, update
|
||||
@@ -7,9 +8,28 @@ from sqlmodel import func, select, update
|
||||
from apps.system.models.system_model import AiModelDetail
|
||||
from common.core.deps import SessionDep
|
||||
from common.utils.time import get_timestamp
|
||||
from common.utils.utils import SQLBotLogUtil
|
||||
|
||||
router = APIRouter(tags=["system/aimodel"], prefix="/system/aimodel")
|
||||
|
||||
@router.post("/status")
|
||||
async def check_llm(info: AiModelCreator):
|
||||
try:
|
||||
additional_params = {item.key: item.val for item in info.config_list}
|
||||
config = LLMConfig(
|
||||
model_type="openai",
|
||||
model_name=info.base_model,
|
||||
api_key=info.api_key,
|
||||
api_base_url=info.api_domain,
|
||||
additional_params=additional_params,
|
||||
)
|
||||
llm_instance = LLMFactory.create_llm(config)
|
||||
result = llm_instance.llm.invoke("who are you?")
|
||||
SQLBotLogUtil.info(f"check_llm result: {result}")
|
||||
except Exception as e:
|
||||
SQLBotLogUtil.error(f"Error checking LLM: {e}")
|
||||
raise e
|
||||
|
||||
@router.get("", response_model=list[AiModelGridItem])
|
||||
async def query(
|
||||
session: SessionDep,
|
||||
@@ -74,8 +94,8 @@ async def update_model(
|
||||
data["config"] = json.dumps([item.model_dump(exclude_unset=True) for item in editor.config_list])
|
||||
data.pop("config_list", None)
|
||||
db_model = session.get(AiModelDetail, id)
|
||||
update_data = AiModelDetail.model_validate(data)
|
||||
db_model.sqlmodel_update(update_data)
|
||||
#update_data = AiModelDetail.model_validate(data)
|
||||
db_model.sqlmodel_update(data)
|
||||
session.add(db_model)
|
||||
session.commit()
|
||||
|
||||
|
||||
@@ -8,4 +8,6 @@ export const modelApi = {
|
||||
delete: (id: number) => request.delete(`/system/aimodel/${id}`),
|
||||
query: (id: number) => request.get(`/system/aimodel/${id}`),
|
||||
setDefault: (id: number) => request.put(`/system/aimodel/default/${id}`),
|
||||
check: (data: any) =>
|
||||
request.post('/system/aimodel/status', data, { requestOptions: { silent: true } }),
|
||||
}
|
||||
|
||||
@@ -279,7 +279,8 @@
|
||||
"verification_successful": "校验成功",
|
||||
"del_default_tip": "无法删除模型: {msg}",
|
||||
"del_default_warn": "该模型为系统默认模型,请先设置其他模型为系统默认模型,再删除此模型。",
|
||||
"del_warn_tip": "是否删除模型: {msg}?"
|
||||
"del_warn_tip": "是否删除模型: {msg}?",
|
||||
"check_failed": "模型无效【{msg}】"
|
||||
},
|
||||
"user": {
|
||||
"workspace": "工作空间",
|
||||
|
||||
@@ -69,6 +69,17 @@ const defaultModelListWithSearch = computed(() => {
|
||||
})
|
||||
})
|
||||
|
||||
const modelCheckHandler = (item: any) => {
|
||||
setTimeout(() => {
|
||||
modelApi.check(item).catch((err: any) => {
|
||||
if (err.response?.data?.msg) {
|
||||
ElMessage.error(t('model.check_failed', { msg: err.response.data.msg || '' }))
|
||||
} else {
|
||||
ElMessage.error(t('model.check_failed', { msg: err.message || '' }))
|
||||
}
|
||||
})
|
||||
}, 1000)
|
||||
}
|
||||
const duplicateName = async (item: any) => {
|
||||
const res = await modelApi.queryAll()
|
||||
const names = res.filter((ele: any) => ele.id !== item.id).map((ele: any) => ele.name)
|
||||
@@ -85,6 +96,7 @@ const duplicateName = async (item: any) => {
|
||||
type: 'success',
|
||||
message: t('workspace.add_successfully'),
|
||||
})
|
||||
modelCheckHandler(item)
|
||||
})
|
||||
return
|
||||
}
|
||||
@@ -95,6 +107,7 @@ const duplicateName = async (item: any) => {
|
||||
type: 'success',
|
||||
message: t('common.save_success'),
|
||||
})
|
||||
modelCheckHandler(item)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user