Commit ab0a49a1a7aec7b35b49166a076eb4288e66bb1f

Authored by cherishsince
1 parent 80787d1d

【优化】Midjourney 自动配置,增加 messageHanlder

yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/config/YudaoAiAutoConfiguration.java
@@ -15,11 +15,15 @@ import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageApi; @@ -15,11 +15,15 @@ import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageApi;
15 import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageClient; 15 import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageClient;
16 import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageOptions; 16 import cn.iocoder.yudao.framework.ai.imageopenai.OpenAiImageOptions;
17 import cn.iocoder.yudao.framework.ai.midjourney.MidjourneyConfig; 17 import cn.iocoder.yudao.framework.ai.midjourney.MidjourneyConfig;
  18 +import cn.iocoder.yudao.framework.ai.midjourney.MidjourneyMessage;
18 import cn.iocoder.yudao.framework.ai.midjourney.api.MidjourneyInteractionsApi; 19 import cn.iocoder.yudao.framework.ai.midjourney.api.MidjourneyInteractionsApi;
  20 +import cn.iocoder.yudao.framework.ai.midjourney.webSocket.MidjourneyMessageHandler;
19 import cn.iocoder.yudao.framework.ai.midjourney.webSocket.MidjourneyWebSocketStarter; 21 import cn.iocoder.yudao.framework.ai.midjourney.webSocket.MidjourneyWebSocketStarter;
20 import cn.iocoder.yudao.framework.ai.midjourney.webSocket.listener.MidjourneyMessageListener; 22 import cn.iocoder.yudao.framework.ai.midjourney.webSocket.listener.MidjourneyMessageListener;
  23 +import lombok.extern.slf4j.Slf4j;
21 import org.jetbrains.annotations.NotNull; 24 import org.jetbrains.annotations.NotNull;
22 import org.springframework.boot.autoconfigure.AutoConfiguration; 25 import org.springframework.boot.autoconfigure.AutoConfiguration;
  26 +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
23 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 27 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
24 import org.springframework.boot.context.properties.EnableConfigurationProperties; 28 import org.springframework.boot.context.properties.EnableConfigurationProperties;
25 import org.springframework.context.ApplicationContext; 29 import org.springframework.context.ApplicationContext;
@@ -37,6 +41,7 @@ import java.util.Map; @@ -37,6 +41,7 @@ import java.util.Map;
37 * @time 2024/4/12 16:29 41 * @time 2024/4/12 16:29
38 * @since 1.0 42 * @since 1.0
39 */ 43 */
  44 +@Slf4j
40 @AutoConfiguration 45 @AutoConfiguration
41 @EnableConfigurationProperties(YudaoAiProperties.class) 46 @EnableConfigurationProperties(YudaoAiProperties.class)
42 public class YudaoAiAutoConfiguration { 47 public class YudaoAiAutoConfiguration {
@@ -117,14 +122,28 @@ public class YudaoAiAutoConfiguration { @@ -117,14 +122,28 @@ public class YudaoAiAutoConfiguration {
117 } 122 }
118 123
119 @Bean 124 @Bean
  125 + @ConditionalOnMissingBean(value = MidjourneyMessageHandler.class)
  126 + public MidjourneyMessageHandler defaultMidjourneyMessageHandler() {
  127 + // 如果没有实现 MidjourneyMessageHandler 默认注入一个
  128 + return new MidjourneyMessageHandler() {
  129 + @Override
  130 + public void messageHandler(MidjourneyMessage midjourneyMessage) {
  131 + log.info("default midjourney message: {}", midjourneyMessage);
  132 + }
  133 + };
  134 + }
  135 +
  136 + @Bean
120 @ConditionalOnProperty(value = "yudao.ai.midjourney.enable", havingValue = "true") 137 @ConditionalOnProperty(value = "yudao.ai.midjourney.enable", havingValue = "true")
121 - public MidjourneyWebSocketStarter midjourneyWebSocketStarter(ApplicationContext applicationContext, YudaoAiProperties yudaoAiProperties) { 138 + public MidjourneyWebSocketStarter midjourneyWebSocketStarter(ApplicationContext applicationContext,
  139 + MidjourneyMessageHandler midjourneyMessageHandler,
  140 + YudaoAiProperties yudaoAiProperties) {
122 // 获取 midjourneyProperties 141 // 获取 midjourneyProperties
123 YudaoAiProperties.MidjourneyProperties midjourneyProperties = yudaoAiProperties.getMidjourney(); 142 YudaoAiProperties.MidjourneyProperties midjourneyProperties = yudaoAiProperties.getMidjourney();
124 // 获取 midjourneyConfig 143 // 获取 midjourneyConfig
125 MidjourneyConfig midjourneyConfig = getMidjourneyConfig(applicationContext, midjourneyProperties); 144 MidjourneyConfig midjourneyConfig = getMidjourneyConfig(applicationContext, midjourneyProperties);
126 // 创建 socket messageListener 145 // 创建 socket messageListener
127 - MidjourneyMessageListener messageListener = new MidjourneyMessageListener(midjourneyConfig); 146 + MidjourneyMessageListener messageListener = new MidjourneyMessageListener(midjourneyConfig, midjourneyMessageHandler);
128 // 创建 MidjourneyWebSocketStarter 147 // 创建 MidjourneyWebSocketStarter
129 return new MidjourneyWebSocketStarter(midjourneyProperties.getWssUrl(), null, midjourneyConfig, messageListener); 148 return new MidjourneyWebSocketStarter(midjourneyProperties.getWssUrl(), null, midjourneyConfig, messageListener);
130 } 149 }