diff --git a/manifests/hermione-deployment.yaml b/manifests/hermione-deployment.yaml index 80f9da4..9ae12c5 100644 --- a/manifests/hermione-deployment.yaml +++ b/manifests/hermione-deployment.yaml @@ -21,5 +21,7 @@ spec: name: olympus-db-shared-cfg - configMapRef: name: olympus-common-shared-cfg + - configMapRef: + name: olympus-ai-shared-cfg resources: {} imagePullPolicy: Always \ No newline at end of file diff --git a/src/main/java/com/olympus/hermione/services/ApplicationBrowserService.java b/src/main/java/com/olympus/hermione/services/ApplicationBrowserService.java index c2a2153..23d7345 100644 --- a/src/main/java/com/olympus/hermione/services/ApplicationBrowserService.java +++ b/src/main/java/com/olympus/hermione/services/ApplicationBrowserService.java @@ -51,21 +51,17 @@ public class ApplicationBrowserService { } public ResponseEntity getProgressRev(String processId) { - logger.info("getProgressRev function:"); - ResponseEntity responseEntity = null; + ResponseEntity responseEntity = null; - try { - // Chiama il metodo getProcessStatus e memorizza il risultato - responseEntity = javaREModule.getProcessStatus(processId); + try { + // Chiama il metodo getProcessStatus e memorizza il risultato + responseEntity = javaREModule.getProcessStatus(processId); + } catch (Exception e) { + // In caso di eccezione + logger.error("Exception in getProgressRev: {}", e.getMessage()); + } - } catch (Exception e) { - // In caso di eccezione - logger.error("Exception in getProgressRev: {}", e.getMessage()); + return responseEntity; } - - return responseEntity; -} - - -} +} \ No newline at end of file diff --git a/src/main/java/com/olympus/hermione/services/ApplicationService.java b/src/main/java/com/olympus/hermione/services/ApplicationService.java index 0d320ed..3201f48 100644 --- a/src/main/java/com/olympus/hermione/services/ApplicationService.java +++ b/src/main/java/com/olympus/hermione/services/ApplicationService.java @@ -8,10 +8,8 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import com.olympus.hermione.repository.ApplicationRepository; -import com.olympus.hermione.repository.ProjectRepository; import com.olympus.hermione.security.entity.User; import com.olympus.model.Application; -import com.olympus.model.Project; import java.util.List; @@ -27,19 +25,9 @@ public class ApplicationService { List lstApp = null; User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); - // lstApp = appRepo.findByProjectId(principal.getSelectedProject()); - - //List objectIds = convertToObjectIdList(principal.getSelected_progect()); - - //List lstProject = projectRepo.findAllById(objectIds); logger.info("getListProjectByIds function:"); - /* Application all = new Application(); - all.setFE_name("ALL"); - all.setInternal_name("ALL"); - all.setId(new ObjectId("ALL")); - lstApp.add(all);*/ return lstApp; diff --git a/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java b/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java index 05a421d..58e4942 100644 --- a/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java +++ b/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java @@ -142,7 +142,7 @@ public class ScenarioExecutionService { scenarioExecution.setScenario(scenario); } - chatModel = createChatModel(aiModel); + ChatModel chatModel = createChatModel(aiModel); scenarioExecutionRepository.save(scenarioExecution); @@ -177,17 +177,14 @@ public class ScenarioExecutionService { executeScenarioStep(startStep, scenarioExecution); Long usedTokens = (scenarioExecution.getUsedTokens() != null) ? scenarioExecution.getUsedTokens() : Long.valueOf(0); - scenarioExecution.setUsedTokens(usedTokens); - scenarioExecutionRepository.save(scenarioExecution); - while (scenarioExecution.getNextStepId()!=null) { ScenarioStep step = steps.stream().filter(s -> s.getStepId().equals(scenarioExecution.getNextStepId())).findFirst().orElse(null); executeScenarioStep(step, scenarioExecution); if (scenarioExecution.getUsedTokens() != null && scenarioExecution.getUsedTokens() != 0) { usedTokens += scenarioExecution.getUsedTokens(); - scenarioExecution.setUsedTokens(usedTokens); - scenarioExecutionRepository.save(scenarioExecution); + + scenarioExecution.setUsedTokens(Long.valueOf(0)); //resetting value for next step if is not an AI step } if(scenarioExecution.getLatestStepStatus() != null && scenarioExecution.getLatestStepStatus().equals("ERROR")){ @@ -196,6 +193,7 @@ public class ScenarioExecutionService { } } + scenarioExecution.setUsedTokens(usedTokens); scenarioExecution.setEndDate(new java.util.Date()); scenarioExecutionRepository.save(scenarioExecution); } diff --git a/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java b/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java index 1a959fa..d3d9d70 100644 --- a/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java +++ b/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java @@ -1,21 +1,17 @@ package com.olympus.hermione.stepSolvers; -import org.slf4j.LoggerFactory; -import org.springframework.ai.azure.openai.metadata.AzureOpenAiUsage; -import org.springframework.ai.chat.client.ChatClient.CallResponseSpec; -import org.springframework.ai.chat.messages.Message; -import org.springframework.ai.chat.messages.SystemMessage; -import org.springframework.ai.chat.messages.UserMessage; -import org.springframework.ai.chat.metadata.Usage; -import org.springframework.ai.chat.model.ChatResponse; - +import ch.qos.logback.classic.Logger; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.olympus.hermione.dto.aientity.CiaOutputEntity; import com.olympus.hermione.models.ScenarioExecution; import com.olympus.hermione.utility.AttributeParser; - -import ch.qos.logback.classic.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.ai.chat.client.ChatClient.CallResponseSpec; +import org.springframework.ai.chat.messages.Message; +import org.springframework.ai.chat.messages.SystemMessage; +import org.springframework.ai.chat.messages.UserMessage; +import org.springframework.ai.chat.metadata.Usage; public class AdvancedAIPromptSolver extends StepSolver { @@ -65,49 +61,17 @@ public class AdvancedAIPromptSolver extends StepSolver { loadParameters(); String userText = this.qai_user_input; - - CallResponseSpec resp=null; + Message userMessage = new UserMessage(userText); + Message systemMessage = new SystemMessage(this.qai_system_prompt_template); - - if( chatModel.getDefaultOptions().getModel().contains("o1-") ){ - //Non funziona - logger.info("Using o1- model => " + chatModel.getDefaultOptions().getModel()); - - String completePrompt = this.qai_system_prompt_template + userText; - - resp = chatClient.prompt() - .messages(new UserMessage(completePrompt)) - .advisors(advisor -> advisor - .param("chat_memory_conversation_id", this.scenarioExecution.getId()+this.qai_custom_memory_id) - .param("chat_memory_response_size", 100)) - .call(); - - }else{ - logger.info("Using standard model=> " + chatModel.getDefaultOptions().getModel()); - - Message userMessage = new UserMessage(userText); - Message systemMessage = new SystemMessage(this.qai_system_prompt_template); - - resp = chatClient.prompt() - .messages(userMessage,systemMessage) - .advisors(advisor -> advisor - .param("chat_memory_conversation_id", this.scenarioExecution.getId()+this.qai_custom_memory_id) - .param("chat_memory_response_size", 100)) - .call(); - } - - - - Usage usage = resp.chatResponse().getMetadata().getUsage(); - - if (usage != null) { - Long usedTokens = usage.getTotalTokens(); - this.scenarioExecution.setUsedTokens(usedTokens); - } else { - logger.info("Token usage information is not available."); - } - + CallResponseSpec resp = chatClient.prompt() + .messages(userMessage,systemMessage) + .advisors(advisor -> advisor + .param("chat_memory_conversation_id", this.scenarioExecution.getId()+this.qai_custom_memory_id) + .param("chat_memory_response_size", 100)) + .call(); + if(qai_output_entityType!=null && qai_output_entityType.equals("CiaOutputEntity")){ logger.info("Output is of type CiaOutputEntity"); @@ -125,6 +89,14 @@ public class AdvancedAIPromptSolver extends StepSolver { String output = resp.content(); this.scenarioExecution.getExecSharedMap().put(this.qai_output_variable, output); } + + Usage usage = resp.chatResponse().getMetadata().getUsage(); + if (usage != null) { + Long usedTokens = usage.getTotalTokens(); + this.scenarioExecution.setUsedTokens(usedTokens); + } else { + logger.info("Token usage information is not available."); + } this.scenarioExecution.setNextStepId(this.step.getNextStepId()); diff --git a/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java b/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java index 5ab8ad2..65874b0 100644 --- a/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java +++ b/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java @@ -61,6 +61,8 @@ public class BasicAIPromptSolver extends StepSolver { .messages(userMessage,systemMessage) .call(); + String output = resp.content(); + Usage usage = resp.chatResponse().getMetadata().getUsage(); if (usage != null) { Long usedTokens = usage.getTotalTokens(); @@ -69,7 +71,6 @@ public class BasicAIPromptSolver extends StepSolver { logger.info("Token usage information is not available."); } - String output = resp.content(); this.scenarioExecution.getExecSharedMap().put(this.qai_output_variable, output); this.scenarioExecution.setNextStepId(this.step.getNextStepId()); diff --git a/src/main/java/com/olympus/hermione/stepSolvers/SourceCodeRagSolver.java b/src/main/java/com/olympus/hermione/stepSolvers/SourceCodeRagSolver.java index 61d280b..7d01e4e 100644 --- a/src/main/java/com/olympus/hermione/stepSolvers/SourceCodeRagSolver.java +++ b/src/main/java/com/olympus/hermione/stepSolvers/SourceCodeRagSolver.java @@ -2,18 +2,14 @@ package com.olympus.hermione.stepSolvers; +import ch.qos.logback.classic.Logger; +import com.olympus.dto.CodeRagResponse; +import com.olympus.dto.SimilaritySearchCodeInput; +import com.olympus.hermione.models.ScenarioExecution; +import com.olympus.hermione.utility.AttributeParser; import org.slf4j.LoggerFactory; import org.springframework.cloud.client.ServiceInstance; import org.springframework.web.client.RestTemplate; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; - -import com.olympus.hermione.models.ScenarioExecution; -import com.olympus.hermione.utility.AttributeParser; -import com.olympus.dto.CodeRagResponse; -import com.olympus.dto.SimilaritySearchCodeInput; - -import ch.qos.logback.classic.Logger; public class SourceCodeRagSolver extends StepSolver {