Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pull Request for the Result of the "Integrationsseminar" #22

Merged
merged 52 commits into from
Nov 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
cacaa2d
Test Commit
Marcel2511 May 26, 2024
1e4b997
Update pom.xml
Marcel2511 May 27, 2024
e633f64
Update pom.xml
ChrisCas92 May 27, 2024
d69ff4e
Update pom.xml
ChrisCas92 May 27, 2024
afe47ae
update pom.xml
ChrisCas92 May 27, 2024
c43b4e0
fixed display Bug at the frontend with Annotation in P2TController
ChrisCas92 May 27, 2024
f9349f6
Created a new Service for the LLM API call
ChrisCas92 May 28, 2024
fbd5794
Change p2t controller into 2 API Endpoints
Marcel2511 May 28, 2024
9350202
Change p2t controller into 2 API Endpoints
Marcel2511 May 28, 2024
d759536
Changed Endpoint Name
Marcel2511 May 28, 2024
cd9abfa
Added empty methods for transformation and file detection
Marcel2511 May 28, 2024
031259f
added file detection method in P2TLLMService
Marcel2511 May 28, 2024
3f4eeaf
Implementation TransformerService
Marcel2511 May 28, 2024
22905ee
removed controller, restructured service
Marcel2511 May 28, 2024
3bbb23c
Update P2TController.java
ChrisCas92 May 30, 2024
7033578
Controller and LLMService updated
ChrisCas92 Jun 3, 2024
6b9557c
WebConfig created for CORS
ChrisCas92 Jun 3, 2024
10cb96d
Added Dependy, refactored Transformer Identification
Marcel2511 Jun 3, 2024
f059ffa
Merge pull request #1 from Marcel2511/p2t-webservice-BackendTestsLLM
Marcel2511 Jun 3, 2024
fea3f49
Revert "P2t webservice backend tests llm"
Marcel2511 Jun 3, 2024
065daca
Merge pull request #2 from Marcel2511/revert-1-p2t-webservice-Backend…
Marcel2511 Jun 3, 2024
78dde86
Revert "Revert "P2t webservice backend tests llm""
Marcel2511 Jun 3, 2024
0599fb2
Merge pull request #3 from Marcel2511/revert-2-revert-1-p2t-webservic…
Marcel2511 Jun 3, 2024
0aa380b
Revert "Merge pull request #3 from Marcel2511/revert-2-revert-1-p2t-w…
Marcel2511 Jun 3, 2024
0ea286a
Reapply "Merge pull request #3 from Marcel2511/revert-2-revert-1-p2t-…
Marcel2511 Jun 3, 2024
dd40c1a
Revert "Reapply "Merge pull request #3 from Marcel2511/revert-2-rever…
Marcel2511 Jun 3, 2024
68f956c
pom.xml update
ChrisCas92 Jun 3, 2024
430b334
Update WebConfig.java
ChrisCas92 Jun 3, 2024
3893f42
Merge branch 'p2t-webservice'
ChrisCas92 Jun 3, 2024
dddeb0a
Fixx to clean master branch
ChrisCas92 Jun 3, 2024
ac8683e
Implemented a DTO+Enum to verify each GPT model for the API Call to O…
ChrisCas92 Jun 10, 2024
0d51cd1
Error handling + logging implemented to verify some issues
ChrisCas92 Jun 10, 2024
6f2917d
parsing the Json String to only display the Content from OpenAi API +…
ChrisCas92 Jun 10, 2024
f458fb6
changed direction of transformer
Marcel2511 Jun 10, 2024
007da12
Added JavaDocs + GPTModels
ChrisCas92 Jun 10, 2024
04efbb6
fixed transformer now that we have the actual description of it
Marcel2511 Jun 10, 2024
25adc7d
Merge branch 'p2t-transfortmation-api-call'
Marcel2511 Jun 10, 2024
a35de1c
Minor Refactoring in Controller
Marcel2511 Jun 10, 2024
9852a27
missing Body Mapping implemented
ChrisCas92 Jun 11, 2024
4c40c7d
Merge branch 'master' of https://github.com/Marcel2511/P2T-New
ChrisCas92 Jun 11, 2024
09ed951
updated formatted classes
ChrisCas92 Jun 11, 2024
579cf01
Fixed check for BPMN and XML, added Transformer API Call in Endpoint
Marcel2511 Jun 12, 2024
bd840ea
Add tests for Check for BPMN or PNML
anneke02 Jun 24, 2024
8b24b90
Merge pull request #4 from Marcel2511/p2t-transfortmation-api-call
anneke02 Jun 24, 2024
c7d7d42
Add test of transform method with transformer call
TimU02 Jul 2, 2024
c3ddb0b
Update Java version of pipeline
TimU02 Jul 2, 2024
eb84b4d
Changed static EnumGPTModel usage to OpenAI API Request for GPT-Models
ChrisCas92 Jul 2, 2024
f35d6c3
Merge branch 'master' of https://github.com/Marcel2511/P2T-New
ChrisCas92 Jul 2, 2024
c2ff63e
fixed Test pipeline errors
ChrisCas92 Jul 2, 2024
88dac4d
Update pom.xml
ChrisCas92 Jul 2, 2024
92e9de1
refactored
Marcel2511 Jul 5, 2024
d7d3816
Add JavaDoc for TransformerService
TimU02 Jul 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up JDK 11
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '21'
distribution: 'temurin'
settings-path: ${{ github.workspace }}

Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,3 @@ build/

### VS Code ###
.vscode/

