This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch CAMEL-26500-bedrock-deprecate-streaming-ops in repository https://gitbox.apache.org/repos/asf/camel.git
commit 41513ecd493de806ee7cea667d5826932b75a652 Author: Claus Ibsen <[email protected]> AuthorDate: Mon Nov 2 21:13:46 2026 +0100 CAMEL-26500: camel-aws-bedrock - deprecate the invokeImageModelStreaming and invokeEmbeddingsModelStreaming operations The image generation and embedding models on Amazon Bedrock do not stream their response. Since CAMEL-26069 these two operations fail for such a model and point to invokeImageModel / invokeEmbeddingsModel, and with a text model they are the same as invokeTextModelStreaming. Deprecate both enum constants for removal in a later release; they keep working. The operation option description, the component doc and the 4.24 upgrade guide say so. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../org/apache/camel/catalog/components/aws-bedrock.json | 4 ++-- .../apache/camel/catalog/docs/aws-bedrock-component.adoc | 8 ++++++-- .../camel/component/aws2/bedrock/runtime/aws-bedrock.json | 4 ++-- .../src/main/docs/aws-bedrock-component.adoc | 8 ++++++-- .../aws2/bedrock/runtime/BedrockConfiguration.java | 4 +++- .../component/aws2/bedrock/runtime/BedrockOperations.java | 10 ++++++++++ .../component/aws2/bedrock/runtime/BedrockProducer.java | 1 + .../aws2/bedrock/runtime/BedrockProducerRequestTest.java | 14 ++++++++++++++ .../modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc | 7 +++++++ .../component/dsl/AwsBedrockComponentBuilderFactory.java | 6 +++++- .../endpoint/dsl/BedrockEndpointBuilderFactory.java | 12 ++++++++++-- 11 files changed, 66 insertions(+), 12 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock.json index 2f94d59671b3..2cff71bd642c 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock.json @@ -31,7 +31,7 @@ "includeStreamingMetadata": { "index": 4, "kind": "property", "displayName": "Include Streaming Metadata", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "Whether to include streaming metadata in the response hea [...] "lazyStartProducer": { "index": 5, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...] "modelId": { "index": 6, "kind": "property", "displayName": "Model Id", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "java.lang.String", "enum": [ "amazon.titan-text-express-v1", "amazon.titan-text-lite-v1", "amazon.titan-image-generator-v1", "amazon.titan-embed-text-v1", "amazon.titan-embed-image-v1", "amazon.titan-text-premier-v1:0", "amazon.titan-embed-text-v2:0", "amazon.titan-image-generator-v2:0", "amazon.nova-canvas-v1:0", "amazon.nova-lite-v [...] - "operation": { "index": 7, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ "invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", "invokeTextModelStreaming", "invokeImageModelStreaming", "invokeEmbeddingsModelStreaming", "converse", "converseStream", "applyGuardrail" ], "deprecated": false, "deprecationNote": "", "auto [...] + "operation": { "index": 7, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ "invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", "invokeTextModelStreaming", "invokeImageModelStreaming", "invokeEmbeddingsModelStreaming", "converse", "converseStream", "applyGuardrail" ], "deprecated": false, "deprecationNote": "", "auto [...] "overrideEndpoint": { "index": 8, "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in [...] "pojoRequest": { "index": 9, "kind": "property", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" }, "profileCredentialsName": { "index": 10, "kind": "property", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this par [...] @@ -90,7 +90,7 @@ "guardrailVersion": { "index": 3, "kind": "parameter", "displayName": "Guardrail Version", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "DRAFT", "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "The version of the guardrail to use. Defaults to DRAFT." }, "includeStreamingMetadata": { "index": 4, "kind": "parameter", "displayName": "Include Streaming Metadata", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "Whether to include streaming metadata in the response he [...] "modelId": { "index": 5, "kind": "parameter", "displayName": "Model Id", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "java.lang.String", "enum": [ "amazon.titan-text-express-v1", "amazon.titan-text-lite-v1", "amazon.titan-image-generator-v1", "amazon.titan-embed-text-v1", "amazon.titan-embed-image-v1", "amazon.titan-text-premier-v1:0", "amazon.titan-embed-text-v2:0", "amazon.titan-image-generator-v2:0", "amazon.nova-canvas-v1:0", "amazon.nova-lite- [...] - "operation": { "index": 6, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ "invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", "invokeTextModelStreaming", "invokeImageModelStreaming", "invokeEmbeddingsModelStreaming", "converse", "converseStream", "applyGuardrail" ], "deprecated": false, "deprecationNote": "", "aut [...] + "operation": { "index": 6, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ "invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", "invokeTextModelStreaming", "invokeImageModelStreaming", "invokeEmbeddingsModelStreaming", "converse", "converseStream", "applyGuardrail" ], "deprecated": false, "deprecationNote": "", "aut [...] "overrideEndpoint": { "index": 7, "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used i [...] "pojoRequest": { "index": 8, "kind": "parameter", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" }, "profileCredentialsName": { "index": 9, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this par [...] diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-bedrock-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-bedrock-component.adoc index a58d10e8b11c..dfc5e17b4020 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-bedrock-component.adoc +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-bedrock-component.adoc @@ -77,8 +77,8 @@ Camel-AWS Bedrock component provides the following operation on the producer sid - invokeImageModel - invokeEmbeddingsModel - invokeTextModelStreaming -- invokeImageModelStreaming -- invokeEmbeddingsModelStreaming +- invokeImageModelStreaming (deprecated) +- invokeEmbeddingsModelStreaming (deprecated) - converse - converseStream - applyGuardrail @@ -108,6 +108,10 @@ The streaming operations give the generated text. The image generation and embed response, so the three streaming operations work the same way, and an image or embedding model fails with an `IllegalArgumentException` that points to `invokeImageModel` or `invokeEmbeddingsModel`. +NOTE: The `invokeImageModelStreaming` and `invokeEmbeddingsModelStreaming` operations are deprecated and will be removed +in a later release. Use `invokeImageModel` or `invokeEmbeddingsModel` with an image generation or embedding model, and +`invokeTextModelStreaming` to stream the text of a text model. + ==== Streaming Output Modes Two streaming modes are supported: diff --git a/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/runtime/aws-bedrock.json b/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/runtime/aws-bedrock.json index 2f94d59671b3..2cff71bd642c 100644 --- a/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/runtime/aws-bedrock.json +++ b/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/runtime/aws-bedrock.json @@ -31,7 +31,7 @@ "includeStreamingMetadata": { "index": 4, "kind": "property", "displayName": "Include Streaming Metadata", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "Whether to include streaming metadata in the response hea [...] "lazyStartProducer": { "index": 5, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...] "modelId": { "index": 6, "kind": "property", "displayName": "Model Id", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "java.lang.String", "enum": [ "amazon.titan-text-express-v1", "amazon.titan-text-lite-v1", "amazon.titan-image-generator-v1", "amazon.titan-embed-text-v1", "amazon.titan-embed-image-v1", "amazon.titan-text-premier-v1:0", "amazon.titan-embed-text-v2:0", "amazon.titan-image-generator-v2:0", "amazon.nova-canvas-v1:0", "amazon.nova-lite-v [...] - "operation": { "index": 7, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ "invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", "invokeTextModelStreaming", "invokeImageModelStreaming", "invokeEmbeddingsModelStreaming", "converse", "converseStream", "applyGuardrail" ], "deprecated": false, "deprecationNote": "", "auto [...] + "operation": { "index": 7, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ "invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", "invokeTextModelStreaming", "invokeImageModelStreaming", "invokeEmbeddingsModelStreaming", "converse", "converseStream", "applyGuardrail" ], "deprecated": false, "deprecationNote": "", "auto [...] "overrideEndpoint": { "index": 8, "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in [...] "pojoRequest": { "index": 9, "kind": "property", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" }, "profileCredentialsName": { "index": 10, "kind": "property", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this par [...] @@ -90,7 +90,7 @@ "guardrailVersion": { "index": 3, "kind": "parameter", "displayName": "Guardrail Version", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "DRAFT", "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "The version of the guardrail to use. Defaults to DRAFT." }, "includeStreamingMetadata": { "index": 4, "kind": "parameter", "displayName": "Include Streaming Metadata", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "Whether to include streaming metadata in the response he [...] "modelId": { "index": 5, "kind": "parameter", "displayName": "Model Id", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "java.lang.String", "enum": [ "amazon.titan-text-express-v1", "amazon.titan-text-lite-v1", "amazon.titan-image-generator-v1", "amazon.titan-embed-text-v1", "amazon.titan-embed-image-v1", "amazon.titan-text-premier-v1:0", "amazon.titan-embed-text-v2:0", "amazon.titan-image-generator-v2:0", "amazon.nova-canvas-v1:0", "amazon.nova-lite- [...] - "operation": { "index": 6, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ "invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", "invokeTextModelStreaming", "invokeImageModelStreaming", "invokeEmbeddingsModelStreaming", "converse", "converseStream", "applyGuardrail" ], "deprecated": false, "deprecationNote": "", "aut [...] + "operation": { "index": 6, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "enum", "javaType": "org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ "invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", "invokeTextModelStreaming", "invokeImageModelStreaming", "invokeEmbeddingsModelStreaming", "converse", "converseStream", "applyGuardrail" ], "deprecated": false, "deprecationNote": "", "aut [...] "overrideEndpoint": { "index": 7, "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used i [...] "pojoRequest": { "index": 8, "kind": "parameter", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" }, "profileCredentialsName": { "index": 9, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this par [...] diff --git a/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc b/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc index a58d10e8b11c..dfc5e17b4020 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc +++ b/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc @@ -77,8 +77,8 @@ Camel-AWS Bedrock component provides the following operation on the producer sid - invokeImageModel - invokeEmbeddingsModel - invokeTextModelStreaming -- invokeImageModelStreaming -- invokeEmbeddingsModelStreaming +- invokeImageModelStreaming (deprecated) +- invokeEmbeddingsModelStreaming (deprecated) - converse - converseStream - applyGuardrail @@ -108,6 +108,10 @@ The streaming operations give the generated text. The image generation and embed response, so the three streaming operations work the same way, and an image or embedding model fails with an `IllegalArgumentException` that points to `invokeImageModel` or `invokeEmbeddingsModel`. +NOTE: The `invokeImageModelStreaming` and `invokeEmbeddingsModelStreaming` operations are deprecated and will be removed +in a later release. Use `invokeImageModel` or `invokeEmbeddingsModel` with an image generation or embedding model, and +`invokeTextModelStreaming` to stream the text of a text model. + ==== Streaming Output Modes Two streaming modes are supported: diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java index a026a3f1c389..b382a3810236 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java @@ -146,7 +146,9 @@ public class BedrockConfiguration implements Cloneable, AwsCommonConfiguration { } /** - * The operation to perform + * The operation to perform. The invokeImageModelStreaming and invokeEmbeddingsModelStreaming operations are + * deprecated, as the image generation and embedding models do not stream: use invokeImageModel, + * invokeEmbeddingsModel or invokeTextModelStreaming instead. */ public void setOperation(BedrockOperations operation) { this.operation = operation; diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockOperations.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockOperations.java index 36fd2a9cdfd9..6955aeaa28b7 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockOperations.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockOperations.java @@ -26,8 +26,18 @@ public enum BedrockOperations { invokeTextModelStreaming, + /** + * @deprecated the image generation models do not stream their response, use {@link #invokeImageModel} instead. With + * a text model, this operation is the same as {@link #invokeTextModelStreaming}. + */ + @Deprecated(since = "4.24") invokeImageModelStreaming, + /** + * @deprecated the embedding models do not stream their response, use {@link #invokeEmbeddingsModel} instead. With a + * text model, this operation is the same as {@link #invokeTextModelStreaming}. + */ + @Deprecated(since = "4.24") invokeEmbeddingsModelStreaming, converse, diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java index 66681709f276..74b8bed364c5 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java @@ -78,6 +78,7 @@ public class BedrockProducer extends DefaultProducer { } @Override + @SuppressWarnings("deprecation") public void process(Exchange exchange) throws Exception { switch (determineOperation(exchange)) { case invokeTextModel: diff --git a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducerRequestTest.java b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducerRequestTest.java index 5a2d2d0ad653..a084baeb0382 100644 --- a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducerRequestTest.java +++ b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducerRequestTest.java @@ -273,6 +273,20 @@ public class BedrockProducerRequestTest { exchange.getException().getMessage()); } + @Test + public void deprecatedStreamingOperationsStillStreamATextModel() throws Exception { + // CAMEL-26500: deprecated, but they keep working as invokeTextModelStreaming until they are removed + stream("{\"outputText\":\"Hello\"}", "{\"outputText\":\" world\",\"completionReason\":\"FINISH\"}"); + for (String operation : List.of("invokeImageModelStreaming", "invokeEmbeddingsModelStreaming")) { + assertNotNull(BedrockOperations.class.getField(operation).getAnnotation(Deprecated.class), operation); + + Exchange exchange = send(invokeUri(operation, TITAN), REQUEST); + + assertNull(exchange.getException(), operation); + assertEquals("Hello world", exchange.getMessage().getBody(), operation); + } + } + @Test public void novaStreamingGivesTheText() { stream("{\"messageStart\":{\"role\":\"assistant\"}}", diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc index c6c2feb52962..3d6a6132c525 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc @@ -713,6 +713,13 @@ Other changes of `aws-bedrock`: * `converseStream` with `guardrailTrace=true` now asks for the guardrail trace. * `invokeTextModel` with an AI21 Jamba model gives the `choices` of the response, which was null before. +=== camel-aws-bedrock - invokeImageModelStreaming and invokeEmbeddingsModelStreaming are deprecated + +The `invokeImageModelStreaming` and `invokeEmbeddingsModelStreaming` operations of `aws-bedrock` are deprecated, and +will be removed in a later release. The image generation and embedding models do not stream their response, so these +operations fail for such a model, and with a text model they are the same as `invokeTextModelStreaming`. Use +`invokeImageModel`, `invokeEmbeddingsModel` or `invokeTextModelStreaming` instead. + === camel-weather - the CamelWeatherLocation header is the location that is queried The latitude and longitude of the current geolocation (a location of `current`, or no location) are no longer written diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsBedrockComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsBedrockComponentBuilderFactory.java index 9308add1cedf..df4ab78c0f20 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsBedrockComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsBedrockComponentBuilderFactory.java @@ -175,7 +175,11 @@ public interface AwsBedrockComponentBuilderFactory { } /** - * The operation to perform. + * The operation to perform. The invokeImageModelStreaming and + * invokeEmbeddingsModelStreaming operations are deprecated, as the + * image generation and embedding models do not stream: use + * invokeImageModel, invokeEmbeddingsModel or invokeTextModelStreaming + * instead. * * The option is a: * <code>org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations</code> type. diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BedrockEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BedrockEndpointBuilderFactory.java index b5c168375220..5b1771b1f6d6 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BedrockEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BedrockEndpointBuilderFactory.java @@ -152,7 +152,11 @@ public interface BedrockEndpointBuilderFactory { return this; } /** - * The operation to perform. + * The operation to perform. The invokeImageModelStreaming and + * invokeEmbeddingsModelStreaming operations are deprecated, as the + * image generation and embedding models do not stream: use + * invokeImageModel, invokeEmbeddingsModel or invokeTextModelStreaming + * instead. * * The option is a: * <code>org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations</code> type. @@ -168,7 +172,11 @@ public interface BedrockEndpointBuilderFactory { return this; } /** - * The operation to perform. + * The operation to perform. The invokeImageModelStreaming and + * invokeEmbeddingsModelStreaming operations are deprecated, as the + * image generation and embedding models do not stream: use + * invokeImageModel, invokeEmbeddingsModel or invokeTextModelStreaming + * instead. * * The option will be converted to a * <code>org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations</code> type.
