【代码重构】AI:“聊天模型”重构为“模型”,支持 type 模型类型
This commit is contained in:
parent
1c9c9790cd
commit
433e91da8e
|
@ -45,7 +45,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
|
||||||
private AiChatConversationMapper chatConversationMapper;
|
private AiChatConversationMapper chatConversationMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AiModelService chatModalService;
|
private AiModelService modalService;
|
||||||
@Resource
|
@Resource
|
||||||
private AiChatRoleService chatRoleService;
|
private AiChatRoleService chatRoleService;
|
||||||
@Resource
|
@Resource
|
||||||
|
@ -56,8 +56,8 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
|
||||||
// 1.1 获得 AiChatRoleDO 聊天角色
|
// 1.1 获得 AiChatRoleDO 聊天角色
|
||||||
AiChatRoleDO role = createReqVO.getRoleId() != null ? chatRoleService.validateChatRole(createReqVO.getRoleId()) : null;
|
AiChatRoleDO role = createReqVO.getRoleId() != null ? chatRoleService.validateChatRole(createReqVO.getRoleId()) : null;
|
||||||
// 1.2 获得 AiModelDO 聊天模型
|
// 1.2 获得 AiModelDO 聊天模型
|
||||||
AiModelDO model = role != null && role.getModelId() != null ? chatModalService.validateModel(role.getModelId())
|
AiModelDO model = role != null && role.getModelId() != null ? modalService.validateModel(role.getModelId())
|
||||||
: chatModalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType());
|
: modalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType());
|
||||||
Assert.notNull(model, "必须找到默认模型");
|
Assert.notNull(model, "必须找到默认模型");
|
||||||
validateChatModel(model);
|
validateChatModel(model);
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
|
||||||
// 1.2 校验模型是否存在(修改模型的情况)
|
// 1.2 校验模型是否存在(修改模型的情况)
|
||||||
AiModelDO model = null;
|
AiModelDO model = null;
|
||||||
if (updateReqVO.getModelId() != null) {
|
if (updateReqVO.getModelId() != null) {
|
||||||
model = chatModalService.validateModel(updateReqVO.getModelId());
|
model = modalService.validateModel(updateReqVO.getModelId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1.3 校验知识库是否存在
|
// 1.3 校验知识库是否存在
|
||||||
|
@ -144,6 +144,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
|
||||||
if (ObjectUtil.isAllNotEmpty(model.getTemperature(), model.getMaxTokens(), model.getMaxContexts())) {
|
if (ObjectUtil.isAllNotEmpty(model.getTemperature(), model.getMaxTokens(), model.getMaxContexts())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Assert.equals(model.getType(), AiModelTypeEnum.CHAT.getType(), "模型类型不正确:" + model);
|
||||||
throw exception(CHAT_CONVERSATION_MODEL_ERROR);
|
throw exception(CHAT_CONVERSATION_MODEL_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,12 +28,12 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
|
||||||
private AiKnowledgeMapper knowledgeMapper;
|
private AiKnowledgeMapper knowledgeMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AiModelService chatModelService;
|
private AiModelService modelService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) {
|
public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) {
|
||||||
// 1. 校验模型配置
|
// 1. 校验模型配置
|
||||||
AiModelDO model = chatModelService.validateModel(createReqVO.getEmbeddingModelId());
|
AiModelDO model = modelService.validateModel(createReqVO.getEmbeddingModelId());
|
||||||
|
|
||||||
// 2. 插入知识库
|
// 2. 插入知识库
|
||||||
AiKnowledgeDO knowledge = BeanUtils.toBean(createReqVO, AiKnowledgeDO.class)
|
AiKnowledgeDO knowledge = BeanUtils.toBean(createReqVO, AiKnowledgeDO.class)
|
||||||
|
@ -47,7 +47,7 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
|
||||||
// 1.1 校验知识库存在
|
// 1.1 校验知识库存在
|
||||||
validateKnowledgeExists(updateReqVO.getId());
|
validateKnowledgeExists(updateReqVO.getId());
|
||||||
// 1.2 校验模型配置
|
// 1.2 校验模型配置
|
||||||
AiModelDO model = chatModelService.validateModel(updateReqVO.getEmbeddingModelId());
|
AiModelDO model = modelService.validateModel(updateReqVO.getEmbeddingModelId());
|
||||||
|
|
||||||
// 2. 更新知识库
|
// 2. 更新知识库
|
||||||
AiKnowledgeDO updateObj = BeanUtils.toBean(updateReqVO, AiKnowledgeDO.class)
|
AiKnowledgeDO updateObj = BeanUtils.toBean(updateReqVO, AiKnowledgeDO.class)
|
||||||
|
|
|
@ -33,7 +33,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.*;
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Validated
|
@Validated
|
||||||
public class AiChatModelServiceImpl implements AiModelService {
|
public class AiModelServiceImpl implements AiModelService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AiApiKeyService apiKeyService;
|
private AiApiKeyService apiKeyService;
|
|
@ -54,7 +54,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.WRITE_NOT_EXIS
|
||||||
public class AiWriteServiceImpl implements AiWriteService {
|
public class AiWriteServiceImpl implements AiWriteService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AiModelService chatModalService;
|
private AiModelService modalService;
|
||||||
@Resource
|
@Resource
|
||||||
private AiChatRoleService chatRoleService;
|
private AiChatRoleService chatRoleService;
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ public class AiWriteServiceImpl implements AiWriteService {
|
||||||
? writeRole.getSystemMessage() : AiChatRoleEnum.AI_WRITE_ROLE.getSystemMessage();
|
? writeRole.getSystemMessage() : AiChatRoleEnum.AI_WRITE_ROLE.getSystemMessage();
|
||||||
// 1.3 校验平台
|
// 1.3 校验平台
|
||||||
AiPlatformEnum platform = AiPlatformEnum.validatePlatform(model.getPlatform());
|
AiPlatformEnum platform = AiPlatformEnum.validatePlatform(model.getPlatform());
|
||||||
StreamingChatModel chatModel = chatModalService.getChatModel(model.getKeyId());
|
StreamingChatModel chatModel = modalService.getChatModel(model.getKeyId());
|
||||||
|
|
||||||
// 2. 插入写作信息
|
// 2. 插入写作信息
|
||||||
AiWriteDO writeDO = BeanUtils.toBean(generateReqVO, AiWriteDO.class, write -> write.setUserId(userId)
|
AiWriteDO writeDO = BeanUtils.toBean(generateReqVO, AiWriteDO.class, write -> write.setUserId(userId)
|
||||||
|
@ -110,10 +110,10 @@ public class AiWriteServiceImpl implements AiWriteService {
|
||||||
private AiModelDO getModel(AiChatRoleDO writeRole) {
|
private AiModelDO getModel(AiChatRoleDO writeRole) {
|
||||||
AiModelDO model = null;
|
AiModelDO model = null;
|
||||||
if (Objects.nonNull(writeRole) && Objects.nonNull(writeRole.getModelId())) {
|
if (Objects.nonNull(writeRole) && Objects.nonNull(writeRole.getModelId())) {
|
||||||
model = chatModalService.getModel(writeRole.getModelId());
|
model = modalService.getModel(writeRole.getModelId());
|
||||||
}
|
}
|
||||||
if (model == null) {
|
if (model == null) {
|
||||||
model = chatModalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType());
|
model = modalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType());
|
||||||
}
|
}
|
||||||
Assert.notNull(model, "[AI] 获取不到模型");
|
Assert.notNull(model, "[AI] 获取不到模型");
|
||||||
return model;
|
return model;
|
||||||
|
|
|
@ -5,13 +5,9 @@ import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.ai.image.ImageOptions;
|
import org.springframework.ai.image.ImageOptions;
|
||||||
import org.springframework.ai.image.ImagePrompt;
|
import org.springframework.ai.image.ImagePrompt;
|
||||||
import org.springframework.ai.image.ImageResponse;
|
import org.springframework.ai.image.ImageResponse;
|
||||||
import org.springframework.ai.openai.OpenAiChatModel;
|
|
||||||
import org.springframework.ai.openai.OpenAiChatOptions;
|
|
||||||
import org.springframework.ai.openai.OpenAiImageModel;
|
import org.springframework.ai.openai.OpenAiImageModel;
|
||||||
import org.springframework.ai.openai.OpenAiImageOptions;
|
import org.springframework.ai.openai.OpenAiImageOptions;
|
||||||
import org.springframework.ai.openai.api.OpenAiApi;
|
|
||||||
import org.springframework.ai.openai.api.OpenAiImageApi;
|
import org.springframework.ai.openai.api.OpenAiImageApi;
|
||||||
import org.springframework.web.client.RestClient;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link OpenAiImageModel} 集成测试类
|
* {@link OpenAiImageModel} 集成测试类
|
||||||
|
|
Loading…
Reference in New Issue