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

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

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

import java.time.ZonedDateTime;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import prerna.ds.py.PyUtils;
import prerna.engine.api.ModelTypeEnum;
import prerna.engine.impl.model.workers.ModelEngineInferenceLogsWorker;
import prerna.om.Insight;

public class EmbeddedModelEngine extends AbstractPythonModelEngine {
	
	@Override
	public ModelTypeEnum getModelType() {
		return ModelTypeEnum.EMBEDDED;
	}
	
	protected List keywordExtractionCall(Object input, Insight insight, Map parameters) {
		checkSocketStatus();
				
		StringBuilder callMaker = new StringBuilder(varName);
		String inputAsString = PyUtils.determineStringType(input);
		callMaker.append(".keyword_extraction(input = ").append(inputAsString);
		if (parameters != null && !parameters.isEmpty()) {
			callMaker.append(", **").append(PyUtils.determineStringType(parameters));
		}
		callMaker.append(")");
		
		List output = (List) pyt.runSmssWrapperEval(callMaker.toString(), insight);
		return output;
	}
	
	public List keywordExtraction(Object input, Insight insight, Map  parameters) {		
		ZonedDateTime inputTime = ZonedDateTime.now();
		List keywordExtractionResponse = keywordExtractionCall(input, insight, parameters);
		ZonedDateTime outputTime = ZonedDateTime.now();
	
		if (inferenceLogsEnbaled) {
			String messageId = UUID.randomUUID().toString();
			Thread inferenceRecorder = new Thread(new ModelEngineInferenceLogsWorker (
					/*messageId*/messageId,
					/*messageMethod*/"textKeywords", 
					/*engine*/this,
					/*insight*/insight,
					/*context*/null,
					/*prompt*/input + "",
					/*fullPrompt*/null,
					/*promptTokens*/null,
					/*inputTime*/inputTime, 
					/*response*/PyUtils.determineStringType(keywordExtractionResponse),
					/*responseTokens*/null,
					/*outputTime*/outputTime
			));
			inferenceRecorder.start();
		}
 				
		return keywordExtractionResponse;
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy