diff --git a/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/suno/api/SunoApi.java b/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/suno/api/SunoApi.java index de33635f7..81cc654fb 100644 --- a/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/suno/api/SunoApi.java +++ b/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 { .block(); } - public List chatCompletion(String prompt) { - return this.webClient.post() - .uri("/v1/chat/completions") - .body(Mono.just(new MusicGenerateRequest(prompt)), MusicGenerateRequest.class) - .retrieve() - .onStatus(STATUS_PREDICATE, EXCEPTION_FUNCTION.apply(prompt)) - .bodyToMono(new ParameterizedTypeReference>() { - }) - .block(); - } - public LyricsData generateLyrics(String prompt) { return this.webClient.post() .uri("/api/generate_lyrics") @@ -198,7 +187,7 @@ public class SunoApi { } /** - * Suno API 响应的限额数据,目前每日免费50 + * Suno API 响应的限额数据,目前每日免费 50 */ public record LimitUsageData( @JsonProperty("credits_left") Long creditsLeft, diff --git a/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/music/SunoApiTests.java b/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/music/SunoApiTests.java new file mode 100644 index 000000000..ed8ecc6c6 --- /dev/null +++ b/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/music/SunoApiTests.java @@ -0,0 +1,83 @@ +package cn.iocoder.yudao.framework.ai.music; + +import cn.iocoder.yudao.framework.ai.core.model.suno.api.SunoApi; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.util.List; + +/** + * {@link SunoApi} 集成测试 + * + * @author xiaoxin + */ +public class SunoApiTests { + + private final SunoApi sunoApi = new SunoApi("https://suno-3tah0ycyt-status2xxs-projects.vercel.app"); +// private final SunoApi sunoApi = new SunoApi("http://127.0.0.1:3001"); + + @Test // 描述模式 + @Disabled + public void testGenerate() { + // 准备参数 + SunoApi.MusicGenerateRequest generateRequest = new SunoApi.MusicGenerateRequest( + "happy music", + "chirp-v3-5", + false); + + // 调用方法 + List musicList = sunoApi.generate(generateRequest); + // 打印结果 + System.out.println(musicList); + } + + @Test // 歌词模式 + @Disabled + public void testCustomGenerate() { + // 准备参数 + SunoApi.MusicGenerateRequest generateRequest = new SunoApi.MusicGenerateRequest( + "创作一首带有轻松吉他旋律的流行歌曲,[verse] 描述夏日海滩的宁静,[chorus] 节奏加快,表达对自由的向往。", + "Happy", + "Happy Song", + "chirp-v3.5", + false, + false); + + // 调用方法 + List musicList = sunoApi.customGenerate(generateRequest); + // 打印结果 + System.out.println(musicList); + } + + @Test + @Disabled + public void testGenerateLyrics() { + // 调用方法 + SunoApi.LyricsData lyricsData = sunoApi.generateLyrics("A soothing lullaby"); + // 打印结果 + System.out.println(lyricsData); + } + + @Test + @Disabled + public void testGetMusicList() { + // 准备参数 +// String id = "d460ddda-7c87-4f34-b751-419b08a590ca"; + String id = "584729e5-0fe9-4157-86da-1b4803ff42bf"; + + // 调用方法 + List musicList = sunoApi.getMusicList(List.of(id)); + // 打印结果 + System.out.println(musicList); + } + + @Test + @Disabled + public void testGetLimitUsage() { + // 调用方法 + SunoApi.LimitUsageData limitUsageData = sunoApi.getLimitUsage(); + // 打印结果 + System.out.println(limitUsageData); + } + +} diff --git a/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/music/SunoTests.java b/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/music/SunoTests.java deleted file mode 100644 index f6df134ba..000000000 --- a/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/music/SunoTests.java +++ /dev/null @@ -1,50 +0,0 @@ -package cn.iocoder.yudao.framework.ai.music; - -import cn.iocoder.yudao.framework.ai.core.model.suno.api.SunoApi; -import org.junit.jupiter.api.Test; - -import java.util.List; - -// TODO 芋艿:整理单测 -/** - * @Author xiaoxin - * @Date 2024/5/27 - */ -public class SunoTests { - - private final SunoApi sunoApi = new SunoApi("https://suno-55ishh05u-status2xxs-projects.vercel.app"); -// private final SunoApi sunoApi = new SunoApi("http://127.0.0.1:3001"); - - @Test - public void selectById() { - System.out.println(sunoApi.getMusicList(List.of("d460ddda-7c87-4f34-b751-419b08a590ca,ff90ea66-49cd-4fd2-b44c-44267dfd5551"))); - } - - @Test - public void generate() { - List generate = sunoApi.generate(new SunoApi.MusicGenerateRequest("创作一首带有轻松吉他旋律的流行歌曲,[verse] 描述夏日海滩的宁静,[chorus] 节奏加快,表达对自由的向往。")); - System.out.println(generate); - } - - - @Test - public void doChatCompletion() { - List generate = sunoApi.chatCompletion("创作一首带有轻松吉他旋律的流行歌曲,[verse] 描述夏日海滩的宁静,[chorus] 节奏加快,表达对自由的向往。"); - System.out.println(generate); - } - - - @Test - public void generateLyrics() { - SunoApi.LyricsData lyricsData = sunoApi.generateLyrics("A soothing lullaby"); - System.out.println(lyricsData); - } - - - @Test - public void selectLimit() { - SunoApi.LimitUsageData limitUsageData = sunoApi.getLimitUsage(); - System.out.println(limitUsageData); - } - -}