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 <[email protected]> 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 <[email protected]> --- .../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). *
