Skip to content

Commit 1a582d1

Browse files
committed
added the Bedrock converse example
1 parent 0755edc commit 1a582d1

File tree

4 files changed

+24
-32
lines changed

4 files changed

+24
-32
lines changed

.doc_gen/metadata/bedrock-runtime_metadata.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,22 @@ bedrock-runtime_Scenario_ToolUse:
189189
synopsis: "build a typical interaction between an application, a generative AI model, and connected tools or APIs to mediate interactions between the AI and the outside world. It uses the example of connecting an external weather API to the AI model so it can provide real-time weather information based on user input."
190190
category: Scenarios
191191
languages:
192+
Java:
193+
versions:
194+
- sdk_version: 2
195+
github: javav2/example_code/bedrock-runtime
196+
excerpts:
197+
- description: "The primary execution of the scenario flow. This scenario orchestrates the conversation between the user, the &BR; Converse API, and a weather tool."
198+
snippet_tags:
199+
- bedrock.converseTool.javav2.scenario
200+
- description: "The weather tool used by the demo. This file defines the tool specification and implements the logic to retrieve weather data using from the Open-Meteo API."
201+
genai: some
202+
snippet_tags:
203+
- bedrock.converseTool.javav2.weathertool
204+
- description: "The Converse API action with a tool configuration."
205+
genai: some
206+
snippet_tags:
207+
- bedrockruntime.java2.converse.main
192208
.NET:
193209
versions:
194210
- sdk_version: 3

javav2/example_code/bedrock-runtime/src/main/java/com/example/bedrockruntime/scenario/BedrockActions.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,22 @@
11
package com.example.bedrockruntime.scenario;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import org.json.JSONArray;
5-
import org.json.JSONObject;
3+
64
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
7-
import software.amazon.awssdk.core.document.Document;
85
import software.amazon.awssdk.core.retry.RetryMode;
96
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
107
import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient;
118
import software.amazon.awssdk.regions.Region;
129
import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeAsyncClient;
13-
import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient;
14-
import software.amazon.awssdk.services.bedrockruntime.model.BedrockRuntimeException;
15-
import software.amazon.awssdk.services.bedrockruntime.model.ContentBlock;
1610
import software.amazon.awssdk.services.bedrockruntime.model.ConverseRequest;
1711
import software.amazon.awssdk.services.bedrockruntime.model.ConverseResponse;
1812
import software.amazon.awssdk.services.bedrockruntime.model.Message;
1913
import software.amazon.awssdk.services.bedrockruntime.model.SystemContentBlock;
2014
import software.amazon.awssdk.services.bedrockruntime.model.Tool;
2115
import software.amazon.awssdk.services.bedrockruntime.model.ToolConfiguration;
22-
import software.amazon.awssdk.services.bedrockruntime.model.ToolInputSchema;
2316
import software.amazon.awssdk.services.bedrockruntime.model.ToolSpecification;
24-
2517
import java.time.Duration;
2618
import java.util.ArrayList;
27-
import java.util.HashMap;
2819
import java.util.List;
29-
import java.util.Map;
30-
import com.fasterxml.jackson.databind.ObjectMapper;
31-
import java.util.concurrent.CompletableFuture;
3220

3321
public class BedrockActions {
3422

@@ -65,6 +53,7 @@ private BedrockRuntimeAsyncClient getClient() {
6553
return bedrockRuntimeClient;
6654
}
6755

56+
// snippet-start:[bedrockruntime.java2.converse.main]
6857
/**
6958
* Sends an asynchronous converse request to the AI model.
7059
*
@@ -107,6 +96,7 @@ public ConverseResponse sendConverseRequestAsync(String modelId, String systemPr
10796

10897
return null;
10998
}
99+
// snippet-end:[bedrockruntime.java2.converse.main]
110100
}
111101

112102

javav2/example_code/bedrock-runtime/src/main/java/com/example/bedrockruntime/scenario/BedrockScenario.java

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,22 @@
44
package com.example.bedrockruntime.scenario;
55

66
import java.util.ArrayList;
7-
import java.util.HashMap;
87
import java.util.List;
98
import java.util.Map;
109
import java.util.Objects;
1110
import java.util.Scanner;
12-
import java.util.concurrent.CompletableFuture;
13-
1411
import software.amazon.awssdk.core.document.Document;
1512
import software.amazon.awssdk.services.bedrockruntime.model.ContentBlock;
1613
import software.amazon.awssdk.services.bedrockruntime.model.ConversationRole;
1714
import software.amazon.awssdk.services.bedrockruntime.model.ConverseOutput;
1815
import software.amazon.awssdk.services.bedrockruntime.model.ConverseResponse;
19-
import software.amazon.awssdk.services.bedrockruntime.model.DocumentBlock;
2016
import software.amazon.awssdk.services.bedrockruntime.model.Message;
21-
import software.amazon.awssdk.services.bedrockruntime.model.StopReason;
2217
import software.amazon.awssdk.services.bedrockruntime.model.ToolResultBlock;
2318
import software.amazon.awssdk.services.bedrockruntime.model.ToolResultContentBlock;
2419
import software.amazon.awssdk.services.bedrockruntime.model.ToolSpecification;
2520
import software.amazon.awssdk.services.bedrockruntime.model.ToolUseBlock;
2621

22+
// snippet-start:[bedrock.converseTool.javav2.scenario]
2723
/*
2824
This demo illustrates a tool use scenario using Amazon Bedrock's Converse API and a weather tool.
2925
The program interacts with a foundation model on Amazon Bedrock to provide weather information based on user
@@ -58,7 +54,6 @@ public class BedrockScenario {
5854
- Complete the entire process until you have all required data before sending the complete response.
5955
""";
6056

61-
6257
public static void main(String[] args) {
6358
Scanner scanner = new Scanner(System.in);
6459
System.out.println("""
@@ -95,7 +90,6 @@ public static void main(String[] args) {
9590
System.out.println(DASHES);
9691
}
9792

98-
9993
/**
10094
Starts the conversation with the user and handles the interaction with Bedrock.
10195
*/
@@ -241,16 +235,6 @@ private static ToolResponse invokeTool(ToolUseBlock payload) {
241235
} else {
242236
String errorMessage = "The requested tool with name "+toolName +" does not exist.";
243237
System.out.println(errorMessage);
244-
/*
245-
Map<String, Object> content = new HashMap<>();
246-
content.put("error", true);
247-
content.put("message", errorMessage);
248-
249-
ToolResponse toolResponse = new ToolResponse();
250-
toolResponse.setContent(content);
251-
toolResponse.setToolUseId(payload.toolUseId());
252-
253-
*/
254238
return null;
255239
}
256240
}
@@ -327,4 +311,5 @@ public static void printFooter()
327311
=================================================
328312
""");
329313
}
330-
}
314+
}
315+
// snippet-end:[bedrock.converseTool.javav2.scenario]

javav2/example_code/bedrock-runtime/src/main/java/com/example/bedrockruntime/scenario/WeatherTool.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import org.json.JSONObject;
2929

30+
// snippet-start:[bedrock.converseTool.javav2.weathertool]
3031
public class WeatherTool {
3132

3233
private static final Logger logger = LoggerFactory.getLogger(WeatherTool.class);
@@ -159,5 +160,5 @@ private static Document convertToDocument(Object value) {
159160
}
160161
return Document.fromNull(); // Handle null values safely
161162
}
162-
163163
}
164+
// snippet-end:[bedrock.converseTool.javav2.weathertool]

0 commit comments

Comments
 (0)