bug
This commit is contained in:
parent
02382dd2b1
commit
50448d6a9d
@ -91,10 +91,17 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode PROMPT_TEMPLATES_APPLICATIONS_BACKUP_NOT_EXISTS = new ErrorCode(10036, "模板信息不存在");
|
||||
|
||||
ErrorCode PROMPT_TEMPLATES_TAGS_BACKUP_NOT_EXISTS = new ErrorCode(10037, "模板信息不存在");
|
||||
|
||||
ErrorCode DATA_PROCESS_TASK_NAME_NOT_EXISTS = new ErrorCode(10038, "数据处理任务名称已存在");
|
||||
|
||||
ErrorCode FINE_TUNING_TASK_NAME_NOT_EXISTS = new ErrorCode(10039, "模型调优任务名称已存在");
|
||||
ErrorCode LEARNING_RESOURCES_NAME_NOT_EXISTS = new ErrorCode(10041, "学习资源标题名称已存在");
|
||||
ErrorCode KNOWLEDGE_BASE_NAME_NOT_EXISTS = new ErrorCode(10042, "知识库名称已存在");
|
||||
|
||||
ErrorCode LEARNING_RESOURCES_NAME_NOT_EXISTS = new ErrorCode(10040, "学习资源标题名称已存在");
|
||||
|
||||
ErrorCode KNOWLEDGE_BASE_NAME_NOT_EXISTS = new ErrorCode(10040, "知识库名称已存在");
|
||||
|
||||
ErrorCode APPLICATION_NAME_NOT_EXISTS = new ErrorCode(10041, "应用中心名称已存在");
|
||||
|
||||
ErrorCode MODEL_SERVIC_ENAME_NOT_EXISTS = new ErrorCode(10043, "模型名称已存在");
|
||||
|
||||
|
||||
|
@ -112,8 +112,8 @@ public class ApplicationController {
|
||||
public CommonResult<ChatRespVO> apiChat(@PathVariable("apiKey") String apiKey,@RequestBody ChatApiReqVO chatReqVO){
|
||||
ApplicationDO applicationDO = applicationService.getByApiKey(apiKey);
|
||||
chatReqVO.setApplicationId(applicationDO.getId());
|
||||
chatReqVO.setModelId(applicationDO.getModelServiceId());
|
||||
chatReqVO.setModelType(chatReqVO.getModelType());
|
||||
chatReqVO.setModelId(applicationDO.getAppModel());
|
||||
chatReqVO.setModelType(applicationDO.getAppModelType());
|
||||
|
||||
ChatReqVO bean = BeanUtils.toBean(chatReqVO, ChatReqVO.class);
|
||||
ChatRespVO chat = conversationService.chat(bean);
|
||||
|
@ -1,5 +1,12 @@
|
||||
package cn.iocoder.yudao.module.llm.controller.admin.modelservice;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ChatApiReqVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ChatReqVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ChatRespVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.finetuningtask.vo.FineTuningTaskRespVO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.application.ApplicationDO;
|
||||
import cn.iocoder.yudao.module.llm.service.conversation.ConversationService;
|
||||
import cn.iocoder.yudao.module.llm.service.finetuningtask.FineTuningTaskService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -8,6 +15,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import javax.annotation.security.PermitAll;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
@ -37,6 +45,10 @@ public class ModelServiceController {
|
||||
|
||||
@Resource
|
||||
private ModelServiceService modelServiceService;
|
||||
@Resource
|
||||
private FineTuningTaskService fineTuningTaskService;
|
||||
@Resource
|
||||
private ConversationService conversationService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建模型服务")
|
||||
@ -117,4 +129,18 @@ public class ModelServiceController {
|
||||
BeanUtils.toBean(list, ModelServiceRespVO.class));
|
||||
}
|
||||
|
||||
@PermitAll
|
||||
@PostMapping("/api/{apiKey}/chat")
|
||||
@Operation(summary = "api对话接口")
|
||||
public CommonResult<ChatRespVO> apiChat(@PathVariable("apiKey") String apiKey, @RequestBody ChatApiReqVO chatReqVO){
|
||||
ModelServiceDO byApiKey = modelServiceService.getByApiKey(apiKey);
|
||||
Long fineTuningTaskId = byApiKey.getFineTuningTask();
|
||||
FineTuningTaskRespVO fineTuningTask = fineTuningTaskService.getFineTuningTask(fineTuningTaskId);
|
||||
chatReqVO.setModelId(fineTuningTask.getBaseModelId());
|
||||
chatReqVO.setModelType(0);
|
||||
ChatReqVO bean = BeanUtils.toBean(chatReqVO, ChatReqVO.class);
|
||||
ChatRespVO chat = conversationService.chat(bean);
|
||||
return success(chat);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -37,4 +37,10 @@ public class ModelServicePageReqVO extends PageParam {
|
||||
@Schema(description = "模型服务状态,使用字典(llm_model_status)", example = "1")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "apiKey", example = "123")
|
||||
private String apiKey;
|
||||
|
||||
@Schema(description = "apiUrl", example = "www.sdada.com")
|
||||
private String apiUrl;
|
||||
|
||||
}
|
||||
|
@ -60,4 +60,9 @@ public class ModelServiceRespVO {
|
||||
*/
|
||||
private Long jobId;
|
||||
|
||||
@Schema(description = "apiKey", example = "123")
|
||||
private String apiKey;
|
||||
|
||||
@Schema(description = "apiUrl", example = "www.sdada.com")
|
||||
private String apiUrl;
|
||||
}
|
||||
|
@ -33,4 +33,11 @@ public class ModelServiceSaveReqVO {
|
||||
private Integer status;
|
||||
|
||||
private Long jobId;
|
||||
@Schema(description = "apiKey", example = "123")
|
||||
private String apiKey;
|
||||
|
||||
@Schema(description = "apiUrl", example = "www.sdada.com")
|
||||
private String apiUrl;
|
||||
|
||||
|
||||
}
|
||||
|
@ -62,4 +62,8 @@ public class ModelServiceDO extends BaseDO {
|
||||
*/
|
||||
private Long jobId;
|
||||
|
||||
private String apiKey;
|
||||
|
||||
private String apiUrl;
|
||||
|
||||
}
|
||||
|
@ -27,4 +27,5 @@ public interface ApplicationMapper extends BaseMapperX<ApplicationDO> {
|
||||
.orderByDesc(ApplicationDO::getId));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -83,4 +83,6 @@ public class LLMBackendProperties {
|
||||
|
||||
private String modelUndeploy;
|
||||
|
||||
|
||||
private String modelServiceApi;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.llm.service.application;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.application.vo.ApplicationPageReqVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.application.vo.ApplicationRespVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.application.vo.ApplicationSaveReqVO;
|
||||
@ -29,7 +30,7 @@ import java.util.Random;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.APPLICATION_NOT_EXISTS;
|
||||
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* 大模型应用 Service 实现类
|
||||
@ -58,6 +59,14 @@ public class ApplicationServiceImpl implements ApplicationService {
|
||||
|
||||
@Override
|
||||
public Long createApplication(ApplicationSaveReqVO createReqVO) {
|
||||
|
||||
String appName = createReqVO.getAppName();
|
||||
LambdaQueryWrapper<ApplicationDO> queryWrapper = new LambdaQueryWrapperX<>();
|
||||
queryWrapper.eq(ApplicationDO::getAppName,appName);
|
||||
List<ApplicationDO> applicationDOS = applicationMapper.selectList(queryWrapper);
|
||||
if(applicationDOS.size() > 0){
|
||||
throw exception(APPLICATION_NAME_NOT_EXISTS);
|
||||
}
|
||||
// 插入
|
||||
ApplicationDO application = BeanUtils.toBean(createReqVO, ApplicationDO.class);
|
||||
String apikey = getApikey();
|
||||
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.llm.service.modelservice;
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.modelservice.vo.*;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.application.ApplicationDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
@ -63,4 +64,6 @@ public interface ModelServiceService {
|
||||
void unactive(ModelServiceSaveReqVO updateReqVO);
|
||||
|
||||
PageResult<ModelServiceRespVO> getModelServicePage1(ModelServicePageReqVO pageReqVO);
|
||||
|
||||
ModelServiceDO getByApiKey(String apiKey);
|
||||
}
|
||||
|
@ -1,29 +1,30 @@
|
||||
package cn.iocoder.yudao.module.llm.service.modelservice;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetDO;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.modelservice.vo.ModelServicePageReqVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.modelservice.vo.ModelServiceRespVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.modelservice.vo.ModelServiceSaveReqVO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.finetuningtask.FineTuningTaskMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper;
|
||||
import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties;
|
||||
import cn.iocoder.yudao.module.llm.service.async.AsyncModelServiceService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.modelservice.vo.*;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
|
||||
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.MODEL_SERVICE_NOT_EXISTS;
|
||||
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.MODEL_SERVIC_ENAME_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* 模型服务 Service 实现类
|
||||
@ -39,20 +40,50 @@ public class ModelServiceServiceImpl implements ModelServiceService {
|
||||
|
||||
@Resource
|
||||
private AsyncModelServiceService asyncModelServiceService;
|
||||
|
||||
@Resource
|
||||
private FineTuningTaskMapper fineTuningTaskMapper;
|
||||
|
||||
@Resource
|
||||
private LLMBackendProperties llmBackendProperties;
|
||||
|
||||
|
||||
@Override
|
||||
public Long createModelService(ModelServiceSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
validateModelServiceNameExists(createReqVO);
|
||||
ModelServiceDO modelService = BeanUtils.toBean(createReqVO, ModelServiceDO.class);
|
||||
|
||||
// 插入
|
||||
String apikey = getApikey();
|
||||
modelService.setApiKey(apikey);
|
||||
String replace = llmBackendProperties.getApplicationApi().replace("apiKey", apikey);
|
||||
modelService.setApiUrl(replace);
|
||||
|
||||
modelServiceMapper.insert(modelService);
|
||||
asyncModelServiceService.createModelService(modelService);
|
||||
// 返回
|
||||
return modelService.getId();
|
||||
}
|
||||
|
||||
public String getApikey() {
|
||||
Random random = new Random();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < 30; i++) {
|
||||
// 生成一个随机的大小写字母
|
||||
char c = (char) (random.nextBoolean() ? // 随机选择大小写
|
||||
'A' + random.nextInt(26) : // 生成大写字母
|
||||
'a' + random.nextInt(26)); // 生成小写字母
|
||||
sb.append(c);
|
||||
}
|
||||
Long count = modelServiceMapper.selectCount(new LambdaQueryWrapper<ModelServiceDO>()
|
||||
.eq(ModelServiceDO::getApiKey, sb.toString()));
|
||||
if (count > 0) {
|
||||
getApikey();
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateModelService(ModelServiceSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
@ -146,4 +177,11 @@ public class ModelServiceServiceImpl implements ModelServiceService {
|
||||
return respVo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelServiceDO getByApiKey(String apiKey) {
|
||||
LambdaQueryWrapper<ModelServiceDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ModelServiceDO::getApiKey,apiKey);
|
||||
return modelServiceMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -261,6 +261,8 @@ llm:
|
||||
|
||||
application_api: http://localhost:48100/admin-app/llm/application/api/apiKey/chat
|
||||
|
||||
model_service_api : http://localhost:48100/admin-app/llm/model-service/api/apiKey/chat
|
||||
|
||||
--- #################### iot相关配置 TODO 芋艿:再瞅瞅 ####################
|
||||
iot:
|
||||
emq:
|
||||
|
@ -303,6 +303,8 @@ llm:
|
||||
|
||||
application_api: http://localhost:48080/admin-app/llm/application/api/apiKey/chat
|
||||
|
||||
model_service_api : http://localhost:48080/admin-app/llm/model-service/api/apiKey/chat
|
||||
|
||||
--- #################### iot相关配置 TODO 芋艿:再瞅瞅 ####################
|
||||
iot:
|
||||
emq:
|
||||
|
Loading…
x
Reference in New Issue
Block a user