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

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

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

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.AskStringModelEngineResponse;
import prerna.om.Insight;

public class KServeVisionEngine extends AbstractRemoteModelEngine {
	
	private static final Logger classLogger = LogManager.getLogger(KServeVisionEngine.class);
	
	@Override
	public AskStringModelEngineResponse askCall(String question, Object fullPrompt, String context, Insight insight, Map hyperParameters) {
		classLogger.debug("Handling KServeVision Request..");
		
		JSONObject payload = new JSONObject();
		
		// Vision models require images in the payload..
	    if (hyperParameters != null && hyperParameters.containsKey("image_url")) {
	        String imageUrl = (String) hyperParameters.get("image_url");
	        payload.put("image", imageUrl);
	    } else {
	        classLogger.warn("No image_url found in hyperParameters");
	        AskStringModelEngineResponse response = new AskStringModelEngineResponse("Please provide an image parameter.", 0, 0);
	        return response;
	    }
		
		payload.put("text", question);
		
		classLogger.debug("KServeVision askCall payload: {}", payload.toString(2));
		
		try {
            JSONObject modelResponse = makeModelRequest(payload);
            if (modelResponse != null) {
                return AskStringModelEngineResponse.fromJson(modelResponse);
            } else {
                classLogger.error("Received null response from model");
                return new AskStringModelEngineResponse("Error processing image.", 0, 0);
            }
		} catch (Exception e) {
            classLogger.error("Error making model request", e);
            return new AskStringModelEngineResponse("An error occurred while processing the request: " + e.getMessage(), 0, 10);
        }
	}
	
	@Override
	public ModelTypeEnum getModelType() {
		return ModelTypeEnum.KSERVE_VISION;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy