Skip to content

Commit a2fe90f

Browse files
committed
Remove or hide unneeded constructors, use Message.user() etc. instead
1 parent cd20ca8 commit a2fe90f

File tree

6 files changed

+53
-35
lines changed

6 files changed

+53
-35
lines changed

orchestration/src/main/java/com/sap/ai/sdk/orchestration/AssistantMessage.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,4 @@ public MessageContent content() {
2525
public AssistantMessage(String singleMessage) {
2626
content = new MessageContentSingle(singleMessage);
2727
}
28-
29-
public AssistantMessage(MessageContentSingle messageContent) {
30-
content = messageContent;
31-
}
3228
}

orchestration/src/main/java/com/sap/ai/sdk/orchestration/Message.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,20 @@ static UserMessage user(@Nonnull final String msg) {
2323
return new UserMessage(msg);
2424
}
2525

26+
/**
27+
* A convenience method to create a user message.
28+
*
29+
* @param msg the message content.
30+
* @return the user message.
31+
*/
32+
@Nonnull
33+
static UserMessage user(@Nonnull final MessageContent msg) {
34+
return new UserMessage(msg);
35+
}
36+
37+
// TODO: discuss whether we want a static AssistantMessage user(@Nonnull final MessageContent msg)
38+
// pro: consistency
39+
// con: Only works if exactly one string is in there
2640
/**
2741
* A convenience method to create an assistant message.
2842
*
@@ -45,6 +59,17 @@ static SystemMessage system(@Nonnull final String msg) {
4559
return new SystemMessage(msg);
4660
}
4761

62+
/**
63+
* A convenience method to create a system message.
64+
*
65+
* @param msg the message content.
66+
* @return the system message.
67+
*/
68+
@Nonnull
69+
static SystemMessage system(@Nonnull final MessageContent msg) {
70+
return new SystemMessage(msg);
71+
}
72+
4873
/**
4974
* Converts the message to a serializable ChatMessage object.
5075
*

orchestration/src/main/java/com/sap/ai/sdk/orchestration/MessageContentMulti.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
public record MessageContentMulti(List<MultiMessageContent> multiContentList)
1515
implements MessageContent {
16-
public MessageContentMulti {}
1716

1817
public MessageContentMulti(MultiChatMessageContent... multiChatContents) {
1918
this(convertIntoMultiMessageList(multiChatContents));

orchestration/src/main/java/com/sap/ai/sdk/orchestration/OrchestrationChatResponse.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.sap.ai.sdk.orchestration.model.LLMChoice;
99
import com.sap.ai.sdk.orchestration.model.LLMModuleResultSynchronous;
1010
import com.sap.ai.sdk.orchestration.model.MultiChatMessage;
11+
import com.sap.ai.sdk.orchestration.model.MultiChatMessageContent;
1112
import com.sap.ai.sdk.orchestration.model.TokenUsage;
1213
import java.util.ArrayList;
1314
import java.util.List;
@@ -64,22 +65,32 @@ public List<Message> getAllMessages() throws IllegalArgumentException {
6465
if (chatMessage instanceof ChatMessage simpleMsg) {
6566
final var message =
6667
switch (simpleMsg.getRole()) {
67-
case "user" -> new UserMessage(simpleMsg.getContent());
68-
case "assistant" -> new AssistantMessage(simpleMsg.getContent());
69-
case "system" -> new SystemMessage(simpleMsg.getContent());
68+
case "user" -> Message.user(simpleMsg.getContent());
69+
case "assistant" -> Message.assistant(simpleMsg.getContent());
70+
case "system" -> Message.system(simpleMsg.getContent());
7071
default ->
71-
throw new IllegalArgumentException("Unexpected role: " + simpleMsg.getRole());
72+
throw new IllegalArgumentException(
73+
"Unexpected role: "
74+
+ simpleMsg.getRole()
75+
+ ". Only 'user', 'assistant' and 'system' are supported.");
7276
};
7377
messages.add(message);
7478
} else if (chatMessage instanceof MultiChatMessage mCMessage) {
75-
messages.add(new UserMessage(mCMessage.getContent()));
79+
messages.add(
80+
switch (mCMessage.getRole()) {
81+
case "user" -> Message.user(new MessageContentMulti(mCMessage.getContent().toArray(MultiChatMessageContent[]::new)));
82+
case "system" -> Message.system(new MessageContentMulti(mCMessage.getContent().toArray(MultiChatMessageContent[]::new)));
83+
default ->
84+
throw new IllegalArgumentException("Unexpected role using MultiChatMessage: " + mCMessage.getRole() + ". Only 'user' and 'system' are supported.");
85+
}
86+
);
7687
} else {
7788
throw new IllegalArgumentException(
7889
"Messages of type " + chatMessage.getClass() + " are not supported by convenience API");
7990
}
8091
}
8192

82-
messages.add(new AssistantMessage(getChoice().getMessage().getContent()));
93+
messages.add(Message.assistant(getChoice().getMessage().getContent()));
8394
return messages;
8495
}
8596

orchestration/src/main/java/com/sap/ai/sdk/orchestration/SystemMessage.java

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ public class SystemMessage implements Message {
1818
@Nonnull String role = "system";
1919

2020
/** The content of the message. */
21-
@Nonnull
22-
MessageContent content;
21+
@Nonnull MessageContent content;
2322

2423
@Override
2524
@Nonnull
@@ -31,24 +30,18 @@ public SystemMessage(String singleMessage) {
3130
content = new MessageContentSingle(singleMessage);
3231
}
3332

34-
public SystemMessage(MessageContent messageContent) {
33+
SystemMessage(MessageContent messageContent) {
34+
if (!(messageContent instanceof MessageContentSingle)) {
35+
((MessageContentMulti) messageContent).multiContentList().stream()
36+
.filter(mCMC -> !(mCMC instanceof MultiMessageTextContent))
37+
.findAny()
38+
.ifPresent(mCMC -> {
39+
throw new IllegalArgumentException("Only TextContent is supported for SystemMessage");
40+
});
41+
}
3542
content = messageContent;
3643
}
3744

38-
public SystemMessage(List<MultiChatMessageContent> multiChatMessageContentList) {
39-
var contentArray = multiChatMessageContentList.stream()
40-
.map(mCMC -> {
41-
if (mCMC instanceof TextContent) {
42-
return (TextContent) mCMC;
43-
} else {
44-
throw new IllegalArgumentException("Only TextContent is supported for SystemMessage");
45-
}
46-
})
47-
.toArray(TextContent[]::new);
48-
content =
49-
new MessageContentMulti(contentArray);
50-
}
51-
5245
@Nonnull
5346
public SystemMessage addText(@Nonnull String... messages) {
5447
return new SystemMessage(

orchestration/src/main/java/com/sap/ai/sdk/orchestration/UserMessage.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,10 @@ public UserMessage(String singleMessage) {
2828
content = new MessageContentSingle(singleMessage);
2929
}
3030

31-
public UserMessage(MessageContent messageContent) {
31+
UserMessage(MessageContent messageContent) {
3232
content = messageContent;
3333
}
3434

35-
public UserMessage(List<MultiChatMessageContent> multiChatMessageContentList) {
36-
content =
37-
new MessageContentMulti(
38-
multiChatMessageContentList.toArray(MultiChatMessageContent[]::new));
39-
}
40-
4135
@Nonnull
4236
public UserMessage addText(@Nonnull String... messages) {
4337
return new UserMessage(

0 commit comments

Comments
 (0)