Skip to content

Commit 07fa29d

Browse files
Stuart LoxtonStuartLox
authored andcommitted
[Enhancement] - Derrive requestMetadata from user params
Signed-off-by: Stuart Loxton <[email protected]> Signed-off-by: Stuart Loxton <[email protected]>
1 parent 8ba206e commit 07fa29d

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

models/spring-ai-bedrock-converse/src/main/java/org/springframework/ai/bedrock/converse/BedrockProxyChatModel.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@
2222
import java.net.URL;
2323
import java.net.URLConnection;
2424
import java.time.Duration;
25-
import java.util.*;
25+
import java.util.ArrayList;
26+
import java.util.Base64;
27+
import java.util.List;
28+
import java.util.Map;
29+
import java.util.Set;
2630

2731
import io.micrometer.observation.Observation;
2832
import io.micrometer.observation.ObservationRegistry;
@@ -421,7 +425,7 @@ else if (message.getMessageType() == MessageType.TOOL) {
421425
Document additionalModelRequestFields = ConverseApiUtils
422426
.getChatOptionsAdditionalModelRequestFields(this.defaultOptions, prompt.getOptions());
423427

424-
HashMap<String, String> requestMetadata = new HashMap<>();
428+
Map<String, String> requestMetadata = ConverseApiUtils.getRequestMetadata(prompt);
425429

426430
return ConverseRequest.builder()
427431
.modelId(updatedRuntimeOptions.getModel())

models/spring-ai-bedrock-converse/src/main/java/org/springframework/ai/bedrock/converse/api/ConverseApiUtils.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.concurrent.atomic.AtomicBoolean;
2626
import java.util.stream.Collectors;
2727

28+
import org.springframework.ai.chat.prompt.Prompt;
2829
import reactor.core.publisher.Flux;
2930
import reactor.core.publisher.Mono;
3031
import software.amazon.awssdk.core.SdkField;
@@ -384,6 +385,27 @@ else if (value instanceof Map mapValue) {
384385
}
385386
}
386387

388+
@SuppressWarnings("unchecked")
389+
public static Map<String, String> getRequestMetadata(Prompt prompt) {
390+
Map<String, Object> metadata = prompt.getUserMessage().getMetadata();
391+
392+
if (metadata.isEmpty()) {
393+
return Map.of();
394+
}
395+
396+
Map<String, String> result = new HashMap<>();
397+
for (Map.Entry<String, Object> entry : metadata.entrySet()) {
398+
String key = entry.getKey();
399+
Object value = entry.getValue();
400+
401+
if (key != null && value != null) {
402+
result.put(key, value.toString());
403+
}
404+
}
405+
406+
return result;
407+
}
408+
387409
private static Document convertMapToDocument(Map<String, Object> value) {
388410
Map<String, Document> attr = value.entrySet()
389411
.stream()

models/spring-ai-bedrock-converse/src/test/java/org/springframework/ai/bedrock/converse/BedrockConverseChatClientIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ void call() {
7070
.system(s -> s.text(this.systemTextResource)
7171
.param("name", "Bob")
7272
.param("voice", "pirate"))
73-
.user("Tell me about 3 famous pirates from the Golden Age of Piracy and what they did")
73+
.user(u -> u.text("Tell me about 3 famous pirates from the Golden Age of Piracy and what they did")
74+
.param("requestId", "1234")
75+
)
7476
.call()
7577
.chatResponse();
7678
// @formatter:on

0 commit comments

Comments
 (0)