Merge branch 'master' of https://dev.azure.com/olympusai/Olympus/_git/hermione
This commit is contained in:
@@ -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
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|
||||||
@@ -66,47 +62,15 @@ public class AdvancedAIPromptSolver extends StepSolver {
|
|||||||
|
|
||||||
String userText = this.qai_user_input;
|
String userText = this.qai_user_input;
|
||||||
|
|
||||||
|
Message userMessage = new UserMessage(userText);
|
||||||
|
Message systemMessage = new SystemMessage(this.qai_system_prompt_template);
|
||||||
|
|
||||||
CallResponseSpec resp=null;
|
CallResponseSpec resp = chatClient.prompt()
|
||||||
|
.messages(userMessage,systemMessage)
|
||||||
|
.advisors(advisor -> advisor
|
||||||
if( chatModel.getDefaultOptions().getModel().contains("o1-") ){
|
.param("chat_memory_conversation_id", this.scenarioExecution.getId()+this.qai_custom_memory_id)
|
||||||
//Non funziona
|
.param("chat_memory_response_size", 100))
|
||||||
logger.info("Using o1- model => " + chatModel.getDefaultOptions().getModel());
|
.call();
|
||||||
|
|
||||||
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.");
|
|
||||||
}
|
|
||||||
|
|
||||||
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");
|
||||||
@@ -126,6 +90,14 @@ public class AdvancedAIPromptSolver extends StepSolver {
|
|||||||
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());
|
||||||
|
|
||||||
return this.scenarioExecution;
|
return this.scenarioExecution;
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user