This commit is contained in:
Florinda
2024-11-18 11:25:25 +01:00
7 changed files with 47 additions and 94 deletions

View File

@@ -21,5 +21,7 @@ spec:
name: olympus-db-shared-cfg name: olympus-db-shared-cfg
- configMapRef: - configMapRef:
name: olympus-common-shared-cfg name: olympus-common-shared-cfg
- configMapRef:
name: olympus-ai-shared-cfg
resources: {} resources: {}
imagePullPolicy: Always imagePullPolicy: Always

View File

@@ -51,21 +51,17 @@ public class ApplicationBrowserService {
} }
public ResponseEntity<Object> getProgressRev(String processId) { public ResponseEntity<Object> getProgressRev(String processId) {
logger.info("getProgressRev function:");
ResponseEntity<Object> responseEntity = null; ResponseEntity<Object> responseEntity = null;
try { try {
// Chiama il metodo getProcessStatus e memorizza il risultato // Chiama il metodo getProcessStatus e memorizza il risultato
responseEntity = javaREModule.getProcessStatus(processId); responseEntity = javaREModule.getProcessStatus(processId);
} catch (Exception e) {
// In caso di eccezione
logger.error("Exception in getProgressRev: {}", e.getMessage());
}
} catch (Exception e) { return responseEntity;
// In caso di eccezione
logger.error("Exception in getProgressRev: {}", e.getMessage());
} }
}
return responseEntity;
}
}

View File

@@ -8,10 +8,8 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.olympus.hermione.repository.ApplicationRepository; import com.olympus.hermione.repository.ApplicationRepository;
import com.olympus.hermione.repository.ProjectRepository;
import com.olympus.hermione.security.entity.User; import com.olympus.hermione.security.entity.User;
import com.olympus.model.Application; import com.olympus.model.Application;
import com.olympus.model.Project;
import java.util.List; import java.util.List;
@@ -27,19 +25,9 @@ public class ApplicationService {
List<Application> lstApp = null; List<Application> lstApp = null;
User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
// lstApp = appRepo.findByProjectId(principal.getSelectedProject());
//List<ObjectId> objectIds = convertToObjectIdList(principal.getSelected_progect());
//List<Project> lstProject = projectRepo.findAllById(objectIds);
logger.info("getListProjectByIds function:"); 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; return lstApp;

View File

@@ -142,7 +142,7 @@ public class ScenarioExecutionService {
scenarioExecution.setScenario(scenario); scenarioExecution.setScenario(scenario);
} }
chatModel = createChatModel(aiModel); ChatModel chatModel = createChatModel(aiModel);
scenarioExecutionRepository.save(scenarioExecution); scenarioExecutionRepository.save(scenarioExecution);
@@ -177,17 +177,14 @@ public class ScenarioExecutionService {
executeScenarioStep(startStep, scenarioExecution); executeScenarioStep(startStep, scenarioExecution);
Long usedTokens = (scenarioExecution.getUsedTokens() != null) ? scenarioExecution.getUsedTokens() : Long.valueOf(0); Long usedTokens = (scenarioExecution.getUsedTokens() != null) ? scenarioExecution.getUsedTokens() : Long.valueOf(0);
scenarioExecution.setUsedTokens(usedTokens);
scenarioExecutionRepository.save(scenarioExecution);
while (scenarioExecution.getNextStepId()!=null) { while (scenarioExecution.getNextStepId()!=null) {
ScenarioStep step = steps.stream().filter(s -> s.getStepId().equals(scenarioExecution.getNextStepId())).findFirst().orElse(null); ScenarioStep step = steps.stream().filter(s -> s.getStepId().equals(scenarioExecution.getNextStepId())).findFirst().orElse(null);
executeScenarioStep(step, scenarioExecution); executeScenarioStep(step, scenarioExecution);
if (scenarioExecution.getUsedTokens() != null && scenarioExecution.getUsedTokens() != 0) { if (scenarioExecution.getUsedTokens() != null && scenarioExecution.getUsedTokens() != 0) {
usedTokens += scenarioExecution.getUsedTokens(); 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")){ if(scenarioExecution.getLatestStepStatus() != null && scenarioExecution.getLatestStepStatus().equals("ERROR")){
@@ -196,6 +193,7 @@ public class ScenarioExecutionService {
} }
} }
scenarioExecution.setUsedTokens(usedTokens);
scenarioExecution.setEndDate(new java.util.Date()); scenarioExecution.setEndDate(new java.util.Date());
scenarioExecutionRepository.save(scenarioExecution); scenarioExecutionRepository.save(scenarioExecution);
} }

