Commit 433e91da8e0d9b683e7375a2668e8c4b01b5472f

Authored by YunaiV
1 parent 1c9c9790

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

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