Commit fa230cea8e4ca46c7c4842563ee11cd029bc42c9

Authored by YunaiV
1 parent 62d5ed83

【代码优化】AI:完善 SunoApiTests 单测,方便大家快速体验

yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/suno/api/SunoApi.java
@@ -68,17 +68,6 @@ public class SunoApi { @@ -68,17 +68,6 @@ public class SunoApi {
68 .block(); 68 .block();
69 } 69 }
70 70
71 - public List<MusicData> chatCompletion(String prompt) {  
72 - return this.webClient.post()  
73 - .uri("/v1/chat/completions")  
74 - .body(Mono.just(new MusicGenerateRequest(prompt)), MusicGenerateRequest.class)  
75 - .retrieve()  
76 - .onStatus(STATUS_PREDICATE, EXCEPTION_FUNCTION.apply(prompt))  
77 - .bodyToMono(new ParameterizedTypeReference<List<MusicData>>() {  
78 - })  
79 - .block();  
80 - }  
81 -  
82 public LyricsData generateLyrics(String prompt) { 71 public LyricsData generateLyrics(String prompt) {
83 return this.webClient.post() 72 return this.webClient.post()
84 .uri("/api/generate_lyrics") 73 .uri("/api/generate_lyrics")
@@ -198,7 +187,7 @@ public class SunoApi { @@ -198,7 +187,7 @@ public class SunoApi {
198 } 187 }
199 188
200 /** 189 /**
201 - * Suno API 响应的限额数据,目前每日免费50 190 + * Suno API 响应的限额数据,目前每日免费 50
202 */ 191 */
203 public record LimitUsageData( 192 public record LimitUsageData(
204 @JsonProperty("credits_left") Long creditsLeft, 193 @JsonProperty("credits_left") Long creditsLeft,
yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/music/SunoApiTests.java 0 → 100644
  1 +package cn.iocoder.yudao.framework.ai.music;
  2 +
  3 +import cn.iocoder.yudao.framework.ai.core.model.suno.api.SunoApi;
  4 +import org.junit.jupiter.api.Disabled;
  5 +import org.junit.jupiter.api.Test;
  6 +
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * {@link SunoApi} 集成测试
  11 + *
  12 + * @author xiaoxin
  13 + */
  14 +public class SunoApiTests {
  15 +
  16 + private final SunoApi sunoApi = new SunoApi("https://suno-3tah0ycyt-status2xxs-projects.vercel.app");
  17 +// private final SunoApi sunoApi = new SunoApi("http://127.0.0.1:3001");
  18 +
  19 + @Test // 描述模式
  20 + @Disabled
  21 + public void testGenerate() {
  22 + // 准备参数
  23 + SunoApi.MusicGenerateRequest generateRequest = new SunoApi.MusicGenerateRequest(
  24 + "happy music",
  25 + "chirp-v3-5",
  26 + false);
  27 +
  28 + // 调用方法
  29 + List<SunoApi.MusicData> musicList = sunoApi.generate(generateRequest);
  30 + // 打印结果
  31 + System.out.println(musicList);
  32 + }
  33 +
  34 + @Test // 歌词模式
  35 + @Disabled
  36 + public void testCustomGenerate() {
  37 + // 准备参数
  38 + SunoApi.MusicGenerateRequest generateRequest = new SunoApi.MusicGenerateRequest(
  39 + "创作一首带有轻松吉他旋律的流行歌曲,[verse] 描述夏日海滩的宁静,[chorus] 节奏加快,表达对自由的向往。",
  40 + "Happy",
  41 + "Happy Song",
  42 + "chirp-v3.5",
  43 + false,
  44 + false);
  45 +
  46 + // 调用方法
  47 + List<SunoApi.MusicData> musicList = sunoApi.customGenerate(generateRequest);
  48 + // 打印结果
  49 + System.out.println(musicList);
  50 + }
  51 +
  52 + @Test
  53 + @Disabled
  54 + public void testGenerateLyrics() {
  55 + // 调用方法
  56 + SunoApi.LyricsData lyricsData = sunoApi.generateLyrics("A soothing lullaby");
  57 + // 打印结果
  58 + System.out.println(lyricsData);
  59 + }
  60 +
  61 + @Test
  62 + @Disabled
  63 + public void testGetMusicList() {
  64 + // 准备参数
  65 +// String id = "d460ddda-7c87-4f34-b751-419b08a590ca";
  66 + String id = "584729e5-0fe9-4157-86da-1b4803ff42bf";
  67 +
  68 + // 调用方法
  69 + List<SunoApi.MusicData> musicList = sunoApi.getMusicList(List.of(id));
  70 + // 打印结果
  71 + System.out.println(musicList);
  72 + }
  73 +
  74 + @Test
  75 + @Disabled
  76 + public void testGetLimitUsage() {
  77 + // 调用方法
  78 + SunoApi.LimitUsageData limitUsageData = sunoApi.getLimitUsage();
  79 + // 打印结果
  80 + System.out.println(limitUsageData);
  81 + }
  82 +
  83 +}
yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/music/SunoTests.java deleted
1 -package cn.iocoder.yudao.framework.ai.music;  
2 -  
3 -import cn.iocoder.yudao.framework.ai.core.model.suno.api.SunoApi;  
4 -import org.junit.jupiter.api.Test;  
5 -  
6 -import java.util.List;  
7 -  
8 -// TODO 芋艿:整理单测  
9 -/**  
10 - * @Author xiaoxin  
11 - * @Date 2024/5/27  
12 - */  
13 -public class SunoTests {  
14 -  
15 - private final SunoApi sunoApi = new SunoApi("https://suno-55ishh05u-status2xxs-projects.vercel.app");  
16 -// private final SunoApi sunoApi = new SunoApi("http://127.0.0.1:3001");  
17 -  
18 - @Test  
19 - public void selectById() {  
20 - System.out.println(sunoApi.getMusicList(List.of("d460ddda-7c87-4f34-b751-419b08a590ca,ff90ea66-49cd-4fd2-b44c-44267dfd5551")));  
21 - }  
22 -  
23 - @Test  
24 - public void generate() {  
25 - List<SunoApi.MusicData> generate = sunoApi.generate(new SunoApi.MusicGenerateRequest("创作一首带有轻松吉他旋律的流行歌曲,[verse] 描述夏日海滩的宁静,[chorus] 节奏加快,表达对自由的向往。"));  
26 - System.out.println(generate);  
27 - }  
28 -  
29 -  
30 - @Test  
31 - public void doChatCompletion() {  
32 - List<SunoApi.MusicData> generate = sunoApi.chatCompletion("创作一首带有轻松吉他旋律的流行歌曲,[verse] 描述夏日海滩的宁静,[chorus] 节奏加快,表达对自由的向往。");  
33 - System.out.println(generate);  
34 - }  
35 -  
36 -  
37 - @Test  
38 - public void generateLyrics() {  
39 - SunoApi.LyricsData lyricsData = sunoApi.generateLyrics("A soothing lullaby");  
40 - System.out.println(lyricsData);  
41 - }  
42 -  
43 -  
44 - @Test  
45 - public void selectLimit() {  
46 - SunoApi.LimitUsageData limitUsageData = sunoApi.getLimitUsage();  
47 - System.out.println(limitUsageData);  
48 - }  
49 -  
50 -}