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 2024/02/27 10:32:01 UTC
(camel) 03/06: CAMEL-20463 - Camel AWS bedrock component
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch bedrock
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 951ea74265296f1096d063a2173de5d48bd93ef6
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Feb 27 10:33:45 2024 +0100
CAMEL-20463 - Camel AWS bedrock component
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
...s-component.adoc => aws-bedrock-component.adoc} | 78 ++++++++++++----------
1 file changed, 44 insertions(+), 34 deletions(-)
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/docs/aws2-eks-component.adoc b/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc
similarity index 55%
rename from components/camel-aws/camel-aws-bedrock/src/main/docs/aws2-eks-component.adoc
rename to components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc
index c9825057f00..ca3689727ae 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/docs/aws2-eks-component.adoc
+++ b/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc
@@ -1,10 +1,10 @@
-= AWS Elastic Kubernetes Service (EKS) Component
-:doctitle: AWS Elastic Kubernetes Service (EKS)
-:shortname: aws2-eks
-:artifactid: camel-aws2-eks
+= AWS Bedrock Component
+:doctitle: AWS Bedrock
+:shortname: aws-bedrock
+:artifactid: camel-aws2-bedrock
:description: Manage AWS EKS cluster instances.
-:since: 3.1
-:supportlevel: Stable
+:since: 4.5
+:supportlevel: Preview
:tabs-sync-option:
:component-header: Only producer is supported
//Manually maintained attributes
@@ -15,20 +15,20 @@
*{component-header}*
-The AWS2 EKS component supports create, delete, describe and list clusters
-https://aws.amazon.com/eks/[AWS EKS] clusters instances.
+The AWS2 Bedrock component supports invoking a supported LLM model from
+https://aws.amazon.com/bedrock/[AWS Bedrock] service.
Prerequisites
You must have a valid Amazon Web Services developer account, and be
-signed up to use Amazon EKS. More information is available at
-https://aws.amazon.com/eks/[Amazon EKS].
+signed up to use Amazon Bedrock. More information is available at
+https://aws.amazon.com/bedrock/[Amazon Bedrock].
== URI Format
-------------------------
-aws2-eks://label[?options]
+aws-bedrock://label[?options]
-------------------------
You can append query options to the URI in the following format:
@@ -50,11 +50,11 @@ include::partial$component-endpoint-options.adoc[]
// endpoint options: END
-Required EKS component options
+Required Bedrock component options
-You have to provide the amazonEKSClient in the
+You have to provide the bedrockRuntimeClient in the
Registry or your accessKey and secretKey to access
-the https://aws.amazon.com/eks/[Amazon EKS] service.
+the https://aws.amazon.com/bedrock/[Amazon Bedrock] service.
== Usage
@@ -81,38 +81,48 @@ For more information about this you can look at https://docs.aws.amazon.com/sdk-
include::partial$component-endpoint-headers.adoc[]
// component headers: END
-=== EKS Producer operations
+=== Bedrock Producer operations
-Camel-AWS EKS component provides the following operation on the producer side:
+Camel-AWS Bedrock component provides the following operation on the producer side:
-- listClusters
-- createCluster
-- describeCluster
-- deleteCluster
+- invokeModel
== Producer Examples
-- listClusters: this operation will list the available clusters in EKS
+- invokeModel: this operation will invoke a model from Bedrock
[source,java]
--------------------------------------------------------------------------------
-from("direct:listClusters")
- .to("aws2-eks://test?eksClient=#amazonEksClient&operation=listClusters")
+from("direct:invoke")
+ .to("aws-bedrock://test?bedrockRuntimeClient=#amazonBedrockRuntimeClient&operation=invokeModel&modelId="
+ + BedrockModels.TITAN_TEXT_EXPRESS_V1.model))
--------------------------------------------------------------------------------
-== Using a POJO as body
-
-Sometimes building an AWS Request can be complex because of multiple options. We introduce the possibility to use a POJO as a body.
-In AWS EKS there are multiple operations you can submit, as an example for List cluster request, you can do something like:
+and you can the send to the direct endpoint something like
[source,java]
-------------------------------------------------------------------------------------------------------
-from("direct:start")
- .setBody(ListClustersRequest.builder().maxResults(12).build())
- .to("aws2-eks://test?eksClient=#amazonEksClient&operation=listClusters&pojoRequest=true")
-------------------------------------------------------------------------------------------------------
+--------------------------------------------------------------------------------
+ final Exchange result = template.send("direct:invoke", exchange -> {
+ ObjectMapper mapper = new ObjectMapper();
+ ObjectNode rootNode = mapper.createObjectNode();
+ rootNode.put("inputText",
+ "User: Generate synthetic data for daily product sales in various categories - include row number, product name, category, date of sale and price. Produce output in JSON format. Count records and ensure there are no more than 5.");
+
+ ArrayNode stopSequences = mapper.createArrayNode();
+ stopSequences.add("User:");
+ ObjectNode childNode = mapper.createObjectNode();
+ childNode.put("maxTokenCount", 1024);
+ childNode.put("stopSequences", stopSequences);
+ childNode.put("temperature", 0).put("topP", 1);
+
+ rootNode.put("textGenerationConfig", childNode);
+ exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode));
+ exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json");
+ exchange.getMessage().setHeader(BedrockConstants.MODEL_ACCEPT_CONTENT_TYPE, "application/json");
+ });
+--------------------------------------------------------------------------------
-In this way, you'll pass the request directly without the need of passing headers and options specifically related to this operation.
+where template is a ProducerTemplate.
== Dependencies
@@ -124,7 +134,7 @@ Maven users will need to add the following dependency to their pom.xml.
---------------------------------------
<dependency>
<groupId>org.apache.camel</groupId>
- <artifactId>camel-aws2-eks</artifactId>
+ <artifactId>camel-aws-bedrock</artifactId>
<version>${camel-version}</version>
</dependency>
---------------------------------------