Commit ca0024988caefc33b4e353db16227a6ef3b7e471
1 parent
a34d9259
【优化】模型enum统一交 model
Showing
7 changed files
with
68 additions
and
12 deletions
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/chatqianwen/QianWenChatClient.java
| ... | ... | @@ -100,7 +100,7 @@ public class QianWenChatClient implements ChatClient, StreamingChatClient { |
| 100 | 100 | messageList.add(message); |
| 101 | 101 | }); |
| 102 | 102 | return QwenParam.builder() |
| 103 | - .model(qianWenApi.getQianWenChatModal().getValue()) | |
| 103 | + .model(qianWenApi.getQianWenChatModal().getModel()) | |
| 104 | 104 | .prompt(prompt.getContents()) |
| 105 | 105 | .messages(messageList) |
| 106 | 106 | .maxTokens(chatOptions.getMaxTokens()) | ... | ... |
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/chatqianwen/QianWenChatModal.java
| ... | ... | @@ -34,5 +34,14 @@ public enum QianWenChatModal { |
| 34 | 34 | |
| 35 | 35 | private String name; |
| 36 | 36 | |
| 37 | - private String value; | |
| 37 | + private String model; | |
| 38 | + | |
| 39 | + public static QianWenChatModal valueOfModel(String model) { | |
| 40 | + for (QianWenChatModal itemEnum : QianWenChatModal.values()) { | |
| 41 | + if (itemEnum.getModel().equals(model)) { | |
| 42 | + return itemEnum; | |
| 43 | + } | |
| 44 | + } | |
| 45 | + throw new IllegalArgumentException("Invalid MessageType value: " + model); | |
| 46 | + } | |
| 38 | 47 | } | ... | ... |
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/chatxinghuo/XingHuoChatClient.java
| ... | ... | @@ -114,7 +114,7 @@ public class XingHuoChatClient implements ChatClient, StreamingChatClient { |
| 114 | 114 | // 创建 params |
| 115 | 115 | XingHuoChatCompletionRequest.Parameter.Chat chatParameter = new XingHuoChatCompletionRequest.Parameter.Chat(); |
| 116 | 116 | BeanUtil.copyProperties(xingHuoOptions, chatParameter); |
| 117 | - chatParameter.setDomain(xingHuoOptions.getChatModel().getValue()); | |
| 117 | + chatParameter.setDomain(xingHuoOptions.getChatModel().getModel()); | |
| 118 | 118 | XingHuoChatCompletionRequest.Parameter parameter = new XingHuoChatCompletionRequest.Parameter().setChat(chatParameter); |
| 119 | 119 | // 创建 payload text 信息 |
| 120 | 120 | List<XingHuoChatCompletionRequest.Payload.Message.Text> texts = prompt.getInstructions().stream().map(message -> { | ... | ... |
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/chatxinghuo/XingHuoChatModel.java
| ... | ... | @@ -30,15 +30,24 @@ public enum XingHuoChatModel { |
| 30 | 30 | |
| 31 | 31 | ; |
| 32 | 32 | |
| 33 | - XingHuoChatModel(String name, String value, String uri) { | |
| 33 | + XingHuoChatModel(String name, String model, String uri) { | |
| 34 | 34 | this.name = name; |
| 35 | - this.value = value; | |
| 35 | + this.model = model; | |
| 36 | 36 | this.uri = uri; |
| 37 | 37 | } |
| 38 | 38 | |
| 39 | 39 | private String name; |
| 40 | 40 | |
| 41 | - private String value; | |
| 41 | + private String model; | |
| 42 | 42 | |
| 43 | 43 | private String uri; |
| 44 | + | |
| 45 | + public static XingHuoChatModel valueOfModel(String model) { | |
| 46 | + for (XingHuoChatModel itemEnum : XingHuoChatModel.values()) { | |
| 47 | + if (itemEnum.getModel().equals(model)) { | |
| 48 | + return itemEnum; | |
| 49 | + } | |
| 50 | + } | |
| 51 | + throw new IllegalArgumentException("Invalid MessageType value: " + model); | |
| 52 | + } | |
| 44 | 53 | } | ... | ... |
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/chatyiyan/YiYanChatModel.java
| ... | ... | @@ -25,8 +25,16 @@ public enum YiYanChatModel { |
| 25 | 25 | |
| 26 | 26 | ; |
| 27 | 27 | |
| 28 | - private String value; | |
| 28 | + private String model; | |
| 29 | 29 | |
| 30 | 30 | private String uri; |
| 31 | 31 | |
| 32 | + public static YiYanChatModel valueOfModel(String model) { | |
| 33 | + for (YiYanChatModel itemEnum : YiYanChatModel.values()) { | |
| 34 | + if (itemEnum.getModel().equals(model)) { | |
| 35 | + return itemEnum; | |
| 36 | + } | |
| 37 | + } | |
| 38 | + throw new IllegalArgumentException("Invalid MessageType value: " + model); | |
| 39 | + } | |
| 32 | 40 | } | ... | ... |
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/config/YudaoAiAutoConfiguration.java
| ... | ... | @@ -10,6 +10,9 @@ import cn.iocoder.yudao.framework.ai.chatxinghuo.api.XingHuoApi; |
| 10 | 10 | import cn.iocoder.yudao.framework.ai.chatyiyan.YiYanChatClient; |
| 11 | 11 | import cn.iocoder.yudao.framework.ai.chatyiyan.YiYanOptions; |
| 12 | 12 | import cn.iocoder.yudao.framework.ai.chatyiyan.api.YiYanApi; |
| 13 | +import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageApi; | |
| 14 | +import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageClient; | |
| 15 | +import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageOptions; | |
| 13 | 16 | import org.springframework.boot.autoconfigure.AutoConfiguration; |
| 14 | 17 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| 15 | 18 | import org.springframework.boot.context.properties.EnableConfigurationProperties; |
| ... | ... | @@ -32,7 +35,7 @@ public class YudaoAiAutoConfiguration { |
| 32 | 35 | YudaoAiProperties.XingHuoProperties xingHuoProperties = yudaoAiProperties.getXinghuo(); |
| 33 | 36 | // 转换配置 |
| 34 | 37 | XingHuoOptions xingHuoOptions = new XingHuoOptions(); |
| 35 | - xingHuoOptions.setChatModel(xingHuoProperties.getChatModel()); | |
| 38 | + xingHuoOptions.setChatModel(xingHuoProperties.getModel()); | |
| 36 | 39 | xingHuoOptions.setTopK(xingHuoProperties.getTopK()); |
| 37 | 40 | xingHuoOptions.setTemperature(xingHuoProperties.getTemperature()); |
| 38 | 41 | xingHuoOptions.setMaxTokens(xingHuoProperties.getMaxTokens()); |
| ... | ... | @@ -79,10 +82,24 @@ public class YudaoAiAutoConfiguration { |
| 79 | 82 | new YiYanApi( |
| 80 | 83 | yiYanProperties.getAppKey(), |
| 81 | 84 | yiYanProperties.getSecretKey(), |
| 82 | - yiYanProperties.getChatModel(), | |
| 85 | + yiYanProperties.getModel(), | |
| 83 | 86 | yiYanProperties.getRefreshTokenSecondTime() |
| 84 | 87 | ), |
| 85 | 88 | yiYanOptions |
| 86 | 89 | ); |
| 87 | 90 | } |
| 91 | + | |
| 92 | + | |
| 93 | + @Bean | |
| 94 | + @ConditionalOnProperty(value = "yudao.ai.openAiImage.enable", havingValue = "true") | |
| 95 | + public OpenAiImageClient openAiImageClient(YudaoAiProperties yudaoAiProperties) { | |
| 96 | + YudaoAiProperties.OpenAiImageProperties openAiImageProperties = yudaoAiProperties.getOpenAiImage(); | |
| 97 | + // 创建 client | |
| 98 | + return new OpenAiImageClient( | |
| 99 | + new OpenAiImageApi(openAiImageProperties.getApiKey()), | |
| 100 | + new OpenAiImageOptions() | |
| 101 | + .setModel(openAiImageProperties.getModel()) | |
| 102 | + .setResponseFormat(OpenAiImageOptions.ResponseFormatEnum.URL.getValue()) | |
| 103 | + ); | |
| 104 | + } | |
| 88 | 105 | } |
| 89 | 106 | \ No newline at end of file | ... | ... |
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/config/YudaoAiProperties.java
| ... | ... | @@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.ai.config; |
| 3 | 3 | import cn.iocoder.yudao.framework.ai.AiPlatformEnum; |
| 4 | 4 | import cn.iocoder.yudao.framework.ai.chatxinghuo.XingHuoChatModel; |
| 5 | 5 | import cn.iocoder.yudao.framework.ai.chatyiyan.YiYanChatModel; |
| 6 | +import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageModelEnum; | |
| 6 | 7 | import lombok.Data; |
| 7 | 8 | import lombok.experimental.Accessors; |
| 8 | 9 | import org.springframework.boot.context.properties.ConfigurationProperties; |
| ... | ... | @@ -23,6 +24,7 @@ public class YudaoAiProperties { |
| 23 | 24 | private QianWenProperties qianwen; |
| 24 | 25 | private XingHuoProperties xinghuo; |
| 25 | 26 | private YiYanProperties yiyan; |
| 27 | + private OpenAiImageProperties openAiImage; | |
| 26 | 28 | |
| 27 | 29 | @Data |
| 28 | 30 | @Accessors(chain = true) |
| ... | ... | @@ -64,7 +66,7 @@ public class YudaoAiProperties { |
| 64 | 66 | private String appId; |
| 65 | 67 | private String appKey; |
| 66 | 68 | private String secretKey; |
| 67 | - private XingHuoChatModel chatModel; | |
| 69 | + private XingHuoChatModel model; | |
| 68 | 70 | } |
| 69 | 71 | |
| 70 | 72 | @Data |
| ... | ... | @@ -81,12 +83,23 @@ public class YudaoAiProperties { |
| 81 | 83 | /** |
| 82 | 84 | * 模型 |
| 83 | 85 | */ |
| 84 | - private YiYanChatModel chatModel = YiYanChatModel.ERNIE4_3_5_8K; | |
| 86 | + private YiYanChatModel model = YiYanChatModel.ERNIE4_3_5_8K; | |
| 85 | 87 | /** |
| 86 | 88 | * token 刷新时间(默认 86400 = 24小时) |
| 87 | 89 | */ |
| 88 | 90 | private int refreshTokenSecondTime = 86400; |
| 91 | + } | |
| 89 | 92 | |
| 90 | - private YiYanChatModel model; | |
| 93 | + @Data | |
| 94 | + @Accessors(chain = true) | |
| 95 | + public static class OpenAiImageProperties { | |
| 96 | + /** | |
| 97 | + * api key | |
| 98 | + */ | |
| 99 | + private String apiKey; | |
| 100 | + /** | |
| 101 | + * 模型 | |
| 102 | + */ | |
| 103 | + private OpenAiImageModelEnum model = OpenAiImageModelEnum.DALL_E_2; | |
| 91 | 104 | } |
| 92 | 105 | } | ... | ... |