Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
lmp_server
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lmp
lmp_server
Commits
a18ae889
Commit
a18ae889
authored
Mar 21, 2024
by
pengxin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
d30228f6
d009c5f7
Changes
26
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
1222 additions
and
19 deletions
+1222
-19
KnowledgeConfig.java
...in/java/com/yice/webadmin/app/config/KnowledgeConfig.java
+10
-0
LlmModelConfig.java
...ain/java/com/yice/webadmin/app/config/LlmModelConfig.java
+33
-0
OtherConfig.java
...c/main/java/com/yice/webadmin/app/config/OtherConfig.java
+20
-0
DatasetDataController.java
...m/yice/webadmin/app/controller/DatasetDataController.java
+26
-0
KGManageController.java
.../com/yice/webadmin/app/controller/KGManageController.java
+150
-0
KnowledgeManageController.java
...ce/webadmin/app/controller/KnowledgeManageController.java
+46
-9
ModelDeployController.java
...m/yice/webadmin/app/controller/ModelDeployController.java
+236
-1
KGManageMapper.java
...c/main/java/com/yice/webadmin/app/dao/KGManageMapper.java
+33
-0
KGManageMapper.xml
.../java/com/yice/webadmin/app/dao/mapper/KGManageMapper.xml
+74
-0
KnowledgeManageMapper.xml
...om/yice/webadmin/app/dao/mapper/KnowledgeManageMapper.xml
+5
-2
ModelDeployMapper.xml
...va/com/yice/webadmin/app/dao/mapper/ModelDeployMapper.xml
+11
-2
DatasetDataDto.java
...c/main/java/com/yice/webadmin/app/dto/DatasetDataDto.java
+1
-1
DatasetDataSummaryDto.java
...java/com/yice/webadmin/app/dto/DatasetDataSummaryDto.java
+34
-0
KGManageDto.java
.../src/main/java/com/yice/webadmin/app/dto/KGManageDto.java
+70
-0
KnowledgeManageDto.java
...in/java/com/yice/webadmin/app/dto/KnowledgeManageDto.java
+6
-0
ModelDeployDto.java
...c/main/java/com/yice/webadmin/app/dto/ModelDeployDto.java
+24
-0
KGManage.java
...n/src/main/java/com/yice/webadmin/app/model/KGManage.java
+69
-0
KnowledgeManage.java
...ain/java/com/yice/webadmin/app/model/KnowledgeManage.java
+5
-0
ModelDeploy.java
...rc/main/java/com/yice/webadmin/app/model/ModelDeploy.java
+14
-0
KGManageService.java
...n/java/com/yice/webadmin/app/service/KGManageService.java
+68
-0
KGManageServiceImpl.java
...m/yice/webadmin/app/service/impl/KGManageServiceImpl.java
+140
-0
Neo4jUtil.java
...n/src/main/java/com/yice/webadmin/app/util/Neo4jUtil.java
+34
-0
KGManageVo.java
...in/src/main/java/com/yice/webadmin/app/vo/KGManageVo.java
+69
-0
KnowledgeManageVo.java
...main/java/com/yice/webadmin/app/vo/KnowledgeManageVo.java
+6
-0
ModelDeployVo.java
...src/main/java/com/yice/webadmin/app/vo/ModelDeployVo.java
+16
-1
application-dev.yml
application-webadmin/src/main/resources/application-dev.yml
+22
-3
No files found.
application-webadmin/src/main/java/com/yice/webadmin/app/config/KnowledgeConfig.java
View file @
a18ae889
...
...
@@ -38,6 +38,16 @@ public class KnowledgeConfig {
*/
private
String
searchDocs
;
/**
* 直接更新知识库文档
*/
private
String
updateDocsById
;
/**
* 直接删除知识库文档片段
*/
private
String
deleteDocsById
;
/**
* 上传文件到知识库,并/或进行向量化
*/
...
...
application-webadmin/src/main/java/com/yice/webadmin/app/config/LlmModelConfig.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Configuration
;
@Data
@Configuration
@ConfigurationProperties
(
prefix
=
"llm-model"
)
public
class
LlmModelConfig
{
/**
* 大模型管理接口地址
*/
private
String
llmModelInterface
;
/**
* 模型停止
*/
private
String
stop
;
/**
* 重新模型部署
*/
private
String
reload
;
/**
* 模型启动
*/
private
String
start
;
/**
* 列出当前已加载模型
*/
private
String
listRunningModels
;
}
application-webadmin/src/main/java/com/yice/webadmin/app/config/OtherConfig.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Configuration
;
@Data
@Configuration
@ConfigurationProperties
(
prefix
=
"other"
)
public
class
OtherConfig
{
/**
* 其他通用接口地址
*/
private
String
otherInterface
;
/**
* 获取GPU信息
*/
private
String
getGpuInfo
;
}
application-webadmin/src/main/java/com/yice/webadmin/app/controller/DatasetDataController.java
View file @
a18ae889
...
...
@@ -11,8 +11,10 @@ import com.yice.common.core.util.MyModelUtil;
import
com.yice.common.core.util.MyPageUtil
;
import
com.yice.common.log.annotation.OperationLog
;
import
com.yice.common.log.model.constant.SysOperationLogType
;
import
com.yice.webadmin.app.constant.DatasetConstant
;
import
com.yice.webadmin.app.data.DatasetData
;
import
com.yice.webadmin.app.dto.DatasetDataDto
;
import
com.yice.webadmin.app.dto.DatasetDataSummaryDto
;
import
com.yice.webadmin.app.service.DatasetDataService
;
import
io.swagger.annotations.Api
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -54,6 +56,30 @@ public class DatasetDataController {
return
ResponseResult
.
success
();
}
/**
* 统计总个数
* @param versionId 版本标识
* @return
*/
@GetMapping
(
"/summaryCount"
)
public
ResponseResult
<
DatasetDataSummaryDto
>
summaryCount
(
@RequestParam
Long
versionId
)
{
if
(
MyCommonUtil
.
existBlankArgument
(
versionId
))
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
ARGUMENT_NULL_ID_EXIST
);
}
DatasetDataSummaryDto
summaryDto
=
new
DatasetDataSummaryDto
();
DatasetData
datasetDataFilter
=
new
DatasetData
();
datasetDataFilter
.
setVersionId
(
versionId
);
Long
allMarkCount
=
datasetDataService
.
count
(
datasetDataFilter
);
summaryDto
.
setAllMarkCount
(
allMarkCount
);
datasetDataFilter
.
setMarkStatus
(
DatasetConstant
.
STATUS_UNPUBLISHED
);
Long
unMarkCount
=
datasetDataService
.
count
(
datasetDataFilter
);
summaryDto
.
setUnMarkCount
(
unMarkCount
);
summaryDto
.
setMarkCount
(
allMarkCount
-
unMarkCount
);
return
ResponseResult
.
success
(
summaryDto
);
}
/**
* 删除数据集版本数据。
*
...
...
application-webadmin/src/main/java/com/yice/webadmin/app/controller/KGManageController.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
controller
;
import
com.yice.common.log.annotation.OperationLog
;
import
com.yice.common.log.model.constant.SysOperationLogType
;
import
com.github.pagehelper.page.PageMethod
;
import
com.yice.webadmin.app.vo.*
;
import
com.yice.webadmin.app.dto.*
;
import
com.yice.webadmin.app.model.*
;
import
com.yice.webadmin.app.service.*
;
import
com.yice.common.core.object.*
;
import
com.yice.common.core.util.*
;
import
com.yice.common.core.constant.*
;
import
com.yice.common.core.annotation.MyRequestBody
;
import
com.github.xiaoymin.knife4j.annotations.ApiOperationSupport
;
import
io.swagger.annotations.Api
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.*
;
/**
* 知识图谱管理操作控制器类。
*
* @author linking
* @date 2023-04-13
*/
@Api
(
tags
=
"知识图谱管理管理接口"
)
@Slf4j
@RestController
@RequestMapping
(
"/admin/app/kGManage"
)
public
class
KGManageController
{
@Autowired
private
KGManageService
kGManageService
;
/**
* 新增知识图谱管理数据。
*
* @param kGManageDto 新增对象。
* @return 应答结果对象,包含新增对象主键Id。
*/
@ApiOperationSupport
(
ignoreParameters
=
{
"kGManageDto.kgId"
})
@OperationLog
(
type
=
SysOperationLogType
.
ADD
)
@PostMapping
(
"/add"
)
public
ResponseResult
<
Long
>
add
(
@MyRequestBody
KGManageDto
kGManageDto
)
{
String
errorMessage
=
MyCommonUtil
.
getModelValidationError
(
kGManageDto
,
false
);
if
(
errorMessage
!=
null
)
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_VALIDATED_FAILED
,
errorMessage
);
}
KGManage
kGManage
=
MyModelUtil
.
copyTo
(
kGManageDto
,
KGManage
.
class
);
kGManage
=
kGManageService
.
saveNew
(
kGManage
);
return
ResponseResult
.
success
(
kGManage
.
getKgId
());
}
/**
* 更新知识图谱管理数据。
*
* @param kGManageDto 更新对象。
* @return 应答结果对象。
*/
@OperationLog
(
type
=
SysOperationLogType
.
UPDATE
)
@PostMapping
(
"/update"
)
public
ResponseResult
<
Void
>
update
(
@MyRequestBody
KGManageDto
kGManageDto
)
{
String
errorMessage
=
MyCommonUtil
.
getModelValidationError
(
kGManageDto
,
true
);
if
(
errorMessage
!=
null
)
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_VALIDATED_FAILED
,
errorMessage
);
}
KGManage
kGManage
=
MyModelUtil
.
copyTo
(
kGManageDto
,
KGManage
.
class
);
KGManage
originalKGManage
=
kGManageService
.
getById
(
kGManage
.
getKgId
());
if
(
originalKGManage
==
null
)
{
// NOTE: 修改下面方括号中的话述
errorMessage
=
"数据验证失败,当前 [数据] 并不存在,请刷新后重试!"
;
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_NOT_EXIST
,
errorMessage
);
}
if
(!
kGManageService
.
update
(
kGManage
,
originalKGManage
))
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_NOT_EXIST
);
}
return
ResponseResult
.
success
();
}
/**
* 删除知识图谱管理数据。
*
* @param kgId 删除对象主键Id。
* @return 应答结果对象。
*/
@OperationLog
(
type
=
SysOperationLogType
.
DELETE
)
@PostMapping
(
"/delete"
)
public
ResponseResult
<
Void
>
delete
(
@MyRequestBody
Long
kgId
)
{
if
(
MyCommonUtil
.
existBlankArgument
(
kgId
))
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
ARGUMENT_NULL_EXIST
);
}
return
this
.
doDelete
(
kgId
);
}
/**
* 列出符合过滤条件的知识图谱管理列表。
*
* @param kGManageDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping
(
"/list"
)
public
ResponseResult
<
MyPageData
<
KGManageVo
>>
list
(
@MyRequestBody
KGManageDto
kGManageDtoFilter
,
@MyRequestBody
MyOrderParam
orderParam
,
@MyRequestBody
MyPageParam
pageParam
)
{
if
(
pageParam
!=
null
)
{
PageMethod
.
startPage
(
pageParam
.
getPageNum
(),
pageParam
.
getPageSize
());
}
KGManage
kGManageFilter
=
MyModelUtil
.
copyTo
(
kGManageDtoFilter
,
KGManage
.
class
);
String
orderBy
=
MyOrderParam
.
buildOrderBy
(
orderParam
,
KGManage
.
class
);
List
<
KGManage
>
kGManageList
=
kGManageService
.
getKGManageListWithRelation
(
kGManageFilter
,
orderBy
);
return
ResponseResult
.
success
(
MyPageUtil
.
makeResponseData
(
kGManageList
,
KGManage
.
INSTANCE
));
}
/**
* 查看指定知识图谱管理对象详情。
*
* @param kgId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping
(
"/view"
)
public
ResponseResult
<
KGManageVo
>
view
(
@RequestParam
Long
kgId
)
{
KGManage
kGManage
=
kGManageService
.
getByIdWithRelation
(
kgId
,
MyRelationParam
.
full
());
if
(
kGManage
==
null
)
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_NOT_EXIST
);
}
KGManageVo
kGManageVo
=
KGManage
.
INSTANCE
.
fromModel
(
kGManage
);
return
ResponseResult
.
success
(
kGManageVo
);
}
private
ResponseResult
<
Void
>
doDelete
(
Long
kgId
)
{
String
errorMessage
;
// 验证关联Id的数据合法性
KGManage
originalKGManage
=
kGManageService
.
getById
(
kgId
);
if
(
originalKGManage
==
null
)
{
// NOTE: 修改下面方括号中的话述
errorMessage
=
"数据验证失败,当前 [对象] 并不存在,请刷新后重试!"
;
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_NOT_EXIST
,
errorMessage
);
}
if
(!
kGManageService
.
remove
(
kgId
))
{
errorMessage
=
"数据操作失败,删除的对象不存在,请刷新后重试!"
;
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_NOT_EXIST
,
errorMessage
);
}
return
ResponseResult
.
success
();
}
}
application-webadmin/src/main/java/com/yice/webadmin/app/controller/KnowledgeManageController.java
View file @
a18ae889
...
...
@@ -68,16 +68,14 @@ public class KnowledgeManageController {
if
(
errorMessage
!=
null
)
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_VALIDATED_FAILED
,
errorMessage
);
}
KnowledgeManage
knowledgeManage
=
MyModelUtil
.
copyTo
(
knowledgeManageDto
,
KnowledgeManage
.
class
);
knowledgeManage
.
setKnowledgeCode
(
PinyinUtil
.
getPinyin
(
knowledgeManage
.
getKnowledgeName
()).
replace
(
" "
,
"_"
));
String
requestBody
=
"{\n"
+
" \"knowledge_base_name\": \""
+
knowledgeManage
.
getKnowledgeCode
()
+
"\",\n"
+
" \"vector_store_type\": \"faiss\",\n"
+
" \"embed_model\": \"m3e-base\"\n"
+
"}"
;
String
requestBody
=
"{\n"
+
" \"knowledge_base_name\": \""
+
knowledgeManageDto
.
getKnowledgeName
()
+
"\",\n"
+
" \"vector_store_type\": \"faiss\",\n"
+
" \"embed_model\": \"m3e-base\"\n"
+
"}"
;
try
{
String
result
=
proxyPythonService
.
predictPost
(
knowledgeConfig
.
getKnowledgeInterface
()
+
knowledgeConfig
.
getCreate
(),
requestBody
);
JSONObject
jo
=
JSON
.
parseObject
(
result
);
Integer
code
=
jo
.
getIntValue
(
"code"
);
String
msg
=
jo
.
getString
(
"msg"
);
String
data
=
jo
.
getString
(
"data"
);
if
(
code
!=
null
&&
code
==
200
)
{
KnowledgeManage
knowledgeManage
=
MyModelUtil
.
copyTo
(
knowledgeManageDto
,
KnowledgeManage
.
class
);
KnowledgeManage
reKnowledgeManage
=
knowledgeManageService
.
saveNew
(
knowledgeManage
);
return
ResponseResult
.
success
(
reKnowledgeManage
);
}
else
{
...
...
@@ -228,7 +226,6 @@ public class KnowledgeManageController {
}
return
ResponseResult
.
success
(
originalKnowledgeManage
);
}
/**
* 删除知识库管理数据。
*
...
...
@@ -279,6 +276,46 @@ public class KnowledgeManageController {
return
ResponseResult
.
success
(
data
);
}
/**
* 直接更新知识库文档。
*
* @param requestBody 请求对象。
* @return 应答结果对象。
*/
@PostMapping
(
"/updateDocsById"
)
public
ResponseResult
<
String
>
updateDocsById
(
@RequestBody
String
requestBody
)
{
if
(
MyCommonUtil
.
existBlankArgument
(
requestBody
))
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
ARGUMENT_NULL_EXIST
);
}
String
data
=
null
;
try
{
data
=
this
.
proxyPythonService
.
predictPost
(
this
.
knowledgeConfig
.
getKnowledgeInterface
()
+
knowledgeConfig
.
getUpdateDocsById
(),
requestBody
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
return
ResponseResult
.
success
(
data
);
}
/**
* 直接删除知识库文档片段。
*
* @param requestBody 请求对象。
* @return 应答结果对象。
*/
@PostMapping
(
"/deleteDocsById"
)
public
ResponseResult
<
String
>
deleteDocsById
(
@RequestBody
String
requestBody
)
{
if
(
MyCommonUtil
.
existBlankArgument
(
requestBody
))
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
ARGUMENT_NULL_EXIST
);
}
String
data
=
null
;
try
{
data
=
this
.
proxyPythonService
.
predictPost
(
this
.
knowledgeConfig
.
getKnowledgeInterface
()
+
knowledgeConfig
.
getDeleteDocsById
(),
requestBody
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
return
ResponseResult
.
success
(
data
);
}
/**
* 删除知识库指定文件。
*
...
...
@@ -354,7 +391,7 @@ public class KnowledgeManageController {
String
msg
=
jo
.
getString
(
"msg"
);
String
data
=
jo
.
getString
(
"data"
);
if
(
code
!=
null
&&
code
==
200
)
{
return
ResponseResult
.
create
(
ErrorCodeEnum
.
NO_ERROR
,
msg
,
data
);
return
ResponseResult
.
success
(
data
);
}
else
{
return
ResponseResult
.
create
(
ErrorCodeEnum
.
SERVER_INTERNAL_ERROR
,
msg
,
data
);
}
...
...
@@ -425,7 +462,7 @@ public class KnowledgeManageController {
if
(
code
!=
null
&&
code
==
200
)
{
for
(
KnowledgeManage
knowledgeManage
:
knowledgeManageList
)
{
for
(
Object
jsonObject
:
jsonArray
)
{
if
(
knowledgeManage
.
getKnowledge
Cod
e
().
equals
(
String
.
valueOf
(
jsonObject
)))
{
if
(
knowledgeManage
.
getKnowledge
Nam
e
().
equals
(
String
.
valueOf
(
jsonObject
)))
{
reKnowledgeManageList
.
add
(
knowledgeManage
);
}
}
...
...
@@ -456,7 +493,7 @@ public class KnowledgeManageController {
if
(
code
!=
null
&&
code
==
200
)
{
for
(
KnowledgeManage
knowledgeManage
:
knowledgeManageList
)
{
for
(
Object
jsonObject
:
jsonArray
)
{
if
(
knowledgeManage
.
getKnowledge
Cod
e
().
equals
(
String
.
valueOf
(
jsonObject
)))
{
if
(
knowledgeManage
.
getKnowledge
Nam
e
().
equals
(
String
.
valueOf
(
jsonObject
)))
{
reKnowledgeManageList
.
add
(
knowledgeManage
);
}
}
...
...
@@ -529,6 +566,6 @@ public class KnowledgeManageController {
errorMessage
=
"数据操作失败,删除的对象不存在,请刷新后重试!"
;
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_NOT_EXIST
,
errorMessage
);
}
return
this
.
doDeleteByName
(
originalKnowledgeManage
.
getKnowledge
Cod
e
());
return
this
.
doDeleteByName
(
originalKnowledgeManage
.
getKnowledge
Nam
e
());
}
}
application-webadmin/src/main/java/com/yice/webadmin/app/controller/ModelDeployController.java
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.pagehelper.page.PageMethod
;
import
com.github.xiaoymin.knife4j.annotations.ApiOperationSupport
;
import
com.yice.common.core.annotation.MyRequestBody
;
...
...
@@ -10,16 +12,28 @@ import com.yice.common.core.util.MyModelUtil;
import
com.yice.common.core.util.MyPageUtil
;
import
com.yice.common.log.annotation.OperationLog
;
import
com.yice.common.log.model.constant.SysOperationLogType
;
import
com.yice.webadmin.app.config.LlmModelConfig
;
import
com.yice.webadmin.app.config.OtherConfig
;
import
com.yice.webadmin.app.config.PythonConfig
;
import
com.yice.webadmin.app.dto.ModelDeployDto
;
import
com.yice.webadmin.app.model.ModelDeploy
;
import
com.yice.webadmin.app.model.ModelManage
;
import
com.yice.webadmin.app.model.ModelVersion
;
import
com.yice.webadmin.app.service.ModelDeployService
;
import
com.yice.webadmin.app.service.ModelManageService
;
import
com.yice.webadmin.app.service.ModelVersionService
;
import
com.yice.webadmin.app.service.ProxyPythonService
;
import
com.yice.webadmin.app.vo.ModelDeployVo
;
import
io.swagger.annotations.Api
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.jws.WebParam
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 模型部署操作控制器类。
...
...
@@ -35,6 +49,18 @@ public class ModelDeployController {
@Autowired
private
ModelDeployService
modelDeployService
;
@Autowired
private
ProxyPythonService
proxyPythonService
;
@Autowired
private
OtherConfig
otherConfig
;
@Autowired
private
LlmModelConfig
llmModelConfig
;
@Autowired
private
PythonConfig
pythonConfig
;
@Autowired
private
ModelVersionService
modelVersionService
;
@Autowired
private
ModelManageService
modelManageService
;
/**
* 新增模型部署数据。
...
...
@@ -56,10 +82,74 @@ public class ModelDeployController {
if
(!
callResult
.
isSuccess
())
{
return
ResponseResult
.
errorFrom
(
callResult
);
}
modelDeploy
=
modelDeployService
.
saveNew
(
modelDeploy
);
List
<
ModelDeploy
>
modelDeployList
=
this
.
modelDeployService
.
getModelDeployList
(
modelDeploy
,
""
);
for
(
ModelDeploy
modelDeploy1
:
modelDeployList
)
{
if
(
modelDeploy1
.
getVersionId
()
==
modelDeploy
.
getVersionId
())
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DUPLICATED_UNIQUE_KEY
,
"同一个模型只能部署一次!"
);
}
}
ModelVersion
modelVersion
=
this
.
modelVersionService
.
getById
(
modelDeploy
.
getVersionId
());
ModelManage
modelManage
=
modelManageService
.
getById
(
modelVersion
.
getModelId
());
modelDeploy
.
setDeployStatus
(
3
);
modelDeploy
.
setModelId
(
modelVersion
.
getModelId
());
modelDeploy
.
setVersionName
(
modelVersion
.
getVersionName
());
modelDeploy
.
setModelVersion
(
modelVersion
.
getModelVersion
());
modelDeploy
.
setModelName
(
modelManage
.
getModelName
());
modelDeployService
.
saveNew
(
modelDeploy
);
return
ResponseResult
.
success
(
modelDeploy
.
getDeployId
());
}
/**
* 部署指定LLM模型。
*
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping
(
"/deploy"
)
public
ResponseResult
<
String
>
deploy
(
@MyRequestBody
ModelDeployDto
modelDeployDto
,
@MyRequestBody
String
type
)
{
ModelDeploy
modelDeploy
=
modelDeployService
.
getById
(
modelDeployDto
.
getDeployId
());
modelDeploy
.
setDeployStatus
(
0
);
modelDeployService
.
updateById
(
modelDeploy
);
ResponseResult
<
String
>
responseResult
=
this
.
doReloadOrStart
(
modelDeploy
,
type
);
if
(
responseResult
.
isSuccess
())
{
modelDeploy
.
setDeployStatus
(
1
);
modelDeployService
.
updateById
(
modelDeploy
);
return
ResponseResult
.
success
(
responseResult
.
getData
());
}
modelDeploy
.
setDeployStatus
(-
1
);
modelDeployService
.
updateById
(
modelDeploy
);
return
responseResult
;
}
private
ResponseResult
<
String
>
doReloadOrStart
(
ModelDeploy
modelDeploy
,
String
type
)
{
String
gps_ids
=
JSON
.
parseArray
(
modelDeploy
.
getResourceInfo
()).
stream
()
.
map
(
obj
->
((
JSONObject
)
obj
).
getString
(
"gpu_id"
))
.
collect
(
Collectors
.
joining
(
","
));
ModelVersion
modelVersion
=
this
.
modelVersionService
.
getById
(
modelDeploy
.
getVersionId
());
String
requestBody
=
"{\n"
+
" \"new_model_name\": \""
+
modelDeploy
.
getVersionName
()
+
"\",\n"
+
" \"new_model_path\": \""
+
modelVersion
.
getModelUrl
()
+
"\",\n"
+
" \"startup_param\": {\n"
+
" \"gpu_ids\": \""
+
gps_ids
+
"\"\n"
+
" },\n"
+
" \"controller_address\": \""
+
pythonConfig
.
getControllerAddress
()
+
"\"\n"
+
"}"
;
try
{
String
apiName
=
type
.
equals
(
"start"
)
?
llmModelConfig
.
getStart
()
:
llmModelConfig
.
getReload
();
String
result
=
proxyPythonService
.
predictPost
(
llmModelConfig
.
getLlmModelInterface
()
+
apiName
,
requestBody
);
JSONObject
jo
=
JSON
.
parseObject
(
result
);
Integer
code
=
jo
.
getIntValue
(
"code"
);
String
msg
=
jo
.
getString
(
"msg"
);
String
data
=
jo
.
getString
(
"data"
);
if
(
code
!=
null
&&
code
==
200
)
{
return
ResponseResult
.
success
(
data
);
}
else
{
return
ResponseResult
.
create
(
ErrorCodeEnum
.
SERVER_INTERNAL_ERROR
,
msg
,
data
);
}
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
/**
* 更新模型部署数据。
*
...
...
@@ -106,6 +196,35 @@ public class ModelDeployController {
return
this
.
doDelete
(
deployId
);
}
/**
* 列出所有可用模型部署列表。
*
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping
(
"/canUseList"
)
public
ResponseResult
<
MyPageData
<
ModelDeployVo
>>
canUseList
()
{
ModelDeploy
modelDeployFilter
=
new
ModelDeploy
();
modelDeployFilter
.
setDeployStatus
(
1
);
List
<
ModelDeploy
>
modelDeployList
=
modelDeployService
.
getModelDeployListWithRelation
(
modelDeployFilter
,
"deploy_id"
);
ResponseResult
<
String
>
responseResult
=
this
.
listRunningModels
();
String
data
=
responseResult
.
getData
();
String
[]
modelNames
=
stringToArray
(
data
);
List
<
ModelDeploy
>
modelDeploys
=
new
ArrayList
<
ModelDeploy
>();
for
(
ModelDeploy
modelDeploy
:
modelDeployList
)
{
boolean
isEx
=
false
;
for
(
int
i
=
0
;
i
<
modelNames
.
length
;
i
++)
{
if
(
modelDeploy
.
getVersionName
().
equals
(
modelNames
[
i
]))
{
isEx
=
true
;
}
}
if
(
isEx
)
{
modelDeploy
.
setDeployStatus
(
1
);
modelDeploys
.
add
(
modelDeploy
);
}
}
return
ResponseResult
.
success
(
MyPageUtil
.
makeResponseData
(
modelDeploys
,
ModelDeploy
.
INSTANCE
));
}
/**
* 列出符合过滤条件的模型部署列表。
*
...
...
@@ -126,9 +245,124 @@ public class ModelDeployController {
String
orderBy
=
MyOrderParam
.
buildOrderBy
(
orderParam
,
ModelDeploy
.
class
);
List
<
ModelDeploy
>
modelDeployList
=
modelDeployService
.
getModelDeployListWithRelation
(
modelDeployFilter
,
orderBy
);
ResponseResult
<
String
>
responseResult
=
this
.
listRunningModels
();
if
(!
responseResult
.
isSuccess
())
{
modelDeployList
.
forEach
(
modelDeploy
->
{
modelDeploy
.
setDeployStatus
(
2
);
});
return
ResponseResult
.
success
(
MyPageUtil
.
makeResponseData
(
modelDeployList
,
ModelDeploy
.
INSTANCE
));
}
String
data
=
responseResult
.
getData
();
System
.
out
.
println
(
data
);
String
[]
modelNames
=
stringToArray
(
data
);
for
(
ModelDeploy
modelDeploy
:
modelDeployList
)
{
boolean
isEx
=
false
;
for
(
int
i
=
0
;
i
<
modelNames
.
length
;
i
++)
{
if
(
modelDeploy
.
getVersionName
().
equals
(
modelNames
[
i
]))
{
isEx
=
true
;
}
}
if
(!
isEx
)
{
if
(
modelDeploy
.
getDeployStatus
()
!=
3
)
modelDeploy
.
setDeployStatus
(
2
);
}
else
{
modelDeploy
.
setDeployStatus
(
1
);
}
}
return
ResponseResult
.
success
(
MyPageUtil
.
makeResponseData
(
modelDeployList
,
ModelDeploy
.
INSTANCE
));
}
private
String
[]
stringToArray
(
String
strArray
)
{
strArray
=
strArray
.
replaceAll
(
"\\[|\\]|\""
,
""
);
return
strArray
.
split
(
",\\s*"
);
// 正则表达式也考虑了逗号后的空格
}
private
ResponseResult
<
String
>
listRunningModels
()
{
String
requestBody
=
"{\n"
+
" \"controller_address\": \""
+
pythonConfig
.
getControllerAddress
()
+
"\",\n"
+
" \"placeholder\": \"string\"\n"
+
"}"
;
try
{
String
result
=
proxyPythonService
.
predictPost
(
llmModelConfig
.
getLlmModelInterface
()
+
llmModelConfig
.
getListRunningModels
(),
requestBody
);
JSONObject
jo
=
JSON
.
parseObject
(
result
);
Integer
code
=
jo
.
getIntValue
(
"code"
);
String
msg
=
jo
.
getString
(
"msg"
);
String
data
=
jo
.
getString
(
"data"
);
if
(
code
!=
null
&&
code
==
200
)
{
return
ResponseResult
.
success
(
data
);
}
else
{
return
ResponseResult
.
create
(
ErrorCodeEnum
.
SERVER_INTERNAL_ERROR
,
msg
,
data
);
}
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
/**
* 获取GPU信息。
*
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping
(
"/getGpuInfo"
)
public
ResponseResult
<
String
>
getGpuInfo
()
{
try
{
String
result
=
proxyPythonService
.
predictPost
(
otherConfig
.
getOtherInterface
()
+
otherConfig
.
getGetGpuInfo
(),
""
);
JSONObject
jo
=
JSON
.
parseObject
(
result
);
Integer
code
=
jo
.
getIntValue
(
"code"
);
String
msg
=
jo
.
getString
(
"msg"
);
String
data
=
jo
.
getString
(
"data"
);
if
(
code
!=
null
&&
code
==
200
)
{
return
ResponseResult
.
success
(
data
);
}
else
{
return
ResponseResult
.
create
(
ErrorCodeEnum
.
SERVER_INTERNAL_ERROR
,
msg
,
data
);
}
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
/**
* 停止指定LLM模型。
*
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping
(
"/stop"
)
public
ResponseResult
<
String
>
stop
(
@MyRequestBody
ModelDeployDto
modelDeployDto
)
{
ModelDeploy
modelDeploy
=
modelDeployService
.
getById
(
modelDeployDto
.
getDeployId
());
ResponseResult
<
String
>
responseResult
=
this
.
doStop
(
modelDeploy
);
if
(
responseResult
.
isSuccess
())
{
modelDeploy
.
setDeployStatus
(
3
);
modelDeployService
.
updateById
(
modelDeploy
);
return
ResponseResult
.
success
(
responseResult
.
getData
());
}
return
responseResult
;
}
private
ResponseResult
<
String
>
doStop
(
ModelDeploy
modelDeploy
)
{
String
errorMessage
=
MyCommonUtil
.
getModelValidationError
(
modelDeploy
,
true
);
if
(
errorMessage
!=
null
)
{
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_VALIDATED_FAILED
,
errorMessage
);
}
String
requestBody
=
"{\n"
+
" \"model_name\": \""
+
modelDeploy
.
getVersionName
()
+
"\",\n"
+
" \"controller_address\": \""
+
pythonConfig
.
getControllerAddress
()
+
"\"\n"
+
"}"
;
try
{
String
result
=
proxyPythonService
.
predictPost
(
llmModelConfig
.
getLlmModelInterface
()
+
llmModelConfig
.
getStop
(),
requestBody
);
JSONObject
jo
=
JSON
.
parseObject
(
result
);
Integer
code
=
jo
.
getIntValue
(
"code"
);
String
msg
=
jo
.
getString
(
"msg"
);
String
data
=
jo
.
getString
(
"data"
);
if
(
code
!=
null
&&
code
==
200
)
{
return
ResponseResult
.
success
(
data
);
}
else
{
return
ResponseResult
.
create
(
ErrorCodeEnum
.
SERVER_INTERNAL_ERROR
,
msg
,
data
);
}
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
/**
* 查看指定模型部署对象详情。
*
...
...
@@ -158,6 +392,7 @@ public class ModelDeployController {
errorMessage
=
"数据操作失败,删除的对象不存在,请刷新后重试!"
;
return
ResponseResult
.
error
(
ErrorCodeEnum
.
DATA_NOT_EXIST
,
errorMessage
);
}
this
.
doStop
(
originalModelDeploy
);
return
ResponseResult
.
success
();
}
}
application-webadmin/src/main/java/com/yice/webadmin/app/dao/KGManageMapper.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
dao
;
import
com.yice.common.core.base.dao.BaseDaoMapper
;
import
com.yice.webadmin.app.model.KGManage
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.*
;
/**
* 知识图谱管理数据操作访问接口。
*
* @author linking
* @date 2023-04-13
*/
public
interface
KGManageMapper
extends
BaseDaoMapper
<
KGManage
>
{
/**
* 批量插入对象列表。
*
* @param kGManageList 新增对象列表。
*/
void
insertList
(
List
<
KGManage
>
kGManageList
);
/**
* 获取过滤后的对象列表。
*
* @param kGManageFilter 主表过滤对象。
* @param orderBy 排序字符串,order by从句的参数。
* @return 对象列表。
*/
List
<
KGManage
>
getKGManageList
(
@Param
(
"kGManageFilter"
)
KGManage
kGManageFilter
,
@Param
(
"orderBy"
)
String
orderBy
);
}
application-webadmin/src/main/java/com/yice/webadmin/app/dao/mapper/KGManageMapper.xml
0 → 100644
View file @
a18ae889
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yice.webadmin.app.dao.KGManageMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.yice.webadmin.app.model.KGManage"
>
<id
column=
"kg_id"
jdbcType=
"BIGINT"
property=
"kgId"
/>
<result
column=
"create_user_id"
jdbcType=
"BIGINT"
property=
"createUserId"
/>
<result
column=
"create_time"
jdbcType=
"TIMESTAMP"
property=
"createTime"
/>
<result
column=
"update_user_id"
jdbcType=
"BIGINT"
property=
"updateUserId"
/>
<result
column=
"update_time"
jdbcType=
"TIMESTAMP"
property=
"updateTime"
/>
<result
column=
"kg_name"
jdbcType=
"VARCHAR"
property=
"kgName"
/>
<result
column=
"kg_describe"
jdbcType=
"VARCHAR"
property=
"kgDescribe"
/>
<result
column=
"kg_url"
jdbcType=
"VARCHAR"
property=
"kgUrl"
/>
<result
column=
"kg_user_name"
jdbcType=
"VARCHAR"
property=
"kgUserName"
/>
<result
column=
"kg_password"
jdbcType=
"VARCHAR"
property=
"kgPassword"
/>
<result
column=
"kg_bower_url"
jdbcType=
"VARCHAR"
property=
"kgBowerUrl"
/>
<result
column=
"kg_type"
jdbcType=
"VARCHAR"
property=
"kgType"
/>
</resultMap>
<insert
id=
"insertList"
>
INSERT INTO lmp_kg_manage
(kg_id,
create_user_id,
create_time,
update_user_id,
update_time,
kg_name,
kg_describe,
kg_url,
kg_user_name,
kg_password,
kg_bower_url,
kg_type)
VALUES
<foreach
collection=
"list"
index=
"index"
item=
"item"
separator=
","
>
(#{item.kgId},
#{item.createUserId},
#{item.createTime},
#{item.updateUserId},
#{item.updateTime},
#{item.kgName},
#{item.kgDescribe},
#{item.kgUrl},
#{item.kgUserName},
#{item.kgPassword},
#{item.kgBowerUrl},
#{item.kgType})
</foreach>
</insert>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql
id=
"filterRef"
>
<!-- 这里必须加上全包名,否则当filterRef被其他Mapper.xml包含引用的时候,就会调用Mapper.xml中的该SQL片段 -->
<include
refid=
"com.yice.webadmin.app.dao.KGManageMapper.inputFilterRef"
/>
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql
id=
"inputFilterRef"
>
<if
test=
"kGManageFilter != null"
>
<if
test=
"kGManageFilter.kgName != null and kGManageFilter.kgName != ''"
>
AND lmp_kg_manage.kg_name = #{kGManageFilter.kgName}
</if>
</if>
</sql>
<select
id=
"getKGManageList"
resultMap=
"BaseResultMap"
parameterType=
"com.yice.webadmin.app.model.KGManage"
>
SELECT * FROM lmp_kg_manage
<where>
<include
refid=
"filterRef"
/>
</where>
<if
test=
"orderBy != null and orderBy != ''"
>
ORDER BY ${orderBy}
</if>
</select>
</mapper>
application-webadmin/src/main/java/com/yice/webadmin/app/dao/mapper/KnowledgeManageMapper.xml
View file @
a18ae889
...
...
@@ -10,6 +10,7 @@
<result
column=
"knowledge_name"
jdbcType=
"VARCHAR"
property=
"knowledgeName"
/>
<result
column=
"knowledge_code"
jdbcType=
"VARCHAR"
property=
"knowledgeCode"
/>
<result
column=
"knowledge_describe"
jdbcType=
"VARCHAR"
property=
"knowledgeDescribe"
/>
<result
column=
"knowledge_format"
jdbcType=
"VARCHAR"
property=
"knowledgeFormat"
/>
</resultMap>
<insert
id=
"insertList"
>
...
...
@@ -21,7 +22,8 @@
update_time,
knowledge_name,
knowledge_code,
knowledge_describe)
knowledge_describe,
knowledge_format)
VALUES
<foreach
collection=
"list"
index=
"index"
item=
"item"
separator=
","
>
(#{item.knowledgeId},
...
...
@@ -31,7 +33,8 @@
#{item.updateTime},
#{item.knowledgeName},
#{item.knowledgeCode},
#{item.knowledgeDescribe})
#{item.knowledgeDescribe},
#{item.knowledgeFormat})
</foreach>
</insert>
...
...
application-webadmin/src/main/java/com/yice/webadmin/app/dao/mapper/ModelDeployMapper.xml
View file @
a18ae889
...
...
@@ -4,6 +4,7 @@
<resultMap
id=
"BaseResultMap"
type=
"com.yice.webadmin.app.model.ModelDeploy"
>
<id
column=
"deploy_id"
jdbcType=
"BIGINT"
property=
"deployId"
/>
<result
column=
"model_id"
jdbcType=
"BIGINT"
property=
"modelId"
/>
<result
column=
"model_name"
jdbcType=
"VARCHAR"
property=
"modelName"
/>
<result
column=
"version_id"
jdbcType=
"BIGINT"
property=
"versionId"
/>
<result
column=
"version_name"
jdbcType=
"VARCHAR"
property=
"versionName"
/>
<result
column=
"deploy_status"
jdbcType=
"TINYINT"
property=
"deployStatus"
/>
...
...
@@ -15,12 +16,15 @@
<result
column=
"service_id"
jdbcType=
"BIGINT"
property=
"serviceId"
/>
<result
column=
"service_name"
jdbcType=
"VARCHAR"
property=
"serviceName"
/>
<result
column=
"service_version"
jdbcType=
"TINYINT"
property=
"serviceVersion"
/>
<result
column=
"resource_info"
jdbcType=
"VARCHAR"
property=
"resourceInfo"
/>
<result
column=
"service_remark"
jdbcType=
"VARCHAR"
property=
"serviceRemark"
/>
</resultMap>
<insert
id=
"insertList"
>
INSERT INTO lmp_model_deploy
(deploy_id,
model_id,
model_name,
version_id,
version_name,
deploy_status,
...
...
@@ -31,11 +35,14 @@
model_version,
service_id,
service_name,
service_version)
service_version,
resource_info,
service_remark)
VALUES
<foreach
collection=
"list"
index=
"index"
item=
"item"
separator=
","
>
(#{item.deployId},
#{item.modelId},
#{item.modelName},
#{item.versionId},
#{item.versionName},
#{item.deployStatus},
...
...
@@ -46,7 +53,9 @@
#{item.modelVersion},
#{item.serviceId},
#{item.serviceName},
#{item.serviceVersion})
#{item.serviceVersion},
#{item.resourceInfo},
#{item.serviceRemark})
</foreach>
</insert>
...
...
application-webadmin/src/main/java/com/yice/webadmin/app/dto/DatasetDataDto.java
View file @
a18ae889
...
...
@@ -12,7 +12,7 @@ import java.util.Date;
* @author linking
* @date 2023-04-13
*/
@ApiModel
(
"Dataset
Mongo
Dto视图对象"
)
@ApiModel
(
"Dataset
Data
Dto视图对象"
)
@Data
public
class
DatasetDataDto
{
...
...
application-webadmin/src/main/java/com/yice/webadmin/app/dto/DatasetDataSummaryDto.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* DatasetDataSummaryDto视图对象。
*
* @author linking
* @date 2023-04-13
*/
@ApiModel
(
"DatasetDataSummaryDto视图对象"
)
@Data
public
class
DatasetDataSummaryDto
{
/**
* 全部标记数
*/
@ApiModelProperty
(
value
=
"全部标记数"
)
private
Long
allMarkCount
;
/**
* 未标记数
*/
@ApiModelProperty
(
value
=
"未标记数"
)
private
Long
unMarkCount
;
/**
* 已标记数
*/
@ApiModelProperty
(
value
=
"已标记数"
)
private
Long
markCount
;
}
application-webadmin/src/main/java/com/yice/webadmin/app/dto/KGManageDto.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
dto
;
import
com.yice.common.core.validator.UpdateGroup
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.*
;
/**
* KGManageDto对象。
*
* @author linking
* @date 2023-04-13
*/
@ApiModel
(
"KGManageDto对象"
)
@Data
public
class
KGManageDto
{
/**
* 知识图谱ID。
*/
@ApiModelProperty
(
value
=
"知识图谱ID"
,
required
=
true
)
@NotNull
(
message
=
"数据验证失败,知识图谱ID不能为空!"
,
groups
=
{
UpdateGroup
.
class
})
private
Long
kgId
;
/**
* 知识图谱名称。
*/
@ApiModelProperty
(
value
=
"知识图谱名称"
)
@NotNull
(
message
=
"数据验证失败,知识图谱名称不能为空!"
,
groups
=
{
UpdateGroup
.
class
})
private
String
kgName
;
/**
* 知识图谱描述。
*/
@ApiModelProperty
(
value
=
"知识图谱描述"
)
private
String
kgDescribe
;
/**
* 知识图谱地址。
*/
@ApiModelProperty
(
value
=
"知识图谱地址"
)
private
String
kgUrl
;
/**
* 知识图谱用户名。
*/
@ApiModelProperty
(
value
=
"知识图谱用户名"
)
private
String
kgUserName
;
/**
* 知识图谱密码。
*/
@ApiModelProperty
(
value
=
"知识图谱密码"
)
private
String
kgPassword
;
/**
* 知识图谱浏览地址。
*/
@ApiModelProperty
(
value
=
"知识图谱浏览地址"
)
private
String
kgBowerUrl
;
/**
* 知识图谱类型。
*/
@ApiModelProperty
(
value
=
"知识图谱类型"
)
private
String
kgType
;
}
application-webadmin/src/main/java/com/yice/webadmin/app/dto/KnowledgeManageDto.java
View file @
a18ae889
...
...
@@ -49,4 +49,10 @@ public class KnowledgeManageDto {
*/
@ApiModelProperty
(
value
=
"LIKE模糊搜索字符串"
)
private
String
searchString
;
/**
* 知识格式。
*/
@ApiModelProperty
(
value
=
"知识格式"
)
private
String
knowledgeFormat
;
}
application-webadmin/src/main/java/com/yice/webadmin/app/dto/ModelDeployDto.java
View file @
a18ae889
...
...
@@ -30,6 +30,12 @@ public class ModelDeployDto {
@ApiModelProperty
(
value
=
"模型ID"
)
private
Long
modelId
;
/**
* 模型名称。
*/
@ApiModelProperty
(
value
=
"模型名称"
)
private
String
modelName
;
/**
* 版本ID。
*/
...
...
@@ -71,4 +77,22 @@ public class ModelDeployDto {
*/
@ApiModelProperty
(
value
=
"服务版本"
)
private
Integer
serviceVersion
;
/**
* 资源信息。
*/
@ApiModelProperty
(
value
=
"资源信息"
)
private
String
resourceInfo
;
/**
* 服务描述。
*/
@ApiModelProperty
(
value
=
"服务描述"
)
private
String
serviceRemark
;
/**
* 资源id。
*/
@ApiModelProperty
(
value
=
"资源id"
)
private
String
gpuIds
;
}
application-webadmin/src/main/java/com/yice/webadmin/app/model/KGManage.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
model
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.yice.common.core.base.model.BaseModel
;
import
com.yice.common.core.base.mapper.BaseModelMapper
;
import
com.yice.webadmin.app.vo.KGManageVo
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
org.mapstruct.*
;
import
org.mapstruct.factory.Mappers
;
/**
* KGManage实体对象。
*
* @author linking
* @date 2023-04-13
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
value
=
"lmp_kg_manage"
)
public
class
KGManage
extends
BaseModel
{
/**
* 知识图谱ID。
*/
@TableId
(
value
=
"kg_id"
)
private
Long
kgId
;
/**
* 知识图谱名称。
*/
private
String
kgName
;
/**
* 知识图谱描述。
*/
private
String
kgDescribe
;
/**
* 知识图谱地址。
*/
private
String
kgUrl
;
/**
* 知识图谱用户名。
*/
private
String
kgUserName
;
/**
* 知识图谱密码。
*/
private
String
kgPassword
;
/**
* 知识图谱浏览地址。
*/
private
String
kgBowerUrl
;
/**
* 知识图谱类型。
*/
private
String
kgType
;
@Mapper
public
interface
KGManageModelMapper
extends
BaseModelMapper
<
KGManageVo
,
KGManage
>
{
}
public
static
final
KGManageModelMapper
INSTANCE
=
Mappers
.
getMapper
(
KGManageModelMapper
.
class
);
}
application-webadmin/src/main/java/com/yice/webadmin/app/model/KnowledgeManage.java
View file @
a18ae889
...
...
@@ -48,6 +48,11 @@ public class KnowledgeManage extends BaseModel {
*/
private
String
knowledgeDescribe
;
/**
* 知识格式。
*/
private
String
knowledgeFormat
;
/**
* knowledge_name LIKE搜索字符串。
*/
...
...
application-webadmin/src/main/java/com/yice/webadmin/app/model/ModelDeploy.java
View file @
a18ae889
...
...
@@ -32,6 +32,10 @@ public class ModelDeploy extends BaseModel {
*/
private
Long
modelId
;
/**
* 模型名称。
*/
private
String
modelName
;
/**
* 版本ID。
*/
...
...
@@ -67,6 +71,16 @@ public class ModelDeploy extends BaseModel {
*/
private
Integer
serviceVersion
;
/**
* 资源信息。
*/
private
String
resourceInfo
;
/**
* 服务描述。
*/
private
String
serviceRemark
;
@Mapper
public
interface
ModelDeployModelMapper
extends
BaseModelMapper
<
ModelDeployVo
,
ModelDeploy
>
{
}
...
...
application-webadmin/src/main/java/com/yice/webadmin/app/service/KGManageService.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
service
;
import
com.yice.webadmin.app.model.*
;
import
com.yice.common.core.base.service.IBaseService
;
import
java.util.*
;
/**
* 知识图谱管理数据操作服务接口。
*
* @author linking
* @date 2023-04-13
*/
public
interface
KGManageService
extends
IBaseService
<
KGManage
,
Long
>
{
/**
* 保存新增对象。
*
* @param kGManage 新增对象。
* @return 返回新增对象。
*/
KGManage
saveNew
(
KGManage
kGManage
);
/**
* 利用数据库的insertList语法,批量插入对象列表。
*
* @param kGManageList 新增对象列表。
*/
void
saveNewBatch
(
List
<
KGManage
>
kGManageList
);
/**
* 更新数据对象。
*
* @param kGManage 更新的对象。
* @param originalKGManage 原有数据对象。
* @return 成功返回true,否则false。
*/
boolean
update
(
KGManage
kGManage
,
KGManage
originalKGManage
);
/**
* 删除指定数据。
*
* @param kgId 主键Id。
* @return 成功返回true,否则false。
*/
boolean
remove
(
Long
kgId
);
/**
* 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
* 如果需要同时获取关联数据,请移步(getKGManageListWithRelation)方法。
*
* @param filter 过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
List
<
KGManage
>
getKGManageList
(
KGManage
filter
,
String
orderBy
);
/**
* 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
* 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。
* 如果仅仅需要获取主表数据,请移步(getKGManageList),以便获取更好的查询性能。
*
* @param filter 主表过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
List
<
KGManage
>
getKGManageListWithRelation
(
KGManage
filter
,
String
orderBy
);
}
application-webadmin/src/main/java/com/yice/webadmin/app/service/impl/KGManageServiceImpl.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
service
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.yice.webadmin.app.service.*
;
import
com.yice.webadmin.app.dao.*
;
import
com.yice.webadmin.app.model.*
;
import
com.yice.common.core.base.dao.BaseDaoMapper
;
import
com.yice.common.core.object.MyRelationParam
;
import
com.yice.common.core.base.service.BaseService
;
import
com.yice.common.core.util.MyModelUtil
;
import
com.yice.common.sequence.wrapper.IdGeneratorWrapper
;
import
com.github.pagehelper.Page
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
/**
* 知识图谱管理数据操作服务类。
*
* @author linking
* @date 2023-04-13
*/
@Slf4j
@Service
(
"kGManageService"
)
public
class
KGManageServiceImpl
extends
BaseService
<
KGManage
,
Long
>
implements
KGManageService
{
@Autowired
private
KGManageMapper
kGManageMapper
;
@Autowired
private
IdGeneratorWrapper
idGenerator
;
/**
* 返回当前Service的主表Mapper对象。
*
* @return 主表Mapper对象。
*/
@Override
protected
BaseDaoMapper
<
KGManage
>
mapper
()
{
return
kGManageMapper
;
}
/**
* 保存新增对象。
*
* @param kGManage 新增对象。
* @return 返回新增对象。
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
KGManage
saveNew
(
KGManage
kGManage
)
{
kGManageMapper
.
insert
(
this
.
buildDefaultValue
(
kGManage
));
return
kGManage
;
}
/**
* 利用数据库的insertList语法,批量插入对象列表。
*
* @param kGManageList 新增对象列表。
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
saveNewBatch
(
List
<
KGManage
>
kGManageList
)
{
if
(
CollUtil
.
isNotEmpty
(
kGManageList
))
{
kGManageList
.
forEach
(
this
::
buildDefaultValue
);
kGManageMapper
.
insertList
(
kGManageList
);
}
}
/**
* 更新数据对象。
*
* @param kGManage 更新的对象。
* @param originalKGManage 原有数据对象。
* @return 成功返回true,否则false。
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
update
(
KGManage
kGManage
,
KGManage
originalKGManage
)
{
MyModelUtil
.
fillCommonsForUpdate
(
kGManage
,
originalKGManage
);
// 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。
UpdateWrapper
<
KGManage
>
uw
=
this
.
createUpdateQueryForNullValue
(
kGManage
,
kGManage
.
getKgId
());
return
kGManageMapper
.
update
(
kGManage
,
uw
)
==
1
;
}
/**
* 删除指定数据。
*
* @param kgId 主键Id。
* @return 成功返回true,否则false。
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
remove
(
Long
kgId
)
{
return
kGManageMapper
.
deleteById
(
kgId
)
==
1
;
}
/**
* 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
* 如果需要同时获取关联数据,请移步(getKGManageListWithRelation)方法。
*
* @param filter 过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
@Override
public
List
<
KGManage
>
getKGManageList
(
KGManage
filter
,
String
orderBy
)
{
return
kGManageMapper
.
getKGManageList
(
filter
,
orderBy
);
}
/**
* 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
* 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。
* 如果仅仅需要获取主表数据,请移步(getKGManageList),以便获取更好的查询性能。
*
* @param filter 主表过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
@Override
public
List
<
KGManage
>
getKGManageListWithRelation
(
KGManage
filter
,
String
orderBy
)
{
List
<
KGManage
>
resultList
=
kGManageMapper
.
getKGManageList
(
filter
,
orderBy
);
// 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。
// 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。
int
batchSize
=
resultList
instanceof
Page
?
0
:
1000
;
this
.
buildRelationForDataList
(
resultList
,
MyRelationParam
.
normal
(),
batchSize
);
return
resultList
;
}
private
KGManage
buildDefaultValue
(
KGManage
kGManage
)
{
if
(
kGManage
.
getKgId
()
==
null
)
{
kGManage
.
setKgId
(
idGenerator
.
nextLongId
());
}
MyModelUtil
.
fillCommonsForInsert
(
kGManage
);
return
kGManage
;
}
}
application-webadmin/src/main/java/com/yice/webadmin/app/util/Neo4jUtil.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
util
;
/*import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Config;*/
public
class
Neo4jUtil
{
public
void
test
()
{
// 配置 Neo4j 驱动程序
/* Config config = Config.builder().
.withCredentials(AuthTokens.basic("username", "password")) // 替换为你的用户名和密码
.build();
// 获取 Neo4j 驱动实例
Driver driver = Driver.builder()
.withConfig(config)
.build();
// 打开与 Neo4j 的连接
try (GraphDatabase graphDatabase = driver.session()) {
// 在此处执行你的数据库操作
// 例如,查询节点或关系
// 关闭会话
graphDatabase.shutdown();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭驱动程序
driver.close();
}*/
}
}
application-webadmin/src/main/java/com/yice/webadmin/app/vo/KGManageVo.java
0 → 100644
View file @
a18ae889
package
com
.
yice
.
webadmin
.
app
.
vo
;
import
com.yice.common.core.base.vo.BaseVo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.util.Date
;
/**
* KGManageVO视图对象。
*
* @author linking
* @date 2023-04-13
*/
@ApiModel
(
"KGManageVO视图对象"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
KGManageVo
extends
BaseVo
{
/**
* 知识图谱ID。
*/
@ApiModelProperty
(
value
=
"知识图谱ID"
)
private
Long
kgId
;
/**
* 知识图谱名称。
*/
@ApiModelProperty
(
value
=
"知识图谱名称"
)
private
String
kgName
;
/**
* 知识图谱描述。
*/
@ApiModelProperty
(
value
=
"知识图谱描述"
)
private
String
kgDescribe
;
/**
* 知识图谱地址。
*/
@ApiModelProperty
(
value
=
"知识图谱地址"
)
private
String
kgUrl
;
/**
* 知识图谱用户名。
*/
@ApiModelProperty
(
value
=
"知识图谱用户名"
)
private
String
kgUserName
;
/**
* 知识图谱密码。
*/
@ApiModelProperty
(
value
=
"知识图谱密码"
)
private
String
kgPassword
;
/**
* 知识图谱浏览地址。
*/
@ApiModelProperty
(
value
=
"知识图谱浏览地址"
)
private
String
kgBowerUrl
;
/**
* 知识图谱类型。
*/
@ApiModelProperty
(
value
=
"知识图谱类型"
)
private
String
kgType
;
}
application-webadmin/src/main/java/com/yice/webadmin/app/vo/KnowledgeManageVo.java
View file @
a18ae889
...
...
@@ -48,4 +48,10 @@ public class KnowledgeManageVo extends BaseVo {
*/
@ApiModelProperty
(
value
=
"创建人名称"
)
private
Map
<
String
,
Object
>
createUserIdDictMap
;
/**
* 知识格式。
*/
@ApiModelProperty
(
value
=
"知识格式"
)
private
String
knowledgeFormat
;
}
application-webadmin/src/main/java/com/yice/webadmin/app/vo/ModelDeployVo.java
View file @
a18ae889
...
...
@@ -28,7 +28,11 @@ public class ModelDeployVo extends BaseVo {
*/
@ApiModelProperty
(
value
=
"模型ID"
)
private
Long
modelId
;
/**
* 模型名称。
*/
@ApiModelProperty
(
value
=
"模型名称"
)
private
String
modelName
;
/**
* 版本ID。
*/
...
...
@@ -70,4 +74,15 @@ public class ModelDeployVo extends BaseVo {
*/
@ApiModelProperty
(
value
=
"服务版本"
)
private
Integer
serviceVersion
;
/**
* 资源信息。
*/
@ApiModelProperty
(
value
=
"资源信息"
)
private
String
resourceInfo
;
/**
* 服务描述。
*/
@ApiModelProperty
(
value
=
"服务描述"
)
private
String
serviceRemark
;
}
application-webadmin/src/main/resources/application-dev.yml
View file @
a18ae889
...
...
@@ -78,10 +78,25 @@ python:
#python websocket 服务地址
pythonWebsocketUri
:
ws://192.168.0.36:7860/queue/join
#输出控制地址
controllerAddress
:
http://1
92.168.0.36
:20001
controllerAddress
:
http://1
27.0.0.1
:20001
#对话基础路径
chatAddress
:
http://192.168.0.36:7861/
chatAddress
:
http://192.168.0.36:8000/
llm-model
:
#模型管理基础路径
llmModelInterface
:
http://192.168.0.36:7861/llm_model/
#模型停止
stop
:
stop
#模型模型部署
reload
:
reload
#模型部署
start
:
start
#列出当前已加载模型
listRunningModels
:
list_running_models
other
:
#其他管理接口
otherInterface
:
http://192.168.0.36:7861/other/
#获取gpu信息
getGpuInfo
:
get_gpu_info
knowledge
:
#知识库通用接口地址
knowledgeInterface
:
http://192.168.0.36:7861/knowledge_base/
...
...
@@ -95,6 +110,10 @@ knowledge:
listFiles
:
list_files
#搜索知识库
searchDocs
:
search_docs
#直接更新知识库文档
updateDocsById
:
update_docs_by_id
#直接删除知识库文档片段
deleteDocsById
:
delete_docs_by_id
#上传文件到知识库,bing/或进行向量化
uploadDocs
:
upload_docs
#删除知识库内指定文件
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment