Commit 782f10851694022fb9f21d9fe0c599e7dd42b0db

Authored by cherishsince
2 parents 20addff4 0faba44a

Merge remote-tracking branch 'origin/master-jdk21-ai' into master-jdk21-ai

yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/config/YudaoAiAutoConfiguration.java
... ... @@ -151,7 +151,6 @@ public class YudaoAiAutoConfiguration {
151 151 @Bean
152 152 @ConditionalOnProperty(value = "yudao.ai.suno.enable", havingValue = "true")
153 153 public SunoApi sunoApi(YudaoAiProperties yudaoAiProperties) {
154   - // 创建 sunoApi
155 154 return new SunoApi(new SunoConfig(yudaoAiProperties.getSuno().getToken()));
156 155 }
157 156  
... ...
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/config/YudaoAiProperties.java
... ... @@ -137,12 +137,15 @@ public class YudaoAiProperties {
137 137 }
138 138  
139 139 @Data
140   - @Accessors(chain = true)
  140 + @Accessors(chain = true) // TODO @xiaoxin:可以去掉这个,默认全局已经开启
141 141 public static class SunoProperties {
  142 +
142 143 private boolean enable = false;
143 144 /**
144 145 * token
145 146 */
146 147 private String token;
  148 +
147 149 }
  150 +
148 151 }
... ...
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/suno/api/SunoApi.java
1 1 package cn.iocoder.yudao.framework.ai.core.model.suno.api;
2 2  
3   -
4 3 import cn.iocoder.yudao.framework.ai.core.model.suno.SunoConfig;
5 4 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
6 5 import com.fasterxml.jackson.annotation.JsonInclude;
... ... @@ -14,6 +13,7 @@ import java.io.IOException;
14 13 import java.util.List;
15 14 import java.util.concurrent.TimeUnit;
16 15  
  16 +// TODO @xiaoxin:类注释
17 17 /**
18 18 * @Author xiaoxin
19 19 * @Date 2024/5/27
... ... @@ -21,13 +21,17 @@ import java.util.concurrent.TimeUnit;
21 21 @Slf4j
22 22 public class SunoApi {
23 23  
  24 + // TODO @xiaoxin:APPLICATION_JSON、TOKEN_PREFIX 看看 spring 有没自带的这 2 个枚举哈。变量越少越好
24 25 public static final String APPLICATION_JSON = "application/json";
25 26 public static final String TOKEN_PREFIX = "Bearer ";
26 27 public static final String API_URL = "https://api.acedata.cloud/suno/audios";
  28 +
27 29 private static final int READ_TIMEOUT = 160; // 连接超时时间(秒),音乐生成时间较长,设置为 160s,后续可做callback
28   - private final OkHttpClient client;
29 30  
  31 + // TODO @xiaoxin:建议使用 webClient 对接。参考 https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java
  32 + private final OkHttpClient client;
30 33  
  34 + // TODO @xiaoxin:sunoConfig => config,简洁一点
31 35 public SunoApi(SunoConfig sunoConfig) {
32 36 this.client = new OkHttpClient().newBuilder().readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
33 37 .addInterceptor(chain -> {
... ... @@ -40,6 +44,7 @@ public class SunoApi {
40 44 .build();
41 45 }
42 46  
  47 + // TODO @芋艿:方法名,要考虑下;
43 48 public SunoResponse musicGen(SunoRequest sunoRequest) {
44 49 Request request = new Request.Builder()
45 50 .url(API_URL)
... ... @@ -57,6 +62,7 @@ public class SunoApi {
57 62 }
58 63 }
59 64  
  65 + // TODO @xiaoxin:看看是不是使用 record 特性,简化下;
60 66  
61 67 /**
62 68 * 请求数据对象,用于生成音乐音频
... ... @@ -96,6 +102,7 @@ public class SunoApi {
96 102 private String callbackUrl;
97 103 }
98 104  
  105 + // TODO @xiaoxin:看看是不是使用 record 特性,简化下;
99 106  
100 107 /**
101 108 * SunoAPI 响应的数据
... ...
yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/suno/SunoTests.java
... ... @@ -28,4 +28,5 @@ public class SunoTests {
28 28 SunoApi.SunoResponse sunoResponse = sunoApi.musicGen(sunoRequest);
29 29 System.out.println(sunoResponse);
30 30 }
  31 +
31 32 }
... ...