Commit 0faba44acf890d1f66851845de03db1bfded28fc
1 parent
347824c9
【代码评审】AI:Suno 音乐的 review
Showing
4 changed files
with
14 additions
and
4 deletions
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