Skip to content

Commit 47e0d22

Browse files
committed
add echo controller for aiholo and some select ai and gcp speech stuff
1 parent bdd2a29 commit 47e0d22

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+3524
-2
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package oracleai;
2+
3+
4+
import com.oracle.bmc.aivision.model.FaceDetectionFeature;
5+
import oracleai.services.OracleVisionAI;
6+
import org.springframework.stereotype.Controller;
7+
import org.springframework.ui.Model;
8+
import org.springframework.web.bind.annotation.PostMapping;
9+
import org.springframework.web.bind.annotation.RequestMapping;
10+
import org.springframework.web.bind.annotation.RequestParam;
11+
12+
import oracleai.services.ORDSCalls;
13+
import org.springframework.stereotype.Controller;
14+
import org.springframework.ui.Model;
15+
import org.springframework.web.bind.annotation.*;
16+
import org.springframework.web.multipart.MultipartFile;
17+
18+
@Controller
19+
@RequestMapping("/echo")
20+
public class EchoController {
21+
String theValue;
22+
23+
@GetMapping("/set")
24+
public String echo(String value) {
25+
theValue = value;
26+
System.out.println("EchoController set:" + theValue);
27+
return "set successfully:" + theValue;
28+
}
29+
30+
@GetMapping("/get")
31+
public String echo() {
32+
System.out.println("EchoController get:" + theValue);
33+
return theValue;
34+
}
35+
36+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package oracleai;
2+
3+
import com.oracle.bmc.aivision.model.FaceDetectionFeature;
4+
import oracleai.services.OracleVisionAI;
5+
import org.springframework.stereotype.Controller;
6+
import org.springframework.ui.Model;
7+
import org.springframework.web.bind.annotation.PostMapping;
8+
import org.springframework.web.bind.annotation.RequestMapping;
9+
import org.springframework.web.bind.annotation.RequestParam;
10+
import org.springframework.web.multipart.MultipartFile;
11+
12+
import org.springframework.beans.factory.annotation.Autowired;
13+
14+
@Controller
15+
@RequestMapping("/selectai")
16+
public class SelectAI_NL2SQL {
17+
18+
//@Autowired
19+
//javax.sql.DataSource dataSource;
20+
21+
@PostMapping("/test")
22+
public String textsearch(Model model) throws Exception{
23+
// System.out.println("SelectAI_NL2SQL.test dataSource:" + dataSource);
24+
// model.addAttribute("results", dataSource.getConnection());
25+
return "resultspage";
26+
}
27+
28+
}

java-ai/src/main/resources/application.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ spring:
1717
url: jdbc:oracle:thin:@mydb_tp?TNS_ADMIN=/Users/me/Wallet_mydb
1818
# Use "admin" for username for setup with Oracle Cloud ADB
1919
# and use "sys as sysdba" for username for setup with Oracle 23c Free
20-
username: testuser
21-
password: testpassword
20+
username: moviestream
21+
password: Welcome12345
2222
driver-class-name: oracle.jdbc.OracleDriver
2323
type: oracle.ucp.jdbc.PoolDataSource
2424
oracleucp:

java-gcpspeechai/pom.xml

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<groupId>org.springframework.boot</groupId>
7+
<artifactId>spring-boot-starter-parent</artifactId>
8+
<version>3.3.1</version>
9+
<relativePath/>
10+
</parent>
11+
<groupId>oracleai</groupId>
12+
<artifactId>oracleai-gcpspeechai</artifactId>
13+
<version>0.0.1-SNAPSHOT</version>
14+
<name>oracleai</name>
15+
<description>Oracle AI Demos</description>
16+
17+
<properties>
18+
<oci.sdk.version>3.52.1</oci.sdk.version>
19+
</properties>
20+
<dependencyManagement>
21+
<dependencies>
22+
<dependency>
23+
<groupId>com.google.cloud</groupId>
24+
<artifactId>libraries-bom</artifactId>
25+
<version>26.51.0</version>
26+
<type>pom</type>
27+
<scope>import</scope>
28+
</dependency>
29+
</dependencies>
30+
</dependencyManagement>
31+
32+
<dependencies>
33+
<dependency>
34+
<groupId>com.google.cloud</groupId>
35+
<artifactId>google-cloud-speech</artifactId>
36+
</dependency>
37+
38+
<dependency>
39+
<groupId>org.springframework.boot</groupId>
40+
<artifactId>spring-boot-starter-web</artifactId>
41+
</dependency>
42+
<dependency>
43+
<groupId>org.springframework.boot</groupId>
44+
<artifactId>spring-boot-starter-thymeleaf</artifactId>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.json</groupId>
48+
<artifactId>json</artifactId>
49+
<version>20231013</version>
50+
</dependency>
51+
<dependency>
52+
<groupId>commons-io</groupId>
53+
<artifactId>commons-io</artifactId>
54+
<version>2.8.0</version>
55+
</dependency>
56+
<dependency>
57+
<groupId>com.oracle.cloud.spring</groupId>
58+
<artifactId>spring-cloud-oci-starter</artifactId>
59+
<version>1.3.0</version>
60+
</dependency>
61+
<dependency>
62+
<groupId>com.oracle.oci.sdk</groupId>
63+
<artifactId>oci-java-sdk-common-httpclient-jersey</artifactId>
64+
<version>${oci.sdk.version}</version>
65+
</dependency>
66+
<dependency>
67+
<groupId>com.oracle.oci.sdk</groupId>
68+
<artifactId>oci-java-sdk-generativeaiinference</artifactId>
69+
<version>${oci.sdk.version}</version>
70+
</dependency>
71+
<dependency>
72+
<groupId>com.oracle.oci.sdk</groupId>
73+
<artifactId>oci-java-sdk-aivision</artifactId>
74+
<version>${oci.sdk.version}</version>
75+
</dependency>
76+
<dependency>
77+
<groupId>com.oracle.oci.sdk</groupId>
78+
<artifactId>oci-java-sdk-aispeech</artifactId>
79+
<version>${oci.sdk.version}</version>
80+
</dependency>
81+
<dependency>
82+
<groupId>com.oracle.oci.sdk</groupId>
83+
<artifactId>oci-java-sdk-ailanguage</artifactId>
84+
<version>${oci.sdk.version}</version>
85+
</dependency>
86+
<dependency>
87+
<groupId>com.oracle.oci.sdk</groupId>
88+
<artifactId>oci-java-sdk-objectstorage</artifactId>
89+
<version>${oci.sdk.version}</version>
90+
</dependency>
91+
92+
<dependency>
93+
<groupId>org.slf4j</groupId>
94+
<artifactId>slf4j-simple</artifactId>
95+
<version>2.0.6</version>
96+
</dependency>
97+
<dependency>
98+
<groupId>javax.xml.bind</groupId>
99+
<artifactId>jaxb-api</artifactId>
100+
<version>2.4.0-b180830.0359</version>
101+
</dependency>
102+
<dependency>
103+
<groupId>com.fasterxml.jackson.core</groupId>
104+
<artifactId>jackson-databind</artifactId>
105+
</dependency>
106+
107+
108+
<dependency>
109+
<groupId>org.projectlombok</groupId>
110+
<artifactId>lombok</artifactId>
111+
</dependency>
112+
113+
<dependency>
114+
<groupId>com.theokanning.openai-gpt3-java</groupId>
115+
<artifactId>service</artifactId>
116+
<version>0.12.0</version>
117+
</dependency>
118+
</dependencies>
119+
<build>
120+
<plugins>
121+
<plugin>
122+
<groupId>org.springframework.boot</groupId>
123+
<artifactId>spring-boot-maven-plugin</artifactId>
124+
</plugin>
125+
<plugin>
126+
<groupId>org.apache.maven.plugins</groupId>
127+
<artifactId>maven-compiler-plugin</artifactId>
128+
<configuration><source>11</source><target>11</target></configuration>
129+
</plugin>
130+
131+
</plugins>
132+
</build>
133+
134+
</project>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package oracleai;
2+
3+
import com.oracle.bmc.retrier.RetryConfiguration;
4+
import org.springframework.boot.SpringApplication;
5+
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
7+
8+
@SpringBootApplication
9+
public class AIApplication {
10+
11+
public static final String COMPARTMENT_ID = System.getenv("COMPARTMENT_ID");
12+
public static final String OBJECTSTORAGE_NAMESPACE = System.getenv("OBJECTSTORAGE_NAMESPACE");
13+
public static final String OBJECTSTORAGE_BUCKETNAME = System.getenv("OBJECTSTORAGE_BUCKETNAME");
14+
public static final String ORDS_ENDPOINT_URL = System.getenv("ORDS_ENDPOINT_URL");
15+
public static final String ORDS_OMLOPSENDPOINT_URL= System.getenv("ORDS_ENDPOINT_URL") + "/omlopsuser/";
16+
public static final String OCI_VISION_SERVICE_ENDPOINT = System.getenv("OCI_VISION_SERVICE_ENDPOINT");
17+
public static final String OCICONFIG_FILE = System.getenv("OCICONFIG_FILE");
18+
public static final String OCICONFIG_PROFILE = System.getenv("OCICONFIG_PROFILE");
19+
public static final String DIGITAL_DOUBLES_IMAGES_ENDPOINT = System.getenv("DIGITAL_DOUBLES_IMAGES_ENDPOINT");
20+
public static final String THREEDEY = "msy_mykey";
21+
22+
static {
23+
System.out.println("AIApplication.static initializer COMPARTMENT_ID:" + COMPARTMENT_ID);
24+
System.out.println("AIApplication.static initializer OBJECTSTORAGE_NAMESPACE:" + OBJECTSTORAGE_NAMESPACE);
25+
System.out.println("AIApplication.static initializer OBJECTSTORAGE_BUCKETNAME:" + OBJECTSTORAGE_BUCKETNAME);
26+
System.out.println("AIApplication.static initializer ORDS_ENDPOINT_URL:" + ORDS_ENDPOINT_URL);
27+
System.out.println("AIApplication.static initializer OCI_VISION_SERVICE_ENDPOINT:" + OCI_VISION_SERVICE_ENDPOINT);
28+
}
29+
30+
public static void main(String[] args) {
31+
// RetryConfiguration retryConfiguration = RetryConfiguration.builder()
32+
// .terminationStrategy(RetryUtils.createExponentialBackoffStrategy(500, 5)) // Configure limits
33+
// .build();
34+
SpringApplication.run(AIApplication.class, args);
35+
}
36+
37+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package oracleai;
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.oracle.bmc.aivision.model.ImageTextDetectionFeature;
5+
import com.oracle.bmc.generativeaiinference.model.OnDemandServingMode;
6+
import oracleai.services.ORDSCalls;
7+
import oracleai.services.OracleGenAI;
8+
import oracleai.services.OracleObjectStore;
9+
import oracleai.services.OracleVisionAI;
10+
import org.springframework.stereotype.Controller;
11+
import org.springframework.web.bind.annotation.*;
12+
import org.springframework.web.multipart.MultipartFile;
13+
14+
import org.springframework.ui.Model;
15+
16+
@Controller
17+
@RequestMapping("/health")
18+
public class ExplainAndAdviseOnHealthTestResults {
19+
20+
21+
@PostMapping("/analyzedoc")
22+
public String analyzedoc(@RequestParam("file") MultipartFile multipartFile,
23+
@RequestParam("opts") String opts, Model model)
24+
throws Exception {
25+
System.out.println("analyzedocmultipartFile = " + multipartFile + ", opts = " + opts);
26+
String concatenatedText;
27+
if (opts.equals("inline")) {
28+
String objectDetectionResults = OracleVisionAI.processImage(
29+
multipartFile.getBytes(), ImageTextDetectionFeature.builder().build());
30+
OracleVisionAI.ImageData imageData =
31+
new ObjectMapper().readValue(objectDetectionResults, OracleVisionAI.ImageData.class);
32+
concatenatedText = concatenateText(imageData);
33+
} else {
34+
OracleObjectStore.sendToObjectStorage(multipartFile.getOriginalFilename(), multipartFile.getInputStream());
35+
concatenatedText = ORDSCalls.analyzeImageInObjectStore(
36+
AIApplication.ORDS_ENDPOINT_URL + "VISIONAI_TEXTDETECTION/",
37+
AIApplication.OCI_VISION_SERVICE_ENDPOINT,
38+
AIApplication.COMPARTMENT_ID,
39+
AIApplication.OBJECTSTORAGE_BUCKETNAME,
40+
AIApplication.OBJECTSTORAGE_NAMESPACE,
41+
multipartFile.getOriginalFilename(), //"objectdetectiontestimage.jpg"
42+
"TEXT_DETECTION",
43+
"MedicalReportSummary");
44+
}
45+
System.out.println(concatenatedText);
46+
System.out.println("analyzedoc fullText = " + concatenatedText);
47+
OnDemandServingMode chatServingMode = OnDemandServingMode.builder()
48+
.modelId("cohere.command-r-16k")
49+
.build();
50+
String explanationOfResults =
51+
OracleGenAI.builder().compartment(AIApplication.COMPARTMENT_ID)
52+
.servingMode(chatServingMode)
53+
.build().chat("explain these test results in simple terms, in less than 100 words, " +
54+
"and tell me what should I do to get better results: \"" + concatenatedText + "\"");
55+
System.out.println("ExplainAndAdviseOnHealthTestResults.analyzedoc explanationOfResults:" + explanationOfResults);
56+
model.addAttribute("results", "SUMMARY WITH ADVICE: " + explanationOfResults +
57+
" ...This is of course not a substitute for actual medical advice from a professional.");
58+
return "resultspage";
59+
}
60+
61+
private static String concatenateText(OracleVisionAI.ImageData imageData) {
62+
if (imageData.getImageText() == null || imageData.getImageText().getWords() == null) return "";
63+
StringBuilder sb = new StringBuilder();
64+
for (OracleVisionAI.Word word : imageData.getImageText().getWords()) {
65+
sb.append(word.getText()).append(" ");
66+
}
67+
return sb.toString().trim();
68+
}
69+
}

0 commit comments

Comments
 (0)