View File

@@ -1,21 +1,17 @@
package com.olympus.hermione.stepSolvers; package com.olympus.hermione.stepSolvers;
import org.slf4j.LoggerFactory; import ch.qos.logback.classic.Logger;
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 com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.olympus.hermione.dto.aientity.CiaOutputEntity; import com.olympus.hermione.dto.aientity.CiaOutputEntity;
import com.olympus.hermione.models.ScenarioExecution; import com.olympus.hermione.models.ScenarioExecution;
import com.olympus.hermione.utility.AttributeParser; import com.olympus.hermione.utility.AttributeParser;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Logger; 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 { public class AdvancedAIPromptSolver extends StepSolver {
@@ -65,49 +61,17 @@ public class AdvancedAIPromptSolver extends StepSolver {
loadParameters(); loadParameters();
String userText = this.qai_user_input; String userText = this.qai_user_input;
CallResponseSpec resp=null; Message userMessage = new UserMessage(userText);
Message systemMessage = new SystemMessage(this.qai_system_prompt_template);
CallResponseSpec resp = chatClient.prompt()
if( chatModel.getDefaultOptions().getModel().contains("o1-") ){ .messages(userMessage,systemMessage)
//Non funziona .advisors(advisor -> advisor
logger.info("Using o1- model => " + chatModel.getDefaultOptions().getModel()); .param("chat_memory_conversation_id", this.scenarioExecution.getId()+this.qai_custom_memory_id)
.param("chat_memory_response_size", 100))
String completePrompt = this.qai_system_prompt_template + userText; .call();
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.");
}
if(qai_output_entityType!=null && qai_output_entityType.equals("CiaOutputEntity")){ if(qai_output_entityType!=null && qai_output_entityType.equals("CiaOutputEntity")){
logger.info("Output is of type CiaOutputEntity"); logger.info("Output is of type CiaOutputEntity");
@@ -125,6 +89,14 @@ public class AdvancedAIPromptSolver extends StepSolver {
String output = resp.content(); String output = resp.content();
this.scenarioExecution.getExecSharedMap().put(this.qai_output_variable, output); 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()); this.scenarioExecution.setNextStepId(this.step.getNextStepId());

View File

@@ -61,6 +61,8 @@ public class BasicAIPromptSolver extends StepSolver {
.messages(userMessage,systemMessage) .messages(userMessage,systemMessage)
.call(); .call();
String output = resp.content();
Usage usage = resp.chatResponse().getMetadata().getUsage(); Usage usage = resp.chatResponse().getMetadata().getUsage();
if (usage != null) { if (usage != null) {
Long usedTokens = usage.getTotalTokens(); Long usedTokens = usage.getTotalTokens();
@@ -69,7 +71,6 @@ public class BasicAIPromptSolver extends StepSolver {
logger.info("Token usage information is not available."); logger.info("Token usage information is not available.");
} }
String output = resp.content();
this.scenarioExecution.getExecSharedMap().put(this.qai_output_variable, output); this.scenarioExecution.getExecSharedMap().put(this.qai_output_variable, output);
this.scenarioExecution.setNextStepId(this.step.getNextStepId()); this.scenarioExecution.setNextStepId(this.step.getNextStepId());

View File

@@ -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.slf4j.LoggerFactory;
import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.ServiceInstance;
import org.springframework.web.client.RestTemplate; 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 { public class SourceCodeRagSolver extends StepSolver {