File tree Expand file tree Collapse file tree 8 files changed +36
-31
lines changed
main/java/com/sap/ai/sdk/orchestration
test/java/com/sap/ai/sdk/orchestration Expand file tree Collapse file tree 8 files changed +36
-31
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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 ())
Original file line number Diff line number Diff line change 55import com .sap .ai .sdk .orchestration .model .ImageContent ;
66import com .sap .ai .sdk .orchestration .model .MultiChatMessageContent ;
77import com .sap .ai .sdk .orchestration .model .TextContent ;
8-
9- import javax .annotation .Nonnull ;
10- import javax .annotation .Nullable ;
118import java .util .ArrayList ;
129import java .util .List ;
10+ import javax .annotation .Nonnull ;
11+ import javax .annotation .Nullable ;
1312
1413public record MessageContentMulti (List <MultiMessageContent > multiContentList )
1514 implements MessageContent {
Original file line number Diff line number Diff line change 11package com .sap .ai .sdk .orchestration ;
22
3- public record MessageContentSingle (String content ) implements MessageContent {}
3+ public record MessageContentSingle (String content ) implements MessageContent {}
Original file line number Diff line number Diff 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" );
Original file line number Diff line number Diff line change 11package com .sap .ai .sdk .orchestration ;
22
3- import com .sap .ai .sdk .orchestration .model .MultiChatMessageContent ;
4- import java .util .List ;
53import java .util .stream .Stream ;
64import javax .annotation .Nonnull ;
7-
8- import com .sap .ai .sdk .orchestration .model .TextContent ;
95import lombok .Value ;
106import 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 }
Original file line number Diff line number Diff line change 11package com .sap .ai .sdk .orchestration ;
22
3- import com .sap .ai .sdk .orchestration .model .MultiChatMessageContent ;
43import java .util .List ;
54import java .util .stream .Stream ;
65import javax .annotation .Nonnull ;
Original file line number Diff line number Diff 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 ();
You can’t perform that action at this time.
0 commit comments