This commit is contained in:
Florinda
2024-10-10 11:13:13 +02:00
17 changed files with 102 additions and 81 deletions

View File

@@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.olympus.hermione.dto.ScenarioExecutionInput;
import com.olympus.hermione.dto.ScenarioOutput;
import com.olympus.models.Scenario;
import com.olympus.hermione.models.Scenario;
import com.olympus.hermione.models.ScenarioExecution;
import com.olympus.hermione.repository.ScenarioRepository;
import com.olympus.hermione.repository.ScenarioExecutionRepository;

View File

@@ -1,16 +0,0 @@
package com.olympus.hermione.dto.external;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CodeRagResponse {
private String fullyQualifiedName;
private String code;
private String description;
private String similarityScore;
private String documentId;
private String codeType;
}

View File

@@ -1,23 +0,0 @@
package com.olympus.hermione.dto.external;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SimilaritySearchCodeInput {
private String query;
private String topK;
private String similarityThreshold;
private String filterExpression;
}
/*
* .withQuery(query)
.withTopK(3)
.withSimilarityThreshold(0.8)
.withFilterExpression(b.eq("doc_type","GeneratedMethodDoc").build())
*/

View File

@@ -0,0 +1,23 @@
package com.olympus.hermione.models;
import java.util.List;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import lombok.Getter;
import lombok.Setter;
@Document(collection = "scenarios")
@Getter @Setter
public class Scenario {
@Id
private String id;
private String name;
private String description;
private String startWithStepId;
private List<ScenarioStep> steps;
private List<ScenarioInputs> inputs;
private boolean useChatMemory=false;
}

View File

@@ -6,7 +6,7 @@ import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import com.olympus.hermione.dto.ScenarioExecutionInput;
import com.olympus.models.Scenario;
import com.olympus.hermione.models.Scenario;
import lombok.Getter;
import lombok.Setter;

View File

@@ -0,0 +1,15 @@
package com.olympus.hermione.models;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ScenarioInputs {
private String name;
private String type;
private String label;
}

View File

@@ -0,0 +1,21 @@
package com.olympus.hermione.models;
import java.util.HashMap;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ScenarioStep {
private String type;
private String description;
private String name;
private int order;
private String stepId;
private String nextStepId;
private HashMap<String,Object> attributes;
}

View File

@@ -0,0 +1,14 @@
package com.olympus.hermione.models;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ScenarioStepAttribute {
private String name;
private String value;
}

View File

@@ -3,7 +3,7 @@ package com.olympus.hermione.repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.olympus.models.Scenario;
import com.olympus.hermione.models.Scenario;
@Repository
public interface ScenarioRepository extends CrudRepository<Scenario, String> {

View File

@@ -20,9 +20,9 @@ import org.springframework.stereotype.Service;
import com.olympus.hermione.dto.ScenarioExecutionInput;
import com.olympus.hermione.dto.ScenarioOutput;
import com.olympus.models.Scenario;
import com.olympus.hermione.models.Scenario;
import com.olympus.hermione.models.ScenarioExecution;
import com.olympus.models.ScenarioStep;
import com.olympus.hermione.models.ScenarioStep;
import com.olympus.hermione.repository.ScenarioExecutionRepository;
import com.olympus.hermione.repository.ScenarioRepository;
import com.olympus.hermione.stepSolvers.AdvancedAIPromptSolver;
@@ -218,7 +218,7 @@ public class ScenarioExecutionService {
scenarioExecutionRepository.save(scenarioExecution);
scenarioOutput.setScenarioExecution_id(scenarioExecution.getId());
scenarioOutput.setStatus("IN_PROGRESS");
scenarioOutput.setStatus("IN_PROGRESS");
}

View File

@@ -13,7 +13,6 @@ import com.olympus.hermione.utility.AttributeParser;
import ch.qos.logback.classic.Logger;
public class AdvancedAIPromptSolver extends StepSolver {
private String qai_system_prompt_template;
@@ -21,6 +20,7 @@ public class AdvancedAIPromptSolver extends StepSolver {
private String qai_output_variable;
private boolean qai_load_graph_schema=false;
private String qai_output_entityType;
private String qai_custom_memory_id;
Logger logger = (Logger) LoggerFactory.getLogger(BasicQueryRagSolver.class);
@@ -46,6 +46,7 @@ public class AdvancedAIPromptSolver extends StepSolver {
this.qai_output_variable = (String) this.step.getAttributes().get("qai_output_variable");
this.qai_output_entityType = (String) this.step.getAttributes().get("qai_output_entityType");
this.qai_custom_memory_id = (String) this.step.getAttributes().get("qai_custom_memory_id");
//TODO: Add memory ID attribute to have the possibility of multiple conversations
}
@@ -66,7 +67,8 @@ public class AdvancedAIPromptSolver extends StepSolver {
CallResponseSpec resp = chatClient.prompt()
.messages(userMessage,systemMessage)
.advisors(advisor -> advisor.param("chat_memory_conversation_id", this.scenarioExecution.getId())
.advisors(advisor -> advisor
.param("chat_memory_conversation_id", this.scenarioExecution.getId()+this.qai_custom_memory_id)
.param("chat_memory_response_size", 100))
.call();

View File

@@ -2,6 +2,7 @@ package com.olympus.hermione.stepSolvers;
import java.util.List;
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;
@@ -10,7 +11,6 @@ import org.springframework.ai.chat.prompt.Prompt;
import com.olympus.hermione.models.ScenarioExecution;
import com.olympus.hermione.utility.AttributeParser;
import ch.qos.logback.classic.Logger;
public class BasicAIPromptSolver extends StepSolver {
@@ -56,12 +56,11 @@ public class BasicAIPromptSolver extends StepSolver {
Message userMessage = new UserMessage(this.qai_user_input);
Message systemMessage = new SystemMessage(this.qai_system_prompt_template);
Prompt prompt = new Prompt(List.of(userMessage, systemMessage));
List<Generation> response = chatModel.call(prompt).getResults();
String output = response.get(0).getOutput().getContent();
CallResponseSpec resp = chatClient.prompt()
.messages(userMessage,systemMessage)
.call();
String output = resp.content();
this.scenarioExecution.getExecSharedMap().put(this.qai_output_variable, output);
this.scenarioExecution.setNextStepId(this.step.getNextStepId());

View File

@@ -7,10 +7,11 @@ 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.dto.external.CodeRagResponse;
import com.olympus.hermione.dto.external.SimilaritySearchCodeInput;
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;

View File

@@ -9,7 +9,7 @@ import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import com.olympus.hermione.models.ScenarioExecution;
import com.olympus.models.ScenarioStep;
import com.olympus.hermione.models.ScenarioStep;
import com.olympus.hermione.services.Neo4JUitilityService;
public class StepSolver {