11package com .sap .ai .sdk .orchestration ;
22
33import com .google .common .annotations .Beta ;
4+
5+ import java .util .LinkedList ;
46import java .util .List ;
57import java .util .stream .Stream ;
68import javax .annotation .Nonnull ;
79import javax .annotation .Nullable ;
810import lombok .Getter ;
911import lombok .Value ;
1012import lombok .experimental .Accessors ;
13+ import lombok .experimental .Tolerate ;
1114
1215/** Represents a chat message as 'user' to the orchestration service. */
1316@ Value
@@ -28,32 +31,29 @@ public class UserMessage implements Message {
2831 * @param message the first message.
2932 * @param additionalMessages the additional messages.
3033 */
34+ @ Tolerate
3135 public UserMessage (@ Nonnull final String message , @ Nullable final String ... additionalMessages ) {
32- content = MessageContent .text (message , additionalMessages );
33- }
34-
35- /**
36- * Creates a new user message with the given message content.
37- *
38- * @param messageContent the message content.
39- */
40- public UserMessage (@ Nonnull final MessageContent messageContent ) {
41- content = messageContent ;
36+ this (MessageContent .text (message , additionalMessages ));
4237 }
4338
4439 /**
4540 * Add text to the message.
4641 *
47- * @param messages the text to add.
42+ * @param message the text to add
43+ * @param additionalMessages additional text to add
4844 * @return the new message.
4945 */
5046 @ Nonnull
51- public UserMessage andText (@ Nonnull final String ... messages ) {
52- return new UserMessage (
53- new MessageContent (
54- Stream .concat (
55- content .contentItemList ().stream (), Stream .of (messages ).map (TextItem ::new ))
56- .toList ()));
47+ public UserMessage andText (
48+ @ Nonnull final String message , @ Nullable final String ... additionalMessages ) {
49+ var messagesStream =
50+ (additionalMessages != null )
51+ ? Stream .concat (Stream .of (message ), Stream .of (additionalMessages ))
52+ : Stream .of (message );
53+ var contentList =
54+ Stream .concat (content .contentItemList ().stream (), messagesStream .map (TextItem ::new ))
55+ .toList ();
56+ return new UserMessage (new MessageContent (contentList ));
5757 }
5858
5959 /**
@@ -66,12 +66,9 @@ public UserMessage andText(@Nonnull final String... messages) {
6666 @ Nonnull
6767 public UserMessage andImage (
6868 @ Nonnull final String imageUrl , @ Nonnull final ImageItem .DetailLevel detailLevel ) {
69- return new UserMessage (
70- new MessageContent (
71- Stream .concat (
72- content .contentItemList ().stream (),
73- Stream .of (new ImageItem (imageUrl , detailLevel )))
74- .toList ()));
69+ final var contentItems = new LinkedList <>(content .contentItemList ());
70+ contentItems .add (new ImageItem (imageUrl , detailLevel ));
71+ return new UserMessage (new MessageContent (contentItems ));
7572 }
7673
7774 /**
@@ -82,10 +79,9 @@ public UserMessage andImage(
8279 */
8380 @ Nonnull
8481 public UserMessage andImage (@ Nonnull final String imageUrl ) {
85- return new UserMessage (
86- new MessageContent (
87- Stream .concat (content .contentItemList ().stream (), Stream .of (new ImageItem (imageUrl )))
88- .toList ()));
82+ final var contentItems = new LinkedList <>(content .contentItemList ());
83+ contentItems .add (new ImageItem (imageUrl ));
84+ return new UserMessage (new MessageContent (contentItems ));
8985 }
9086
9187 /**
0 commit comments