Commit ca0024988caefc33b4e353db16227a6ef3b7e471

Authored by cherishsince
1 parent a34d9259

【优化】模型enum统一交 model

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 }
... ...