Skip to content

Commit f173057

Browse files
committed
Prepare draft
1 parent ec899a4 commit f173057

File tree

8 files changed

+36
-31
lines changed

8 files changed

+36
-31
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ public class AssistantMessage implements Message {
1313
@Nonnull String role = "assistant";
1414

1515
/** The content of the message. */
16-
@Nonnull
17-
MessageContentSingle content;
16+
@Nonnull MessageContentSingle content;
1817

1918
@Override
2019
@Nonnull

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@ static UserMessage user(@Nonnull final MessageContent msg) {
3434
return new UserMessage(msg);
3535
}
3636

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
4037
/**
4138
* A convenience method to create an assistant message.
4239
*
@@ -78,7 +75,9 @@ static SystemMessage system(@Nonnull final MessageContent msg) {
7875
@Nonnull
7976
default ChatMessagesInner createChatMessage() {
8077
if (this.content() instanceof MessageContentSingle) {
81-
return ChatMessage.create().role(role()).content(((MessageContentSingle) content()).content());
78+
return ChatMessage.create()
79+
.role(role())
80+
.content(((MessageContentSingle) content()).content());
8281
} else if (this.content() instanceof MessageContentMulti mCMulti) {
8382
return MultiChatMessage.create()
8483
.role(role())

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55
import com.sap.ai.sdk.orchestration.model.ImageContent;
66
import com.sap.ai.sdk.orchestration.model.MultiChatMessageContent;
77
import com.sap.ai.sdk.orchestration.model.TextContent;
8-
9-
import javax.annotation.Nonnull;
10-
import javax.annotation.Nullable;
118
import java.util.ArrayList;
129
import java.util.List;
10+
import javax.annotation.Nonnull;
11+
import javax.annotation.Nullable;
1312

1413
public record MessageContentMulti(List<MultiMessageContent> multiContentList)
1514
implements MessageContent {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package com.sap.ai.sdk.orchestration;
22

3-
public record MessageContentSingle(String content) implements MessageContent{}
3+
public record MessageContentSingle(String content) implements MessageContent {}

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

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,22 @@ public List<Message> getAllMessages() throws IllegalArgumentException {
7676
};
7777
messages.add(message);
7878
} else if (chatMessage instanceof MultiChatMessage mCMessage) {
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-
);
79+
messages.add(
80+
switch (mCMessage.getRole()) {
81+
case "user" ->
82+
Message.user(
83+
new MessageContentMulti(
84+
mCMessage.getContent().toArray(MultiChatMessageContent[]::new)));
85+
case "system" ->
86+
Message.system(
87+
new MessageContentMulti(
88+
mCMessage.getContent().toArray(MultiChatMessageContent[]::new)));
89+
default ->
90+
throw new IllegalArgumentException(
91+
"Unexpected role using MultiChatMessage: "
92+
+ mCMessage.getRole()
93+
+ ". Only 'user' and 'system' are supported.");
94+
});
8795
} else {
8896
throw new IllegalArgumentException(
8997
"Messages of type " + chatMessage.getClass() + " are not supported by convenience API");

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

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package com.sap.ai.sdk.orchestration;
22

3-
import com.sap.ai.sdk.orchestration.model.MultiChatMessageContent;
4-
import java.util.List;
53
import java.util.stream.Stream;
64
import javax.annotation.Nonnull;
7-
8-
import com.sap.ai.sdk.orchestration.model.TextContent;
95
import lombok.Value;
106
import lombok.experimental.Accessors;
117

@@ -32,12 +28,15 @@ public SystemMessage(String singleMessage) {
3228

3329
SystemMessage(MessageContent messageContent) {
3430
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-
});
31+
((MessageContentMulti) messageContent)
32+
.multiContentList().stream()
33+
.filter(mCMC -> !(mCMC instanceof MultiMessageTextContent))
34+
.findAny()
35+
.ifPresent(
36+
mCMC -> {
37+
throw new IllegalArgumentException(
38+
"Only TextContent is supported for SystemMessage");
39+
});
4140
}
4241
content = messageContent;
4342
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.sap.ai.sdk.orchestration;
22

3-
import com.sap.ai.sdk.orchestration.model.MultiChatMessageContent;
43
import java.util.List;
54
import java.util.stream.Stream;
65
import javax.annotation.Nonnull;

orchestration/src/test/java/com/sap/ai/sdk/orchestration/OrchestrationUnitTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,14 @@ void testTemplating() throws IOException {
179179
assertThat(response.getRequestId()).isEqualTo("26ea36b5-c196-4806-a9a6-a686f0c6ad91");
180180
final var messageList = result.getAllMessages();
181181

182-
assertThat(((MessageContentSingle) messageList.get(0).content()).content()).isEqualTo("You are a multi language translator");
182+
assertThat(((MessageContentSingle) messageList.get(0).content()).content())
183+
.isEqualTo("You are a multi language translator");
183184
assertThat(messageList.get(0).role()).isEqualTo("system");
184185
assertThat(((MessageContentSingle) messageList.get(1).content()).content())
185186
.isEqualTo("Reply with 'Orchestration Service is working!' in German");
186187
assertThat(messageList.get(1).role()).isEqualTo("user");
187-
assertThat(((MessageContentSingle) messageList.get(2).content()).content()).isEqualTo("Orchestration Service funktioniert!");
188+
assertThat(((MessageContentSingle) messageList.get(2).content()).content())
189+
.isEqualTo("Orchestration Service funktioniert!");
188190
assertThat(messageList.get(2).role()).isEqualTo("assistant");
189191

190192
var llm = (LLMModuleResultSynchronous) response.getModuleResults().getLlm();

0 commit comments

Comments
 (0)