Merge branch 'master' of https://gitlab.gcp.windtre.it/olympus_ai/hermione
This commit is contained in:
@@ -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
|
||||
|
||||
19
.mvn/wrapper/maven-wrapper.properties
vendored
19
.mvn/wrapper/maven-wrapper.properties
vendored
@@ -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
|
||||
14
pom.xml
14
pom.xml
@@ -32,11 +32,9 @@
|
||||
</properties>
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.olympus</groupId>
|
||||
<artifactId>olympus-common</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-mongodb</artifactId>
|
||||
@@ -115,6 +113,12 @@
|
||||
<version>2.8.8</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.olympus</groupId>
|
||||
<artifactId>olympus-common</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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())
|
||||
*/
|
||||
23
src/main/java/com/olympus/hermione/models/Scenario.java
Normal file
23
src/main/java/com/olympus/hermione/models/Scenario.java
Normal 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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
21
src/main/java/com/olympus/hermione/models/ScenarioStep.java
Normal file
21
src/main/java/com/olympus/hermione/models/ScenarioStep.java
Normal 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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
}
|
||||
@@ -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> {
|
||||
|
||||
@@ -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");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user