From 8b0e822b5e30a122f650096921706eb1b1b48790 Mon Sep 17 00:00:00 2001 From: Sumedh Date: Wed, 9 Oct 2024 13:04:19 +0000 Subject: [PATCH 1/4] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 991a8c6..3e3a22b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ build-job: image: maven:3.9.8-amazoncorretto-21-al2023 script: - echo "Building the project..." - - mvn clean install -DskipTests + - mvn clean install -DskipTests -Dmaven.repo.local=/root/.m2/repository artifacts: paths: - target/*.jar From f050d682dbbb5784fad2b2e4ab9292f2ef9cbf38 Mon Sep 17 00:00:00 2001 From: "andrea.terzani" Date: Wed, 9 Oct 2024 17:36:36 +0200 Subject: [PATCH 2/4] working version --- .mvn/wrapper/maven-wrapper.properties | 19 --------------- pom.xml | 14 +++++++---- .../controllers/ScenarioController.java | 2 +- .../dto/external/CodeRagResponse.java | 16 ------------- .../external/SimilaritySearchCodeInput.java | 23 ------------------- .../com/olympus/hermione/models/Scenario.java | 23 +++++++++++++++++++ .../hermione/models/ScenarioExecution.java | 2 +- .../hermione/models/ScenarioInputs.java | 15 ++++++++++++ .../olympus/hermione/models/ScenarioStep.java | 21 +++++++++++++++++ .../models/ScenarioStepAttribute.java | 14 +++++++++++ .../repository/ScenarioRepository.java | 2 +- .../services/ScenarioExecutionService.java | 6 ++--- .../stepSolvers/AdvancedAIPromptSolver.java | 1 - .../stepSolvers/BasicAIPromptSolver.java | 1 - .../stepSolvers/SourceCodeRagSolver.java | 5 ++-- .../hermione/stepSolvers/StepSolver.java | 2 +- 16 files changed, 92 insertions(+), 74 deletions(-) delete mode 100644 .mvn/wrapper/maven-wrapper.properties delete mode 100644 src/main/java/com/olympus/hermione/dto/external/CodeRagResponse.java delete mode 100644 src/main/java/com/olympus/hermione/dto/external/SimilaritySearchCodeInput.java create mode 100644 src/main/java/com/olympus/hermione/models/Scenario.java create mode 100644 src/main/java/com/olympus/hermione/models/ScenarioInputs.java create mode 100644 src/main/java/com/olympus/hermione/models/ScenarioStep.java create mode 100644 src/main/java/com/olympus/hermione/models/ScenarioStepAttribute.java diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index 8f96f52..0000000 --- a/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 -distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.7/apache-maven-3.9.7-bin.zip diff --git a/pom.xml b/pom.xml index c136ddd..0836f53 100644 --- a/pom.xml +++ b/pom.xml @@ -32,11 +32,9 @@ - - com.olympus - olympus-common - 1.0 - + + + org.springframework.boot spring-boot-starter-data-mongodb @@ -115,6 +113,12 @@ 2.8.8 + + com.olympus + olympus-common + 1.0 + + diff --git a/src/main/java/com/olympus/hermione/controllers/ScenarioController.java b/src/main/java/com/olympus/hermione/controllers/ScenarioController.java index ba6df4f..3e62c41 100644 --- a/src/main/java/com/olympus/hermione/controllers/ScenarioController.java +++ b/src/main/java/com/olympus/hermione/controllers/ScenarioController.java @@ -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; diff --git a/src/main/java/com/olympus/hermione/dto/external/CodeRagResponse.java b/src/main/java/com/olympus/hermione/dto/external/CodeRagResponse.java deleted file mode 100644 index 8f74b81..0000000 --- a/src/main/java/com/olympus/hermione/dto/external/CodeRagResponse.java +++ /dev/null @@ -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; -} diff --git a/src/main/java/com/olympus/hermione/dto/external/SimilaritySearchCodeInput.java b/src/main/java/com/olympus/hermione/dto/external/SimilaritySearchCodeInput.java deleted file mode 100644 index 51e069a..0000000 --- a/src/main/java/com/olympus/hermione/dto/external/SimilaritySearchCodeInput.java +++ /dev/null @@ -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()) - */ \ No newline at end of file diff --git a/src/main/java/com/olympus/hermione/models/Scenario.java b/src/main/java/com/olympus/hermione/models/Scenario.java new file mode 100644 index 0000000..979216f --- /dev/null +++ b/src/main/java/com/olympus/hermione/models/Scenario.java @@ -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 steps; + private List inputs; + + private boolean useChatMemory=false; +} diff --git a/src/main/java/com/olympus/hermione/models/ScenarioExecution.java b/src/main/java/com/olympus/hermione/models/ScenarioExecution.java index 9ce0386..53fdac4 100644 --- a/src/main/java/com/olympus/hermione/models/ScenarioExecution.java +++ b/src/main/java/com/olympus/hermione/models/ScenarioExecution.java @@ -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; diff --git a/src/main/java/com/olympus/hermione/models/ScenarioInputs.java b/src/main/java/com/olympus/hermione/models/ScenarioInputs.java new file mode 100644 index 0000000..c1cc09a --- /dev/null +++ b/src/main/java/com/olympus/hermione/models/ScenarioInputs.java @@ -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; +} diff --git a/src/main/java/com/olympus/hermione/models/ScenarioStep.java b/src/main/java/com/olympus/hermione/models/ScenarioStep.java new file mode 100644 index 0000000..a504bfd --- /dev/null +++ b/src/main/java/com/olympus/hermione/models/ScenarioStep.java @@ -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 attributes; + +} diff --git a/src/main/java/com/olympus/hermione/models/ScenarioStepAttribute.java b/src/main/java/com/olympus/hermione/models/ScenarioStepAttribute.java new file mode 100644 index 0000000..9be25ef --- /dev/null +++ b/src/main/java/com/olympus/hermione/models/ScenarioStepAttribute.java @@ -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; + + +} diff --git a/src/main/java/com/olympus/hermione/repository/ScenarioRepository.java b/src/main/java/com/olympus/hermione/repository/ScenarioRepository.java index b92f8cd..6500a34 100644 --- a/src/main/java/com/olympus/hermione/repository/ScenarioRepository.java +++ b/src/main/java/com/olympus/hermione/repository/ScenarioRepository.java @@ -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 { diff --git a/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java b/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java index 5b60c20..b92b7ff 100644 --- a/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java +++ b/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java @@ -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"); } diff --git a/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java b/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java index 98e9828..29870f2 100644 --- a/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java +++ b/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java @@ -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; diff --git a/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java b/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java index 524d6fc..9ffefba 100644 --- a/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java +++ b/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java @@ -10,7 +10,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 { diff --git a/src/main/java/com/olympus/hermione/stepSolvers/SourceCodeRagSolver.java b/src/main/java/com/olympus/hermione/stepSolvers/SourceCodeRagSolver.java index 3817087..61d280b 100644 --- a/src/main/java/com/olympus/hermione/stepSolvers/SourceCodeRagSolver.java +++ b/src/main/java/com/olympus/hermione/stepSolvers/SourceCodeRagSolver.java @@ -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; diff --git a/src/main/java/com/olympus/hermione/stepSolvers/StepSolver.java b/src/main/java/com/olympus/hermione/stepSolvers/StepSolver.java index bc12b51..e18f343 100644 --- a/src/main/java/com/olympus/hermione/stepSolvers/StepSolver.java +++ b/src/main/java/com/olympus/hermione/stepSolvers/StepSolver.java @@ -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 { From dd58495fbfe4c36df116ec08202a482f26513b37 Mon Sep 17 00:00:00 2001 From: Emanuele Ferrelli Date: Wed, 9 Oct 2024 18:09:46 +0200 Subject: [PATCH 3/4] added memory_id --- .../hermione/stepSolvers/BasicAIPromptSolver.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java b/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java index 524d6fc..3c02d9f 100644 --- a/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java +++ b/src/main/java/com/olympus/hermione/stepSolvers/BasicAIPromptSolver.java @@ -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; @@ -56,12 +57,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 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()); From 1c7b3e18e5170291ab0ab8b18b62a0700bb92c9b Mon Sep 17 00:00:00 2001 From: Emanuele Ferrelli Date: Wed, 9 Oct 2024 18:10:46 +0200 Subject: [PATCH 4/4] added memory_id --- .../olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java b/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java index 98e9828..77789a8 100644 --- a/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java +++ b/src/main/java/com/olympus/hermione/stepSolvers/AdvancedAIPromptSolver.java @@ -21,6 +21,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 +47,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 +68,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();