【代码重构】AI:“聊天模型”重构为“模型”,支持 type 模型类型

This commit is contained in:
YunaiV 2025-03-03 21:55:49 +08:00
parent 1c9c9790cd
commit 433e91da8e
5 changed files with 13 additions and 16 deletions

View File

@ -45,7 +45,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
private AiChatConversationMapper chatConversationMapper;
@Resource
private AiModelService chatModalService;
private AiModelService modalService;
@Resource
private AiChatRoleService chatRoleService;
@Resource
@ -56,8 +56,8 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
// 1.1 获得 AiChatRoleDO 聊天角色
AiChatRoleDO role = createReqVO.getRoleId() != null ? chatRoleService.validateChatRole(createReqVO.getRoleId()) : null;
// 1.2 获得 AiModelDO 聊天模型
AiModelDO model = role != null && role.getModelId() != null ? chatModalService.validateModel(role.getModelId())
: chatModalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType());
AiModelDO model = role != null && role.getModelId() != null ? modalService.validateModel(role.getModelId())
: modalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType());
Assert.notNull(model, "必须找到默认模型");
validateChatModel(model);
@ -89,7 +89,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
// 1.2 校验模型是否存在修改模型的情况
AiModelDO model = null;
if (updateReqVO.getModelId() != null) {
model = chatModalService.validateModel(updateReqVO.getModelId());
model = modalService.validateModel(updateReqVO.getModelId());
}
// 1.3 校验知识库是否存在
@ -144,6 +144,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
if (ObjectUtil.isAllNotEmpty(model.getTemperature(), model.getMaxTokens(), model.getMaxContexts())) {
return;
}
Assert.equals(model.getType(), AiModelTypeEnum.CHAT.getType(), "模型类型不正确:" + model);
throw exception(CHAT_CONVERSATION_MODEL_ERROR);
}

View File

@ -28,12 +28,12 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
private AiKnowledgeMapper knowledgeMapper;
@Resource
private AiModelService chatModelService;
private AiModelService modelService;
@Override
public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) {
// 1. 校验模型配置
AiModelDO model = chatModelService.validateModel(createReqVO.getEmbeddingModelId());
AiModelDO model = modelService.validateModel(createReqVO.getEmbeddingModelId());
// 2. 插入知识库
AiKnowledgeDO knowledge = BeanUtils.toBean(createReqVO, AiKnowledgeDO.class)
@ -47,7 +47,7 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
// 1.1 校验知识库存在
validateKnowledgeExists(updateReqVO.getId());
// 1.2 校验模型配置
AiModelDO model = chatModelService.validateModel(updateReqVO.getEmbeddingModelId());
AiModelDO model = modelService.validateModel(updateReqVO.getEmbeddingModelId());
// 2. 更新知识库
AiKnowledgeDO updateObj = BeanUtils.toBean(updateReqVO, AiKnowledgeDO.class)

View File

@ -33,7 +33,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.*;
*/
@Service
@Validated
public class AiChatModelServiceImpl implements AiModelService {
public class AiModelServiceImpl implements AiModelService {
@Resource
private AiApiKeyService apiKeyService;

View File

@ -54,7 +54,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.WRITE_NOT_EXIS
public class AiWriteServiceImpl implements AiWriteService {
@Resource
private AiModelService chatModalService;
private AiModelService modalService;
@Resource
private AiChatRoleService chatRoleService;
@ -76,7 +76,7 @@ public class AiWriteServiceImpl implements AiWriteService {
? writeRole.getSystemMessage() : AiChatRoleEnum.AI_WRITE_ROLE.getSystemMessage();
// 1.3 校验平台
AiPlatformEnum platform = AiPlatformEnum.validatePlatform(model.getPlatform());
StreamingChatModel chatModel = chatModalService.getChatModel(model.getKeyId());
StreamingChatModel chatModel = modalService.getChatModel(model.getKeyId());
// 2. 插入写作信息
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) {
AiModelDO model = null;
if (Objects.nonNull(writeRole) && Objects.nonNull(writeRole.getModelId())) {
model = chatModalService.getModel(writeRole.getModelId());
model = modalService.getModel(writeRole.getModelId());
}
if (model == null) {
model = chatModalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType());
model = modalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType());
}
Assert.notNull(model, "[AI] 获取不到模型");
return model;

View File

@ -5,13 +5,9 @@ import org.junit.jupiter.api.Test;
import org.springframework.ai.image.ImageOptions;
import org.springframework.ai.image.ImagePrompt;
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.OpenAiImageOptions;
import org.springframework.ai.openai.api.OpenAiApi;
import org.springframework.ai.openai.api.OpenAiImageApi;
import org.springframework.web.client.RestClient;
/**
* {@link OpenAiImageModel} 集成测试类