-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Labels
Description
If the message type used is UserMessage, it will not be built correctly
List<ChatCompletionMessage> chatCompletionMessages = prompt.getInstructions().stream().map(m -> {
// Add text content.
List<MediaContent> contents = new ArrayList<>(List.of(new MediaContent(m.getContent())));
if (m instanceof UserMessage userMessage) {
if (!CollectionUtils.isEmpty(userMessage.getMedia())) {
// Add media content.
contents.addAll(userMessage.getMedia()
.stream()
.map(media -> new MediaContent(
new MediaContent.ImageUrl(this.fromMediaData(media.getMimeType(), media.getData()))))
.toList());
}
}
return new ChatCompletionMessage(contents, ChatCompletionMessage.Role.valueOf(m.getMessageType().name()));
}).toList();
Here's my modified example
List<ChatCompletionMessage> chatCompletionMessages = prompt.getInstructions().stream().map(m -> {
if (m instanceof UserMessage userMessage) {
List<ChatCompletionMessage.MediaContent> contents = userMessage.getMedia().stream()
.flatMap(media -> Stream.of(
new ChatCompletionMessage.MediaContent(userMessage.getContent()),
new ChatCompletionMessage.MediaContent(
new MediaContent.ImageUrl(this.fromMediaData(media.getMimeType(), media.getData())))
))
.collect(Collectors.toList());
if (!contents.isEmpty()) {
return new ChatCompletionMessage(contents, ChatCompletionMessage.Role.valueOf(m.getMessageType().name()));
}
}
return new ChatCompletionMessage(m.getContent(), ChatCompletionMessage.Role.valueOf(m.getMessageType().name()));
}).collect(Collectors.toList());