【新增】AI:绘图(MJ)接入 API KEY 管理

This commit is contained in:
YunaiV
2024-06-29 09:46:44 +08:00
parent 949d5a1815
commit 6225e18f70
9 changed files with 62 additions and 76 deletions

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.framework.ai.core.factory;
import cn.iocoder.yudao.framework.ai.core.enums.AiPlatformEnum;
import cn.iocoder.yudao.framework.ai.core.model.midjourney.api.MidjourneyApi;
import cn.iocoder.yudao.framework.ai.core.model.suno.api.SunoApi;
import org.springframework.ai.chat.StreamingChatClient;
import org.springframework.ai.image.ImageClient;
@ -56,6 +57,17 @@ public interface AiClientFactory {
*/
ImageClient getOrCreateImageClient(AiPlatformEnum platform, String apiKey, String url);
/**
* 基于指定配置,获得 MidjourneyApi 对象
*
* 如果不存在,则进行创建
*
* @param apiKey API KEY
* @param url API URL
* @return MidjourneyApi 对象
*/
MidjourneyApi getOrCreateMidjourneyApi(String apiKey, String url);
/**
* 基于指定配置,获得 SunoApi 对象
*

View File

@ -9,6 +9,7 @@ import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.framework.ai.config.YudaoAiAutoConfiguration;
import cn.iocoder.yudao.framework.ai.config.YudaoAiProperties;
import cn.iocoder.yudao.framework.ai.core.enums.AiPlatformEnum;
import cn.iocoder.yudao.framework.ai.core.model.midjourney.api.MidjourneyApi;
import cn.iocoder.yudao.framework.ai.core.model.suno.api.SunoApi;
import cn.iocoder.yudao.framework.ai.core.model.tongyi.QianWenChatClient;
import cn.iocoder.yudao.framework.ai.core.model.tongyi.QianWenChatModal;
@ -110,9 +111,19 @@ public class AiClientFactoryImpl implements AiClientFactory {
}
}
@Override
public MidjourneyApi getOrCreateMidjourneyApi(String apiKey, String url) {
String cacheKey = buildClientCacheKey(MidjourneyApi.class, AiPlatformEnum.MIDJOURNEY.getPlatform(), apiKey, url);
return Singleton.get(cacheKey, (Func0<MidjourneyApi>) () -> {
YudaoAiProperties.MidjourneyProperties properties = SpringUtil.getBean(YudaoAiProperties.class).getMidjourney();
return new MidjourneyApi(url, apiKey, properties.getNotifyUrl());
});
}
@Override
public SunoApi getOrCreateSunoApi(String apiKey, String url) {
return new SunoApi(url);
String cacheKey = buildClientCacheKey(SunoApi.class, AiPlatformEnum.SUNO.getPlatform(), apiKey, url);
return Singleton.get(cacheKey, (Func0<SunoApi>) () -> new SunoApi(url));
}
private static String buildClientCacheKey(Class<?> clazz, Object... params) {