package com.seer.teach.ai.client.model;

import com.seer.teach.ai.client.model.config.ModelConfig;
import org.springframework.ai.audio.tts.TextToSpeechModel;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.image.ImageModel;
import org.springframework.stereotype.Service;

import java.util.Map;
import java.util.Optional;

/**
 *
 * @author Captain
 * @since 2025-12-25
 */
@Service
public interface AiModelClient {

    String getPlatformName();

    /**
     * 获取聊天模型
     *
     * @param modelConfig 模型配置
     * @return 大语言模型实例的Optional包装
     */
    default Optional<ChatModel> createChatModel(ModelConfig modelConfig){
        return Optional.empty();
    }

    default Optional<ChatOptions> createChatOptions(Map<String, Object> options){
        return Optional.empty();
    }

    /**
     * 获取图像模型
     */
    default Optional<ImageModel> createImageModel(ModelConfig modelConfig){
        return Optional.empty();
    }
    
    /**
     * 获取文本转语音模型（Text To Speech Model）
     * 用于将文本转换为语音输出，支持多种平台
     * 
     * @param modelConfig 模型配置
     * @return 文本转语音模型实例的Optional包装
     */
    default Optional<TextToSpeechModel> createTextToSpeechModel(ModelConfig modelConfig) {
        return Optional.empty();
    }
    
    /**
     * 获取嵌入模型（Embedding Model）
     * 用于将文本转换为向量表示，支持多种平台
     * 
     * @param modelConfig 模型配置
     * @return 嵌入模型实例的Optional包装
     */
    default Optional<EmbeddingModel> createEmbeddingModel(ModelConfig modelConfig) {
        return Optional.empty();
    }
}