82 changes: 57 additions & 25 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<version>3.3.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>de.dhbw.woped</groupId>
Expand All @@ -16,7 +16,7 @@
<description>WoPed webservice p2t</description>

<properties>
<java.version>11</java.version>
<java.version>21</java.version>
<sonar.organization>woped</sonar.organization>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
</properties>
Expand All @@ -32,6 +32,16 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand All @@ -42,8 +52,14 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>4.0.0.4121</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
Expand Down Expand Up @@ -155,6 +171,21 @@
<artifactId>xml-apis</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand All @@ -172,29 +203,30 @@
<version>3.0.0-M1</version>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>copy_nlptools.wordnet.dict</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<copy todir="${basedir}/target/src/main/resources">
<fileset dir="${basedir}/src/main/resources"
includes="**/*"/>
</copy>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>copy_nlptools.wordnet.dict</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<copy todir="${basedir}/target/src/main/resources">
<fileset dir="${basedir}/src/main/resources"
includes="**/*"/>
</copy>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>2.22.8</version>
<version>2.43.0</version>
<configuration>
<formats>
<format>
Expand All @@ -218,7 +250,7 @@
<importOrder/>
<removeUnusedImports/>
<googleJavaFormat>
<version>1.8</version>
<version>1.17.0</version>
<style>GOOGLE</style>
<reflowLongStrings>true</reflowLongStrings>
<groupArtifact>com.google.googlejavaformat:google-java-format</groupArtifact>
Expand All @@ -230,12 +262,12 @@
<id>spotless-check</id>
<phase>compile</phase>
<goals>
<goal>check</goal>
<goal>apply</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>
32 changes: 32 additions & 0 deletions src/main/java/de/dhbw/woped/process2text/config/WebConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package de.dhbw.woped.process2text.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig {

private static final Logger logger = LoggerFactory.getLogger(WebConfig.class);

@Bean
@Primary
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
logger.info("Applying CORS configuration");
registry
.addMapping("/**")
.allowedOrigins("http://localhost:4200", "http://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.allowCredentials(true);
}
};
}
}
Original file line number Diff line number Diff line change
@@ -1,29 +1,92 @@
package de.dhbw.woped.process2text.controller;

import de.dhbw.woped.process2text.model.process.OpenAiApiDTO;
import de.dhbw.woped.process2text.service.P2TLLMService;
import de.dhbw.woped.process2text.service.P2TService;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;

/**
* Controller class to handle HTTP requests related to process-to-text translation. Provides
* endpoints to translate process models into human-readable text.
*/
@CrossOrigin(origins = "http://localhost:4200")
@RestController
@Slf4j
public class P2TController {

Logger logger = LoggerFactory.getLogger(P2TController.class);
private static final Logger logger = LoggerFactory.getLogger(P2TController.class);

@Autowired P2TService p2tService;
@Autowired private P2TService p2tService;
@Autowired private P2TLLMService llmService;

/**
* Endpoint to translate a process model into human-readable text.
*
* @param body The process model in plain text format.
* @return The translated text.
*/
@ApiOperation(value = "Translate a process model into human readable text.")
@PostMapping(value = "/generateText", consumes = "text/plain", produces = "text/plain")
protected String generateText(@RequestBody String body) {
if (logger
.isDebugEnabled()) { // required so that body.replaceAll is only invoked in case the body is
// logged
logger.debug(body.replaceAll("[\n\r\t]", "_"));
if (logger.isDebugEnabled()) {
logger.debug("Received body: " + body.replaceAll("[\n\r\t]", "_"));
}
return p2tService.generateText(body);
String response = p2tService.generateText(body);
logger.debug("Response: " + response);
return response;
}

/**
* Endpoint to translate a process model into human-readable text using OpenAI's Large Language
* Model.
*
* @param body The process model in plain text format.
* @param apiKey The API key for OpenAI.
* @param prompt The prompt to guide the translation.
* @param gptModel The GPT model to be used for translation.
* @return The translated text.
*/
@ApiOperation(
value =
"Translate a process model into human readable text using one of OpenAIs Large Language Models")
@PostMapping(value = "/generateTextLLM", consumes = "text/plain", produces = "text/plain")
protected String generateTextLLM(
@RequestBody String body,
@RequestParam(required = true) String apiKey,
@RequestParam(required = true) String prompt,
@RequestParam(required = true) String gptModel) {
logger.debug(
"Received request with apiKey: {}, prompt: {}, gptModel: {}, body: {}",
apiKey,
prompt,
gptModel,
body.replaceAll("[\n\r\t]", "_"));
OpenAiApiDTO openAiApiDTO = new OpenAiApiDTO(apiKey, gptModel, prompt);
try {
String response = llmService.callLLM(body, openAiApiDTO);
logger.debug("LLM Response: " + response);
return response;
} catch (ResponseStatusException e) {
logger.error("Error processing LLM request", e);
throw e;
}
}

/**
* Endpoint to retrieve the list of available GPT models.
*
* @param apiKey The API key for OpenAI.
* @return A list of model names as strings.
*/
@GetMapping("/gptModels")
public List<String> getGptModels(@RequestParam(required = true) String apiKey) {
return llmService.getGptModels(apiKey);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package de.dhbw.woped.process2text.model.process;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

/** Data Transfer Object to hold OpenAI API related information. */
@Data
@Setter
@Getter
@AllArgsConstructor
public class OpenAiApiDTO {

private String apiKey;
private String gptModel;
private String prompt;
}
Loading
Loading