【代码重构】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; 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);
} }

View File

@ -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)

View File

@ -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;

View File

@ -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;

View File

@ -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} 集成测试类