Commit 433e91da8e0d9b683e7375a2668e8c4b01b5472f
1 parent
1c9c9790
【代码重构】AI:“聊天模型”重构为“模型”,支持 type 模型类型
Showing
5 changed files
with
13 additions
and
16 deletions
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatConversationServiceImpl.java
| @@ -45,7 +45,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService | @@ -45,7 +45,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService | ||
| 45 | private AiChatConversationMapper chatConversationMapper; | 45 | private AiChatConversationMapper chatConversationMapper; |
| 46 | 46 | ||
| 47 | @Resource | 47 | @Resource |
| 48 | - private AiModelService chatModalService; | 48 | + private AiModelService modalService; |
| 49 | @Resource | 49 | @Resource |
| 50 | private AiChatRoleService chatRoleService; | 50 | private AiChatRoleService chatRoleService; |
| 51 | @Resource | 51 | @Resource |
| @@ -56,8 +56,8 @@ public class AiChatConversationServiceImpl implements AiChatConversationService | @@ -56,8 +56,8 @@ public class AiChatConversationServiceImpl implements AiChatConversationService | ||
| 56 | // 1.1 获得 AiChatRoleDO 聊天角色 | 56 | // 1.1 获得 AiChatRoleDO 聊天角色 |
| 57 | AiChatRoleDO role = createReqVO.getRoleId() != null ? chatRoleService.validateChatRole(createReqVO.getRoleId()) : null; | 57 | AiChatRoleDO role = createReqVO.getRoleId() != null ? chatRoleService.validateChatRole(createReqVO.getRoleId()) : null; |
| 58 | // 1.2 获得 AiModelDO 聊天模型 | 58 | // 1.2 获得 AiModelDO 聊天模型 |
| 59 | - AiModelDO model = role != null && role.getModelId() != null ? chatModalService.validateModel(role.getModelId()) | ||
| 60 | - : chatModalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType()); | 59 | + AiModelDO model = role != null && role.getModelId() != null ? modalService.validateModel(role.getModelId()) |
| 60 | + : modalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType()); | ||
| 61 | Assert.notNull(model, "必须找到默认模型"); | 61 | Assert.notNull(model, "必须找到默认模型"); |
| 62 | validateChatModel(model); | 62 | validateChatModel(model); |
| 63 | 63 | ||
| @@ -89,7 +89,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService | @@ -89,7 +89,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService | ||
| 89 | // 1.2 校验模型是否存在(修改模型的情况) | 89 | // 1.2 校验模型是否存在(修改模型的情况) |
| 90 | AiModelDO model = null; | 90 | AiModelDO model = null; |
| 91 | if (updateReqVO.getModelId() != null) { | 91 | if (updateReqVO.getModelId() != null) { |
| 92 | - model = chatModalService.validateModel(updateReqVO.getModelId()); | 92 | + model = modalService.validateModel(updateReqVO.getModelId()); |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | // 1.3 校验知识库是否存在 | 95 | // 1.3 校验知识库是否存在 |
| @@ -144,6 +144,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService | @@ -144,6 +144,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService | ||
| 144 | if (ObjectUtil.isAllNotEmpty(model.getTemperature(), model.getMaxTokens(), model.getMaxContexts())) { | 144 | if (ObjectUtil.isAllNotEmpty(model.getTemperature(), model.getMaxTokens(), model.getMaxContexts())) { |
| 145 | return; | 145 | return; |
| 146 | } | 146 | } |
| 147 | + Assert.equals(model.getType(), AiModelTypeEnum.CHAT.getType(), "模型类型不正确:" + model); | ||
| 147 | throw exception(CHAT_CONVERSATION_MODEL_ERROR); | 148 | throw exception(CHAT_CONVERSATION_MODEL_ERROR); |
| 148 | } | 149 | } |
| 149 | 150 |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeServiceImpl.java
| @@ -28,12 +28,12 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { | @@ -28,12 +28,12 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { | ||
| 28 | private AiKnowledgeMapper knowledgeMapper; | 28 | private AiKnowledgeMapper knowledgeMapper; |
| 29 | 29 | ||
| 30 | @Resource | 30 | @Resource |
| 31 | - private AiModelService chatModelService; | 31 | + private AiModelService modelService; |
| 32 | 32 | ||
| 33 | @Override | 33 | @Override |
| 34 | public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) { | 34 | public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) { |
| 35 | // 1. 校验模型配置 | 35 | // 1. 校验模型配置 |
| 36 | - AiModelDO model = chatModelService.validateModel(createReqVO.getEmbeddingModelId()); | 36 | + AiModelDO model = modelService.validateModel(createReqVO.getEmbeddingModelId()); |
| 37 | 37 | ||
| 38 | // 2. 插入知识库 | 38 | // 2. 插入知识库 |
| 39 | AiKnowledgeDO knowledge = BeanUtils.toBean(createReqVO, AiKnowledgeDO.class) | 39 | AiKnowledgeDO knowledge = BeanUtils.toBean(createReqVO, AiKnowledgeDO.class) |
| @@ -47,7 +47,7 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { | @@ -47,7 +47,7 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { | ||
| 47 | // 1.1 校验知识库存在 | 47 | // 1.1 校验知识库存在 |
| 48 | validateKnowledgeExists(updateReqVO.getId()); | 48 | validateKnowledgeExists(updateReqVO.getId()); |
| 49 | // 1.2 校验模型配置 | 49 | // 1.2 校验模型配置 |
| 50 | - AiModelDO model = chatModelService.validateModel(updateReqVO.getEmbeddingModelId()); | 50 | + AiModelDO model = modelService.validateModel(updateReqVO.getEmbeddingModelId()); |
| 51 | 51 | ||
| 52 | // 2. 更新知识库 | 52 | // 2. 更新知识库 |
| 53 | AiKnowledgeDO updateObj = BeanUtils.toBean(updateReqVO, AiKnowledgeDO.class) | 53 | AiKnowledgeDO updateObj = BeanUtils.toBean(updateReqVO, AiKnowledgeDO.class) |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/model/AiChatModelServiceImpl.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/model/AiModelServiceImpl.java
| @@ -33,7 +33,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.*; | @@ -33,7 +33,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.*; | ||
| 33 | */ | 33 | */ |
| 34 | @Service | 34 | @Service |
| 35 | @Validated | 35 | @Validated |
| 36 | -public class AiChatModelServiceImpl implements AiModelService { | 36 | +public class AiModelServiceImpl implements AiModelService { |
| 37 | 37 | ||
| 38 | @Resource | 38 | @Resource |
| 39 | private AiApiKeyService apiKeyService; | 39 | private AiApiKeyService apiKeyService; |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/write/AiWriteServiceImpl.java
| @@ -54,7 +54,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.WRITE_NOT_EXIS | @@ -54,7 +54,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.WRITE_NOT_EXIS | ||
| 54 | public class AiWriteServiceImpl implements AiWriteService { | 54 | public class AiWriteServiceImpl implements AiWriteService { |
| 55 | 55 | ||
| 56 | @Resource | 56 | @Resource |
| 57 | - private AiModelService chatModalService; | 57 | + private AiModelService modalService; |
| 58 | @Resource | 58 | @Resource |
| 59 | private AiChatRoleService chatRoleService; | 59 | private AiChatRoleService chatRoleService; |
| 60 | 60 | ||
| @@ -76,7 +76,7 @@ public class AiWriteServiceImpl implements AiWriteService { | @@ -76,7 +76,7 @@ public class AiWriteServiceImpl implements AiWriteService { | ||
| 76 | ? writeRole.getSystemMessage() : AiChatRoleEnum.AI_WRITE_ROLE.getSystemMessage(); | 76 | ? writeRole.getSystemMessage() : AiChatRoleEnum.AI_WRITE_ROLE.getSystemMessage(); |
| 77 | // 1.3 校验平台 | 77 | // 1.3 校验平台 |
| 78 | AiPlatformEnum platform = AiPlatformEnum.validatePlatform(model.getPlatform()); | 78 | AiPlatformEnum platform = AiPlatformEnum.validatePlatform(model.getPlatform()); |
| 79 | - StreamingChatModel chatModel = chatModalService.getChatModel(model.getKeyId()); | 79 | + StreamingChatModel chatModel = modalService.getChatModel(model.getKeyId()); |
| 80 | 80 | ||
| 81 | // 2. 插入写作信息 | 81 | // 2. 插入写作信息 |
| 82 | AiWriteDO writeDO = BeanUtils.toBean(generateReqVO, AiWriteDO.class, write -> write.setUserId(userId) | 82 | AiWriteDO writeDO = BeanUtils.toBean(generateReqVO, AiWriteDO.class, write -> write.setUserId(userId) |
| @@ -110,10 +110,10 @@ public class AiWriteServiceImpl implements AiWriteService { | @@ -110,10 +110,10 @@ public class AiWriteServiceImpl implements AiWriteService { | ||
| 110 | private AiModelDO getModel(AiChatRoleDO writeRole) { | 110 | private AiModelDO getModel(AiChatRoleDO writeRole) { |
| 111 | AiModelDO model = null; | 111 | AiModelDO model = null; |
| 112 | if (Objects.nonNull(writeRole) && Objects.nonNull(writeRole.getModelId())) { | 112 | if (Objects.nonNull(writeRole) && Objects.nonNull(writeRole.getModelId())) { |
| 113 | - model = chatModalService.getModel(writeRole.getModelId()); | 113 | + model = modalService.getModel(writeRole.getModelId()); |
| 114 | } | 114 | } |
| 115 | if (model == null) { | 115 | if (model == null) { |
| 116 | - model = chatModalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType()); | 116 | + model = modalService.getRequiredDefaultModel(AiModelTypeEnum.CHAT.getType()); |
| 117 | } | 117 | } |
| 118 | Assert.notNull(model, "[AI] 获取不到模型"); | 118 | Assert.notNull(model, "[AI] 获取不到模型"); |
| 119 | return model; | 119 | return model; |
yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/image/OpenAiImageModelTests.java
| @@ -5,13 +5,9 @@ import org.junit.jupiter.api.Test; | @@ -5,13 +5,9 @@ import org.junit.jupiter.api.Test; | ||
| 5 | import org.springframework.ai.image.ImageOptions; | 5 | import org.springframework.ai.image.ImageOptions; |
| 6 | import org.springframework.ai.image.ImagePrompt; | 6 | import org.springframework.ai.image.ImagePrompt; |
| 7 | import org.springframework.ai.image.ImageResponse; | 7 | import org.springframework.ai.image.ImageResponse; |
| 8 | -import org.springframework.ai.openai.OpenAiChatModel; | ||
| 9 | -import org.springframework.ai.openai.OpenAiChatOptions; | ||
| 10 | import org.springframework.ai.openai.OpenAiImageModel; | 8 | import org.springframework.ai.openai.OpenAiImageModel; |
| 11 | import org.springframework.ai.openai.OpenAiImageOptions; | 9 | import org.springframework.ai.openai.OpenAiImageOptions; |
| 12 | -import org.springframework.ai.openai.api.OpenAiApi; | ||
| 13 | import org.springframework.ai.openai.api.OpenAiImageApi; | 10 | import org.springframework.ai.openai.api.OpenAiImageApi; |
| 14 | -import org.springframework.web.client.RestClient; | ||
| 15 | 11 | ||
| 16 | /** | 12 | /** |
| 17 | * {@link OpenAiImageModel} 集成测试类 | 13 | * {@link OpenAiImageModel} 集成测试类 |