Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Message Serialization: Enhance deserialization #688

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,41 +38,45 @@ public abstract class AbstractMessage implements Message {

protected final MessageType messageType;

protected final String textContent;
protected final String content;

protected final List<Media> mediaData;
protected final List<Media> media;

/**
* Additional options for the message to influence the response, not a generative map.
*/
protected final Map<String, Object> properties;

protected AbstractMessage(MessageType messageType) {
this(messageType, "");
}

protected AbstractMessage(MessageType messageType, String content) {
this(messageType, content, Map.of());
}

protected AbstractMessage(MessageType messageType, String content, Map<String, Object> 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<Media> mediaData) {
this(messageType, textContent, mediaData, Map.of());
protected AbstractMessage(MessageType messageType, String content, List<Media> media) {
this(messageType, content, media, Map.of());
}

protected AbstractMessage(MessageType messageType, String textContent, List<Media> mediaData,
Map<String, Object> messageProperties) {
protected AbstractMessage(MessageType messageType, String content, List<Media> media,
Map<String, Object> 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;
}

Expand All @@ -87,10 +91,10 @@ protected AbstractMessage(MessageType messageType, Resource resource, Map<String

this.messageType = messageType;
this.properties = messageProperties;
this.mediaData = new ArrayList<>();
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);
Expand All @@ -99,12 +103,12 @@ protected AbstractMessage(MessageType messageType, Resource resource, Map<String

@Override
public String getContent() {
return this.textContent;
return this.content;
}

@Override
public List<Media> getMedia() {
return this.mediaData;
return this.media;
}

@Override
Expand All @@ -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;
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
*/
public class AssistantMessage extends AbstractMessage {

public AssistantMessage() {
super(MessageType.ASSISTANT);
}

public AssistantMessage(String content) {
super(MessageType.ASSISTANT, content);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
*/
public class FunctionMessage extends AbstractMessage {

public FunctionMessage() {
super(MessageType.FUNCTION);
}

public FunctionMessage(String content) {
super(MessageType.FUNCTION, content);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@
*/
public class SystemMessage extends AbstractMessage {

public SystemMessage() {
super(MessageType.SYSTEM);
}

public SystemMessage(String content) {
super(MessageType.SYSTEM, content);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@
*/
public class UserMessage extends AbstractMessage {

public UserMessage() {
super(MessageType.USER);
}

public UserMessage(String message) {
super(MessageType.USER, message);
}
Expand Down