This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus-examples.git

commit 34e8c645d6e39e261fbe9acfc220d58cb99e9cca
Author: aldettinger <[email protected]>
AuthorDate: Mon Jun 30 15:12:05 2025 +0200

    data-extract: upgrade to granite 3.3
---
 data-extract-langchain4j/README.adoc               |  6 +++---
 .../src/main/resources/application.properties      |  2 +-
 .../org/acme/extraction/OllamaTestResource.java    |  2 +-
 ..._chat-2d69eec9-693a-4f8d-ba28-0c7acac45fac.json | 24 ++++++++++++++++++++++
 ...chat-302d1529-355e-4638-a605-a976c07c30df.json} | 10 ++++-----
 ..._chat-7aae2c51-f61d-45bb-a2d7-ca47efeb6888.json | 24 ++++++++++++++++++++++
 ..._chat-c3c87953-6b35-4fd9-bdb2-b7cc4d7bc13d.json | 24 ----------------------
 ..._chat-e2dbcf66-5f06-4c87-a137-bb3a7781fefa.json | 24 ----------------------
 8 files changed, 58 insertions(+), 58 deletions(-)

diff --git a/data-extract-langchain4j/README.adoc 
b/data-extract-langchain4j/README.adoc
index 8e94f9d..c21b29f 100644
--- a/data-extract-langchain4j/README.adoc
+++ b/data-extract-langchain4j/README.adoc
@@ -15,7 +15,7 @@ In this example, we'll convert those text conversations into 
Java Objects that c
 image::schema.png[]
 
 In order to achieve this extraction, we'll need a 
https://en.wikipedia.org/wiki/Large_language_model[Large Language Model (LLM)] 
and related serving framework that natively supports 
https://ollama.com/blog/structured-outputs[JSON structured output].
-Here, we choose https://ollama.com/library/granite3.2:2b[granite3.2:2b] served 
through https://ollama.com/[ollama] as it seems compute friendly and under 
Apache V2 license.
+Here, we choose https://ollama.com/library/granite3.3:2b[granite3.3:2b] served 
through https://ollama.com/[ollama] as it seems compute friendly and under 
Apache V2 license.
 In order to request inference to the served model, we'll use the high-level 
LangChain4j APIs like 
https://docs.langchain4j.dev/tutorials/ai-services[AiServices].
 More precisely, we'll setup the 
https://docs.quarkiverse.io/quarkus-langchain4j/dev/index.html[Quarkus 
LangChain4j extension] to register an AiService bean.
 Finally, we'll invoke the AiService extraction method via the 
https://camel.apache.org/camel-quarkus/latest/reference/extensions/bean.html[Camel
 Quarkus bean extension].
@@ -26,7 +26,7 @@ Let's start a container to serve the LLM with Ollama, in a 
first shell type:
 
 [source,shell]
 ----
-docker run --rm -it -v cqex-data-extract-ollama:/root/.ollama -p 11434:11434 
--name cqex-data-extract-ollama ollama/ollama:0.5.13
+docker run --rm -it -v cqex-data-extract-ollama:/root/.ollama -p 11434:11434 
--name cqex-data-extract-ollama ollama/ollama:0.9.3
 ----
 
 After a moment, a log like below should be output:
@@ -40,7 +40,7 @@ Then, download the codellama model, in a second shell type:
 
 [source,shell]
 ----
-docker exec -it cqex-data-extract-ollama ollama pull granite3.2:2b
+docker exec -it cqex-data-extract-ollama ollama pull granite3.3:2b
 ----
 
 After a moment, log like below should be output:
diff --git a/data-extract-langchain4j/src/main/resources/application.properties 
b/data-extract-langchain4j/src/main/resources/application.properties
index af6311e..c7ef726 100644
--- a/data-extract-langchain4j/src/main/resources/application.properties
+++ b/data-extract-langchain4j/src/main/resources/application.properties
@@ -21,7 +21,7 @@ quarkus.banner.enabled = false
 # Configure Quarkus LangChain4j that handle interactions with the Large 
Language Model
 quarkus.langchain4j.ollama.base-url = http://localhost:11434
 quarkus.langchain4j.ollama.timeout = 3m
-quarkus.langchain4j.ollama.chat-model.model-id = granite3.2:2b
+quarkus.langchain4j.ollama.chat-model.model-id = granite3.3:2b
 quarkus.langchain4j.ollama.chat-model.temperature = 0
 # Uncomment lines below to log Ollama client requests and responses
 #quarkus.langchain4j.ollama.log-requests=true
diff --git 
a/data-extract-langchain4j/src/test/java/org/acme/extraction/OllamaTestResource.java
 
b/data-extract-langchain4j/src/test/java/org/acme/extraction/OllamaTestResource.java
index d4e4773..4b4728e 100644
--- 
a/data-extract-langchain4j/src/test/java/org/acme/extraction/OllamaTestResource.java
+++ 
b/data-extract-langchain4j/src/test/java/org/acme/extraction/OllamaTestResource.java
@@ -36,7 +36,7 @@ public class OllamaTestResource implements 
QuarkusTestResourceLifecycleManager {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(OllamaTestResource.class);
 
-    private static final String OLLAMA_IMAGE = "ollama/ollama:0.5.13";
+    private static final String OLLAMA_IMAGE = "ollama/ollama:0.9.3";
     private static final int OLLAMA_SERVER_PORT = 11434;
 
     private static final String MODE_MOCK = "mock";
diff --git 
a/data-extract-langchain4j/src/test/resources/mappings/api_chat-2d69eec9-693a-4f8d-ba28-0c7acac45fac.json
 
b/data-extract-langchain4j/src/test/resources/mappings/api_chat-2d69eec9-693a-4f8d-ba28-0c7acac45fac.json
new file mode 100644
index 0000000..66639ca
--- /dev/null
+++ 
b/data-extract-langchain4j/src/test/resources/mappings/api_chat-2d69eec9-693a-4f8d-ba28-0c7acac45fac.json
@@ -0,0 +1,24 @@
+{
+  "id" : "2d69eec9-693a-4f8d-ba28-0c7acac45fac",
+  "name" : "api_chat",
+  "request" : {
+    "url" : "/api/chat",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\n  \"model\" : \"granite3.3:2b\",\n  \"messages\" : [ 
{\n    \"role\" : \"assistant\",\n    \"content\" : \"{\\n  
\\\"customerSatisfied\\\": true,\\n  \\\"customerName\\\": \\\"Sarah 
London\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 1986, \\\"month\\\": 
7, \\\"day\\\": 10},\\n  \\\"summary\\\": \\\"The customer, Sarah London, is 
calling to declare an accident and seek reimbursement for related 
expenses.\\\"\\n}\"\n  }, {\n    \"role\" : \"user\",\n    \"co [...]
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"model\":\"granite3.3:2b\",\"created_at\":\"2025-06-30T13:10:26.961768193Z\",\"message\":{\"role\":\"assistant\",\"content\":\"{\\n
  \\\"customerSatisfied\\\": false,\\n  \\\"customerName\\\": \\\"John 
Doe\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 2001, \\\"month\\\": 11, 
\\\"day\\\": 1},\\n  \\\"summary\\\": \\\"Customer John Doe is dissatisfied 
with the insurance company's automatic cancellation of full reimbursement 
option from his contract. He was not informed [...]
+    "headers" : {
+      "Date" : "Mon, 30 Jun 2025 13:10:26 GMT",
+      "Content-Type" : "application/json; charset=utf-8"
+    }
+  },
+  "uuid" : "2d69eec9-693a-4f8d-ba28-0c7acac45fac",
+  "persistent" : true,
+  "insertionIndex" : 5
+}
\ No newline at end of file
diff --git 
a/data-extract-langchain4j/src/test/resources/mappings/api_chat-06cec226-1f5d-4cb4-8e01-5df16f809497.json
 
b/data-extract-langchain4j/src/test/resources/mappings/api_chat-302d1529-355e-4638-a605-a976c07c30df.json
similarity index 67%
rename from 
data-extract-langchain4j/src/test/resources/mappings/api_chat-06cec226-1f5d-4cb4-8e01-5df16f809497.json
rename to 
data-extract-langchain4j/src/test/resources/mappings/api_chat-302d1529-355e-4638-a605-a976c07c30df.json
index e75411b..4f31221 100644
--- 
a/data-extract-langchain4j/src/test/resources/mappings/api_chat-06cec226-1f5d-4cb4-8e01-5df16f809497.json
+++ 
b/data-extract-langchain4j/src/test/resources/mappings/api_chat-302d1529-355e-4638-a605-a976c07c30df.json
@@ -1,24 +1,24 @@
 {
-  "id" : "06cec226-1f5d-4cb4-8e01-5df16f809497",
+  "id" : "302d1529-355e-4638-a605-a976c07c30df",
   "name" : "api_chat",
   "request" : {
     "url" : "/api/chat",
     "method" : "POST",
     "bodyPatterns" : [ {
-      "equalToJson" : "{\n  \"model\" : \"granite3.2:2b\",\n  \"messages\" : [ 
{\n    \"role\" : \"user\",\n    \"content\" : \"Extract information about a 
customer from the text delimited by triple backticks: ```Operator: Hello, how 
may I help you ?\\nCustomer: Hello, I'm calling because I need to declare an 
accident on my main vehicle.\\nOperator: Ok, can you please give me your name 
?\\nCustomer: My name is Sarah London.\\nOperator: Could you please give me 
your birth date ?\\nCustome [...]
+      "equalToJson" : "{\n  \"model\" : \"granite3.3:2b\",\n  \"messages\" : [ 
{\n    \"role\" : \"user\",\n    \"content\" : \"Extract information about a 
customer from the text delimited by triple backticks: ```Operator: Hello, how 
may I help you ?\\nCustomer: Hello, I'm calling because I need to declare an 
accident on my main vehicle.\\nOperator: Ok, can you please give me your name 
?\\nCustomer: My name is Sarah London.\\nOperator: Could you please give me 
your birth date ?\\nCustome [...]
       "ignoreArrayOrder" : true,
       "ignoreExtraElements" : true
     } ]
   },
   "response" : {
     "status" : 200,
-    "body" : 
"{\"model\":\"granite3.2:2b\",\"created_at\":\"2025-03-14T09:02:50.38627784Z\",\"message\":{\"role\":\"assistant\",\"content\":\"{\\n
  \\\"customerSatisfied\\\": true,\\n  \\\"customerName\\\": \\\"Sarah 
London\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 1986, \\\"month\\\": 
7, \\\"day\\\": 10},\\n  \\\"summary\\\": \\\"The customer, Sarah London, 
called to declare an accident on her main vehicle. The operator confirmed they 
would reimburse all expenses related to the  [...]
+    "body" : 
"{\"model\":\"granite3.3:2b\",\"created_at\":\"2025-06-30T13:10:15.253520732Z\",\"message\":{\"role\":\"assistant\",\"content\":\"{\\n
  \\\"customerSatisfied\\\": true,\\n  \\\"customerName\\\": \\\"Sarah 
London\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 1986, \\\"month\\\": 
7, \\\"day\\\": 10},\\n  \\\"summary\\\": \\\"The customer, Sarah London, is 
calling to declare an accident and seek reimbursement for related 
expenses.\\\"\\n}\"},\"done_reason\":\"stop\",\"done\ [...]
     "headers" : {
-      "Date" : "Fri, 14 Mar 2025 09:02:50 GMT",
+      "Date" : "Mon, 30 Jun 2025 13:10:15 GMT",
       "Content-Type" : "application/json; charset=utf-8"
     }
   },
-  "uuid" : "06cec226-1f5d-4cb4-8e01-5df16f809497",
+  "uuid" : "302d1529-355e-4638-a605-a976c07c30df",
   "persistent" : true,
   "insertionIndex" : 6
 }
\ No newline at end of file
diff --git 
a/data-extract-langchain4j/src/test/resources/mappings/api_chat-7aae2c51-f61d-45bb-a2d7-ca47efeb6888.json
 
b/data-extract-langchain4j/src/test/resources/mappings/api_chat-7aae2c51-f61d-45bb-a2d7-ca47efeb6888.json
new file mode 100644
index 0000000..8df44d4
--- /dev/null
+++ 
b/data-extract-langchain4j/src/test/resources/mappings/api_chat-7aae2c51-f61d-45bb-a2d7-ca47efeb6888.json
@@ -0,0 +1,24 @@
+{
+  "id" : "7aae2c51-f61d-45bb-a2d7-ca47efeb6888",
+  "name" : "api_chat",
+  "request" : {
+    "url" : "/api/chat",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\n  \"model\" : \"granite3.3:2b\",\n  \"messages\" : [ 
{\n    \"role\" : \"assistant\",\n    \"content\" : \"{\\n  
\\\"customerSatisfied\\\": false,\\n  \\\"customerName\\\": \\\"John 
Doe\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 2001, \\\"month\\\": 11, 
\\\"day\\\": 1},\\n  \\\"summary\\\": \\\"Customer John Doe is dissatisfied 
with the insurance company's automatic cancellation of full reimbursement 
option from his contract. He was not informed about thi [...]
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"model\":\"granite3.3:2b\",\"created_at\":\"2025-06-30T13:10:40.346190215Z\",\"message\":{\"role\":\"assistant\",\"content\":\"{\\n
  \\\"customerSatisfied\\\": true,\\n  \\\"customerName\\\": \\\"Kate 
Boss\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 1999, \\\"month\\\": 8, 
\\\"day\\\": 13},\\n  \\\"summary\\\": \\\"Customer Kate Boss sought assistance 
from the insurance operator regarding a car accident. She initially provided 
incorrect information about her last na [...]
+    "headers" : {
+      "Date" : "Mon, 30 Jun 2025 13:10:40 GMT",
+      "Content-Type" : "application/json; charset=utf-8"
+    }
+  },
+  "uuid" : "7aae2c51-f61d-45bb-a2d7-ca47efeb6888",
+  "persistent" : true,
+  "insertionIndex" : 4
+}
\ No newline at end of file
diff --git 
a/data-extract-langchain4j/src/test/resources/mappings/api_chat-c3c87953-6b35-4fd9-bdb2-b7cc4d7bc13d.json
 
b/data-extract-langchain4j/src/test/resources/mappings/api_chat-c3c87953-6b35-4fd9-bdb2-b7cc4d7bc13d.json
deleted file mode 100644
index 51cc551..0000000
--- 
a/data-extract-langchain4j/src/test/resources/mappings/api_chat-c3c87953-6b35-4fd9-bdb2-b7cc4d7bc13d.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "id" : "c3c87953-6b35-4fd9-bdb2-b7cc4d7bc13d",
-  "name" : "api_chat",
-  "request" : {
-    "url" : "/api/chat",
-    "method" : "POST",
-    "bodyPatterns" : [ {
-      "equalToJson" : "{\n  \"model\" : \"granite3.2:2b\",\n  \"messages\" : [ 
{\n    \"role\" : \"assistant\",\n    \"content\" : \"{\\n  
\\\"customerSatisfied\\\": false,\\n  \\\"customerName\\\": \\\"John 
Doe\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 2001, \\\"month\\\": 11, 
\\\"day\\\": 1},\\n  \\\"summary\\\": \\\"Customer John Doe expressed 
dissatisfaction with the insurance company's automatic cancellation of a full 
reimbursement option for his vehicle accident claim. He f [...]
-      "ignoreArrayOrder" : true,
-      "ignoreExtraElements" : true
-    } ]
-  },
-  "response" : {
-    "status" : 200,
-    "body" : 
"{\"model\":\"granite3.2:2b\",\"created_at\":\"2025-03-14T09:03:17.771401633Z\",\"message\":{\"role\":\"assistant\",\"content\":\"{\\n
  \\\"customerSatisfied\\\": true,\\n  \\\"customerName\\\": \\\"Kate 
Boss\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 1999, \\\"month\\\": 8, 
\\\"day\\\": 13},\\n  \\\"summary\\\": \\\"Customer Kate Boss requested 
assistance from the operator to provide proof of insurance for an accident at a 
police station. She initially provided incor [...]
-    "headers" : {
-      "Date" : "Fri, 14 Mar 2025 09:03:17 GMT",
-      "Content-Type" : "application/json; charset=utf-8"
-    }
-  },
-  "uuid" : "c3c87953-6b35-4fd9-bdb2-b7cc4d7bc13d",
-  "persistent" : true,
-  "insertionIndex" : 4
-}
\ No newline at end of file
diff --git 
a/data-extract-langchain4j/src/test/resources/mappings/api_chat-e2dbcf66-5f06-4c87-a137-bb3a7781fefa.json
 
b/data-extract-langchain4j/src/test/resources/mappings/api_chat-e2dbcf66-5f06-4c87-a137-bb3a7781fefa.json
deleted file mode 100644
index d795e64..0000000
--- 
a/data-extract-langchain4j/src/test/resources/mappings/api_chat-e2dbcf66-5f06-4c87-a137-bb3a7781fefa.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "id" : "e2dbcf66-5f06-4c87-a137-bb3a7781fefa",
-  "name" : "api_chat",
-  "request" : {
-    "url" : "/api/chat",
-    "method" : "POST",
-    "bodyPatterns" : [ {
-      "equalToJson" : "{\n  \"model\" : \"granite3.2:2b\",\n  \"messages\" : [ 
{\n    \"role\" : \"assistant\",\n    \"content\" : \"{\\n  
\\\"customerSatisfied\\\": true,\\n  \\\"customerName\\\": \\\"Sarah 
London\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 1986, \\\"month\\\": 
7, \\\"day\\\": 10},\\n  \\\"summary\\\": \\\"The customer, Sarah London, 
called to declare an accident on her main vehicle. The operator confirmed they 
would reimburse all expenses related to the incident. [...]
-      "ignoreArrayOrder" : true,
-      "ignoreExtraElements" : true
-    } ]
-  },
-  "response" : {
-    "status" : 200,
-    "body" : 
"{\"model\":\"granite3.2:2b\",\"created_at\":\"2025-03-14T09:03:02.662428274Z\",\"message\":{\"role\":\"assistant\",\"content\":\"{\\n
  \\\"customerSatisfied\\\": false,\\n  \\\"customerName\\\": \\\"John 
Doe\\\",\\n  \\\"customerBirthday\\\": {\\\"year\\\": 2001, \\\"month\\\": 11, 
\\\"day\\\": 1},\\n  \\\"summary\\\": \\\"Customer John Doe expressed 
dissatisfaction with the insurance company's automatic cancellation of a full 
reimbursement option for his vehicle accident c [...]
-    "headers" : {
-      "Date" : "Fri, 14 Mar 2025 09:03:02 GMT",
-      "Content-Type" : "application/json; charset=utf-8"
-    }
-  },
-  "uuid" : "e2dbcf66-5f06-4c87-a137-bb3a7781fefa",
-  "persistent" : true,
-  "insertionIndex" : 5
-}
\ No newline at end of file

Reply via email to