diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java index 77b54afeae..a4dc6208cd 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java @@ -38,15 +38,19 @@ public abstract class AbstractMessage implements Message { protected final MessageType messageType; - protected final String textContent; + protected final String content; - protected final List mediaData; + protected final List media; /** * Additional options for the message to influence the response, not a generative map. */ protected final Map properties; + protected AbstractMessage(MessageType messageType) { + this(messageType, ""); + } + protected AbstractMessage(MessageType messageType, String content) { this(messageType, content, Map.of()); } @@ -54,25 +58,25 @@ protected AbstractMessage(MessageType messageType, String content) { protected AbstractMessage(MessageType messageType, String content, Map messageProperties) { Assert.notNull(messageType, "Message type must not be null"); this.messageType = messageType; - this.textContent = content; - this.mediaData = new ArrayList<>(); + this.content = content; + this.media = new ArrayList<>(); this.properties = messageProperties; } - protected AbstractMessage(MessageType messageType, String textContent, List mediaData) { - this(messageType, textContent, mediaData, Map.of()); + protected AbstractMessage(MessageType messageType, String content, List media) { + this(messageType, content, media, Map.of()); } - protected AbstractMessage(MessageType messageType, String textContent, List mediaData, - Map messageProperties) { + protected AbstractMessage(MessageType messageType, String content, List media, + Map messageProperties) { Assert.notNull(messageType, "Message type must not be null"); - Assert.notNull(textContent, "Content must not be null"); - Assert.notNull(mediaData, "media data must not be null"); + Assert.notNull(content, "Content must not be null"); + Assert.notNull(media, "media data must not be null"); this.messageType = messageType; - this.textContent = textContent; - this.mediaData = new ArrayList<>(mediaData); + this.content = content; + this.media = new ArrayList<>(media); this.properties = messageProperties; } @@ -87,10 +91,10 @@ protected AbstractMessage(MessageType messageType, Resource resource, Map(); + this.media = new ArrayList<>(); try (InputStream inputStream = resource.getInputStream()) { - this.textContent = StreamUtils.copyToString(inputStream, Charset.defaultCharset()); + this.content = StreamUtils.copyToString(inputStream, Charset.defaultCharset()); } catch (IOException ex) { throw new RuntimeException("Failed to read resource", ex); @@ -99,12 +103,12 @@ protected AbstractMessage(MessageType messageType, Resource resource, Map getMedia() { - return this.mediaData; + return this.media; } @Override @@ -121,7 +125,7 @@ public MessageType getMessageType() { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((mediaData == null) ? 0 : mediaData.hashCode()); + result = prime * result + ((media == null) ? 0 : media.hashCode()); result = prime * result + ((properties == null) ? 0 : properties.hashCode()); result = prime * result + ((messageType == null) ? 0 : messageType.hashCode()); return result; @@ -136,11 +140,11 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) return false; AbstractMessage other = (AbstractMessage) obj; - if (mediaData == null) { - if (other.mediaData != null) + if (media == null) { + if (other.media != null) return false; } - else if (!mediaData.equals(other.mediaData)) + else if (!media.equals(other.media)) return false; if (properties == null) { if (other.properties != null) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AssistantMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AssistantMessage.java index c5f6831abb..f999873f31 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AssistantMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AssistantMessage.java @@ -25,6 +25,10 @@ */ public class AssistantMessage extends AbstractMessage { + public AssistantMessage() { + super(MessageType.ASSISTANT); + } + public AssistantMessage(String content) { super(MessageType.ASSISTANT, content); } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java index 06485ac57d..e18e7ec480 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java @@ -23,6 +23,10 @@ */ public class FunctionMessage extends AbstractMessage { + public FunctionMessage() { + super(MessageType.FUNCTION); + } + public FunctionMessage(String content) { super(MessageType.FUNCTION, content); } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java index 0c0a20e042..a046ee5ee4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java @@ -26,6 +26,10 @@ */ public class SystemMessage extends AbstractMessage { + public SystemMessage() { + super(MessageType.SYSTEM); + } + public SystemMessage(String content) { super(MessageType.SYSTEM, content); } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java index 4c9229516b..e704721bd0 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java @@ -27,6 +27,10 @@ */ public class UserMessage extends AbstractMessage { + public UserMessage() { + super(MessageType.USER); + } + public UserMessage(String message) { super(MessageType.USER, message); }