All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.engine.impl.model.KServeImageEmbedEngine Maven / Gradle / Ivy

The newest version!
package prerna.engine.impl.model;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.json.JSONObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import prerna.engine.api.ModelTypeEnum;
import prerna.engine.impl.model.responses.EmbeddingsModelEngineResponse;
import prerna.om.Insight;

public class KServeImageEmbedEngine extends AbstractRemoteModelEngine {
	
	private static final Logger classLogger = LogManager.getLogger(KServeImageEmbedEngine.class);
	
	@Override
	public EmbeddingsModelEngineResponse embeddingsCall(List imagesToEmbed, Insight insight, Map parameters) {
		classLogger.debug("Handling KServeImageEmbed Request..");
		
		JSONObject payload = new JSONObject();
		
		payload.put("image", imagesToEmbed);
		
	    if (parameters != null && parameters.containsKey("pooling_strategy")) {
	        String poolingStrategy = (String) parameters.get("pooling_strategy");
	        payload.put("pooling_strategy", poolingStrategy);
	    }
	    
		classLogger.debug("KServeVision embeddingsCall payload: {}", payload.toString(2));

		try {
            JSONObject modelResponse = makeModelRequest(payload);
            if (modelResponse != null) {
                return EmbeddingsModelEngineResponse.fromJson(modelResponse);
            } else {
                classLogger.error("Received null response from model");
                List> emptyEmbeddings = new ArrayList<>();
                return new EmbeddingsModelEngineResponse(emptyEmbeddings, 0, 0);
            }
		} catch (Exception e) {
            classLogger.error("Error making model request", e);
            List> emptyEmbeddings = new ArrayList<>();
            return new EmbeddingsModelEngineResponse(emptyEmbeddings, 0, 0);
        }
	}
	
	@Override
	public EmbeddingsModelEngineResponse imageEmbeddingsCall(List imagesToEmbed, Insight insight, Map parameters) {
		classLogger.debug("Handling KServeImageEmbed Request..");
		
		JSONObject payload = new JSONObject();
		
		payload.put("image", imagesToEmbed);
		
	    if (parameters != null && parameters.containsKey("pooling_strategy")) {
	        String poolingStrategy = (String) parameters.get("pooling_strategy");
	        payload.put("pooling_strategy", poolingStrategy);
	    }
	    
		classLogger.debug("KServeVision embeddingsCall payload: {}", payload.toString(2));

		try {
            JSONObject modelResponse = makeModelRequest(payload);
            if (modelResponse != null) {
                return EmbeddingsModelEngineResponse.fromJson(modelResponse);
            } else {
                classLogger.error("Received null response from model");
                List> emptyEmbeddings = new ArrayList<>();
                return new EmbeddingsModelEngineResponse(emptyEmbeddings, 0, 0);
            }
		} catch (Exception e) {
            classLogger.error("Error making model request", e);
            List> emptyEmbeddings = new ArrayList<>();
            return new EmbeddingsModelEngineResponse(emptyEmbeddings, 0, 0);
        }
	}
	@Override
	public ModelTypeEnum getModelType() {
		return ModelTypeEnum.KSERVE_IMAGE_EMBED;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy