You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2026/03/24 09:02:43 UTC
(camel) 02/02: CAMEL-23238 - Camel-Google-VertexAI: Implement streaming, image generation, embeddings, multimodal, and streamRawPredict operations
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch CAMEL-23238
in repository https://gitbox.apache.org/repos/asf/camel.git
commit d35f48c61f8893f227d160103d09c7448ef24bf7
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Mar 24 10:00:04 2026 +0100
CAMEL-23238 - Camel-Google-VertexAI: Implement streaming, image generation, embeddings, multimodal, and streamRawPredict operations
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
.../camel/catalog/components/google-vertexai.json | 16 ++-
.../dsl/GoogleVertexAIEndpointBuilderFactory.java | 110 ++++++++++++++++++++-
2 files changed, 120 insertions(+), 6 deletions(-)
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json
index a4dd00562e06..518c6cf329e6 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json
@@ -64,10 +64,18 @@
"CamelGoogleVertexAITotalTokenCount": { "index": 17, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The total token count (prompt response)", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#TOTAL_TOKEN_COUNT" },
"CamelGoogleVertexAISafetyRatings": { "index": 18, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "java.util.List<com.google.cloud.aiplatform.v1.SafetyRating>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The safety ratings from the response", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#SAFETY_RATINGS" },
"CamelGoogleVertexAIContentBlocked": { "index": 19, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Whether the content was blocked by safety filters", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#CONTENT_BLOCKED" },
- "CamelGoogleVertexAIChunkCount": { "index": 20, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of chunks received in streaming response", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#STREAMING_CHUNK_COUNT" },
- "CamelGoogleVertexAIPublisher": { "index": 21, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Publisher name for partner models (e.g., anthropic, meta, mistralai)", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#PUBLISHER" },
- "CamelGoogleVertexAIRawResponse": { "index": 22, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The raw JSON response from rawPredict operation", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#RAW_RESPONSE" },
- "CamelGoogleVertexAIAnthropicVersion": { "index": 23, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Anthropic API version for Claude models", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#ANTHROPIC_VERSION" }
+ "CamelGoogleVertexAIChunkCount": { "index": 21, "kind": "header", "displayName": "", "group": "producer generateChatStreaming", "label": "producer generateChatStreaming", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of streaming chunks received", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#CHUNK_COUNT" },
+ "CamelGoogleVertexAIImageNumberOfImages": { "index": 22, "kind": "header", "displayName": "", "group": "producer generateImage", "label": "producer generateImage", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of images to generate", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#IMAGE_NUMBER_OF_IMAGES" },
+ "CamelGoogleVertexAIImageAspectRatio": { "index": 23, "kind": "header", "displayName": "", "group": "producer generateImage", "label": "producer generateImage", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The aspect ratio for generated images (e.g., 1:1, 16:9, 9:16, 3:4, 4:3)", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#IMAGE_ASPECT_RATIO" },
+ "CamelGoogleVertexAIGeneratedImages": { "index": 24, "kind": "header", "displayName": "", "group": "generateImage", "label": "generateImage", "required": false, "javaType": "java.util.List<com.google.genai.types.Image>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The generated images from an image generation operation", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#GENERATED_IMAGES" },
+ "CamelGoogleVertexAIEmbeddingTaskType": { "index": 25, "kind": "header", "displayName": "", "group": "producer generateEmbeddings", "label": "producer generateEmbeddings", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The task type for embeddings (e.g., RETRIEVAL_QUERY, RETRIEVAL_DOCUMENT, SEMANTIC_SIMILARITY, CLASSIFICATION, CLUSTERING, QUESTION_ANSWERING, FACT_VERIFICATION)", "constantName": [...]
+ "CamelGoogleVertexAIEmbeddingOutputDimensionality": { "index": 26, "kind": "header", "displayName": "", "group": "producer generateEmbeddings", "label": "producer generateEmbeddings", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The desired output dimensionality for embeddings", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#EMBEDDING_OUTPUT_DIMENSIONALITY" },
+ "CamelGoogleVertexAIMediaData": { "index": 27, "kind": "header", "displayName": "", "group": "producer generateMultimodal", "label": "producer generateMultimodal", "required": false, "javaType": "byte[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The media data bytes for multimodal input", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#MEDIA_DATA" },
+ "CamelGoogleVertexAIMediaMimeType": { "index": 28, "kind": "header", "displayName": "", "group": "producer generateMultimodal", "label": "producer generateMultimodal", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The MIME type of the media data (e.g., image\/png, image\/jpeg, video\/mp4, audio\/mp3)", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#MEDIA_MI [...]
+ "CamelGoogleVertexAIMediaGcsUri": { "index": 29, "kind": "header", "displayName": "", "group": "producer generateMultimodal", "label": "producer generateMultimodal", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The GCS URI of the media file for multimodal input (e.g., gs:\/\/bucket\/image.png)", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#MEDIA_GCS_URI" },
+ "CamelGoogleVertexAIPublisher": { "index": 30, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Publisher name for partner models (e.g., anthropic, meta, mistralai)", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#PUBLISHER" },
+ "CamelGoogleVertexAIRawResponse": { "index": 31, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The raw JSON response from rawPredict operation", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#RAW_RESPONSE" },
+ "CamelGoogleVertexAIAnthropicVersion": { "index": 32, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Anthropic API version for Claude models", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#ANTHROPIC_VERSION" }
},
"properties": {
"projectId": { "index": 0, "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.vertexai.GoogleVertexAIConfiguration", "configurationField": "configuration", "description": "Google Cloud Project ID" },
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleVertexAIEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleVertexAIEndpointBuilderFactory.java
index 6fed36795c30..554375c999aa 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleVertexAIEndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleVertexAIEndpointBuilderFactory.java
@@ -771,17 +771,123 @@ public interface GoogleVertexAIEndpointBuilderFactory {
return "CamelGoogleVertexAIContentBlocked";
}
/**
- * The number of chunks received in streaming response.
+ * The number of streaming chunks received.
*
* The option is a: {@code Integer} type.
*
- * Group: producer
+ * Group: producer generateChatStreaming
*
* @return the name of the header {@code GoogleVertexAIChunkCount}.
*/
public String googleVertexAIChunkCount() {
return "CamelGoogleVertexAIChunkCount";
}
+ /**
+ * The number of images to generate.
+ *
+ * The option is a: {@code Integer} type.
+ *
+ * Group: producer generateImage
+ *
+ * @return the name of the header {@code
+ * GoogleVertexAIImageNumberOfImages}.
+ */
+ public String googleVertexAIImageNumberOfImages() {
+ return "CamelGoogleVertexAIImageNumberOfImages";
+ }
+ /**
+ * The aspect ratio for generated images (e.g., 1:1, 16:9, 9:16, 3:4,
+ * 4:3).
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer generateImage
+ *
+ * @return the name of the header {@code
+ * GoogleVertexAIImageAspectRatio}.
+ */
+ public String googleVertexAIImageAspectRatio() {
+ return "CamelGoogleVertexAIImageAspectRatio";
+ }
+ /**
+ * The generated images from an image generation operation.
+ *
+ * The option is a: {@code java.util.List<com.google.genai.types.Image>}
+ * type.
+ *
+ * Group: generateImage
+ *
+ * @return the name of the header {@code GoogleVertexAIGeneratedImages}.
+ */
+ public String googleVertexAIGeneratedImages() {
+ return "CamelGoogleVertexAIGeneratedImages";
+ }
+ /**
+ * The task type for embeddings (e.g., RETRIEVAL_QUERY,
+ * RETRIEVAL_DOCUMENT, SEMANTIC_SIMILARITY, CLASSIFICATION, CLUSTERING,
+ * QUESTION_ANSWERING, FACT_VERIFICATION).
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer generateEmbeddings
+ *
+ * @return the name of the header {@code
+ * GoogleVertexAIEmbeddingTaskType}.
+ */
+ public String googleVertexAIEmbeddingTaskType() {
+ return "CamelGoogleVertexAIEmbeddingTaskType";
+ }
+ /**
+ * The desired output dimensionality for embeddings.
+ *
+ * The option is a: {@code Integer} type.
+ *
+ * Group: producer generateEmbeddings
+ *
+ * @return the name of the header {@code
+ * GoogleVertexAIEmbeddingOutputDimensionality}.
+ */
+ public String googleVertexAIEmbeddingOutputDimensionality() {
+ return "CamelGoogleVertexAIEmbeddingOutputDimensionality";
+ }
+ /**
+ * The media data bytes for multimodal input.
+ *
+ * The option is a: {@code byte[]} type.
+ *
+ * Group: producer generateMultimodal
+ *
+ * @return the name of the header {@code GoogleVertexAIMediaData}.
+ */
+ public String googleVertexAIMediaData() {
+ return "CamelGoogleVertexAIMediaData";
+ }
+ /**
+ * The MIME type of the media data (e.g., image/png, image/jpeg,
+ * video/mp4, audio/mp3).
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer generateMultimodal
+ *
+ * @return the name of the header {@code GoogleVertexAIMediaMimeType}.
+ */
+ public String googleVertexAIMediaMimeType() {
+ return "CamelGoogleVertexAIMediaMimeType";
+ }
+ /**
+ * The GCS URI of the media file for multimodal input (e.g.,
+ * gs://bucket/image.png).
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer generateMultimodal
+ *
+ * @return the name of the header {@code GoogleVertexAIMediaGcsUri}.
+ */
+ public String googleVertexAIMediaGcsUri() {
+ return "CamelGoogleVertexAIMediaGcsUri";
+ }
/**
* Publisher name for partner models (e.g., anthropic, meta, mistralai).
*