package com.iailab.framework.ai.core.factory; import com.iailab.framework.ai.core.enums.AiPlatformEnum; import com.iailab.framework.ai.core.model.midjourney.api.MidjourneyApi; import com.iailab.framework.ai.core.model.suno.api.SunoApi; import org.springframework.ai.chat.model.ChatModel; import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.image.ImageModel; import org.springframework.ai.vectorstore.VectorStore; import java.util.Map; /** * AI Model 模型工厂的接口类 * * @author fansili */ public interface AiModelFactory { /** * 基于指定配置,获得 ChatModel 对象 * * 如果不存在,则进行创建 * * @param platform 平台 * @param apiKey API KEY * @param url API URL * @return ChatModel 对象 */ ChatModel getOrCreateChatModel(AiPlatformEnum platform, String apiKey, String url); /** * 基于默认配置,获得 ChatModel 对象 * * 默认配置,指的是在 application.yaml 配置文件中的 spring.ai 相关的配置 * * @param platform 平台 * @return ChatModel 对象 */ ChatModel getDefaultChatModel(AiPlatformEnum platform); /** * 基于默认配置,获得 ImageModel 对象 * * 默认配置,指的是在 application.yaml 配置文件中的 spring.ai 相关的配置 * * @param platform 平台 * @return ImageModel 对象 */ ImageModel getDefaultImageModel(AiPlatformEnum platform); /** * 基于指定配置,获得 ImageModel 对象 * * 如果不存在,则进行创建 * * @param platform 平台 * @param apiKey API KEY * @param url API URL * @return ImageModel 对象 */ ImageModel getOrCreateImageModel(AiPlatformEnum platform, String apiKey, String url); /** * 基于指定配置,获得 MidjourneyApi 对象 * * 如果不存在,则进行创建 * * @param apiKey API KEY * @param url API URL * @return MidjourneyApi 对象 */ MidjourneyApi getOrCreateMidjourneyApi(String apiKey, String url); /** * 基于指定配置,获得 SunoApi 对象 * * 如果不存在,则进行创建 * * @param apiKey API KEY * @param url API URL * @return SunoApi 对象 */ SunoApi getOrCreateSunoApi(String apiKey, String url); /** * 基于指定配置,获得 EmbeddingModel 对象 * * 如果不存在,则进行创建 * * @param platform 平台 * @param apiKey API KEY * @param url API URL * @param model 模型 * @return ChatModel 对象 */ EmbeddingModel getOrCreateEmbeddingModel(AiPlatformEnum platform, String apiKey, String url, String model); /** * 基于指定配置,获得 VectorStore 对象 * * 如果不存在,则进行创建 * * @param type 向量存储类型 * @param embeddingModel 向量模型 * @param metadataFields 元数据字段 * @return VectorStore 对象 */ VectorStore getOrCreateVectorStore(Class type, EmbeddingModel embeddingModel, Map> metadataFields); }