Skip to content

Commit 469e436

Browse files
wip
1 parent 53e8745 commit 469e436

File tree

3 files changed

+35
-34
lines changed

3 files changed

+35
-34
lines changed

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

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.sap.ai.sdk.orchestration.model.ChatMessageContent;
99
import com.sap.ai.sdk.orchestration.model.MessageToolCall;
1010
import com.sap.ai.sdk.orchestration.model.TextContent;
11-
import java.util.ArrayList;
1211
import java.util.List;
1312
import javax.annotation.Nonnull;
1413
import javax.annotation.Nullable;
@@ -69,16 +68,13 @@ public ChatMessage createChatMessage() {
6968
if (toolCalls() != null) {
7069
return AssistantChatMessage.create().role(ASSISTANT).toolCalls(toolCalls);
7170
}
72-
var textContents = new ArrayList<TextContent>();
73-
for (var item : content.items()) {
74-
if (item
75-
instanceof TextItem textItem) { // TODO: throw exception if we have ImageItem instead?
76-
textContents.add(
77-
TextContent.create().type(TextContent.TypeEnum.TEXT).text(textItem.text()));
78-
}
79-
}
80-
return AssistantChatMessage.create()
81-
.role(ASSISTANT)
82-
.content(ChatMessageContent.create(textContents));
71+
var texts =
72+
content.items().stream()
73+
.filter(item -> item instanceof TextItem) // TODO: images are ignored
74+
.map(item -> (TextItem) item)
75+
.map(item -> TextContent.create().type(TextContent.TypeEnum.TEXT).text(item.text()))
76+
.toList();
77+
78+
return AssistantChatMessage.create().role(ASSISTANT).content(ChatMessageContent.create(texts));
8379
}
8480
}

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

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.sap.ai.sdk.orchestration.model.ChatMessageContent;
88
import com.sap.ai.sdk.orchestration.model.SystemChatMessage;
99
import com.sap.ai.sdk.orchestration.model.TextContent;
10-
import java.util.ArrayList;
1110
import java.util.LinkedList;
1211
import java.util.List;
1312
import javax.annotation.Nonnull;
@@ -59,14 +58,13 @@ public SystemMessage withText(@Nonnull final String message) {
5958
@Nonnull
6059
@Override
6160
public ChatMessage createChatMessage() {
62-
var textContents = new ArrayList<TextContent>();
63-
for (var item : content.items()) {
64-
if (item
65-
instanceof TextItem textItem) { // TODO: throw exception if we have ImageItem instead?
66-
textContents.add(
67-
TextContent.create().type(TextContent.TypeEnum.TEXT).text(textItem.text()));
68-
}
69-
}
70-
return SystemChatMessage.create().role(SYSTEM).content(ChatMessageContent.create(textContents));
61+
62+
var texts =
63+
content.items().stream()
64+
.filter(item -> item instanceof TextItem) // TODO: images are ignored
65+
.map(item -> (TextItem) item)
66+
.map(item -> TextContent.create().type(TextContent.TypeEnum.TEXT).text(item.text()))
67+
.toList();
68+
return SystemChatMessage.create().role(SYSTEM).content(ChatMessageContent.create(texts));
7169
}
7270
}

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

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@
55
import com.fasterxml.jackson.annotation.JsonProperty;
66
import com.sap.ai.sdk.orchestration.model.ChatCompletionTool;
77
import com.sap.ai.sdk.orchestration.model.ChatMessage;
8+
import com.sap.ai.sdk.orchestration.model.ChatMessageContent;
89
import com.sap.ai.sdk.orchestration.model.FunctionObject;
910
import com.sap.ai.sdk.orchestration.model.ResponseFormatJsonObject;
1011
import com.sap.ai.sdk.orchestration.model.ResponseFormatJsonSchema;
1112
import com.sap.ai.sdk.orchestration.model.ResponseFormatJsonSchemaJsonSchema;
13+
import com.sap.ai.sdk.orchestration.model.SystemChatMessage;
14+
import com.sap.ai.sdk.orchestration.model.SystemChatMessage.RoleEnum;
1215
import com.sap.ai.sdk.orchestration.model.Template;
1316
import com.sap.ai.sdk.orchestration.model.TemplateRef;
1417
import com.sap.ai.sdk.orchestration.model.TemplateRefByID;
@@ -206,12 +209,14 @@ void testTemplateFromLocalFileWithJsonSchemaAndTools() throws IOException {
206209
OrchestrationTemplate.create()
207210
.withTemplate(
208211
List.of(
209-
SingleChatMessage.create()
210-
.role("system")
211-
.content("You are a language translator."),
212-
SingleChatMessage.create()
213-
.role("user")
214-
.content("Whats {{ ?word }} in {{ ?language }}?")))
212+
SystemChatMessage.create()
213+
.role(RoleEnum.SYSTEM)
214+
.content(ChatMessageContent.create("You are a language translator.")),
215+
(ChatMessage)
216+
UserChatMessage.create()
217+
.content(
218+
UserChatMessageContent.create(
219+
"Whats {{ ?word }} in {{ ?language }}?"))))
215220
.withDefaults(Map.of("word", "apple"))
216221
.withJsonSchemaResponse(
217222
ResponseJsonSchema.fromMap(schema, "translation-schema")
@@ -266,12 +271,14 @@ void testTemplateFromLocalFileWithJsonObject() throws IOException {
266271
OrchestrationTemplate.create()
267272
.withTemplate(
268273
List.of(
269-
SingleChatMessage.create()
270-
.role("system")
271-
.content("You are a language translator."),
272-
SingleChatMessage.create()
273-
.role("user")
274-
.content("Whats {{ ?word }} in {{ ?language }}?")))
274+
SystemChatMessage.create()
275+
.role(RoleEnum.SYSTEM)
276+
.content(ChatMessageContent.create("You are a language translator.")),
277+
(ChatMessage)
278+
UserChatMessage.create()
279+
.content(
280+
UserChatMessageContent.create(
281+
"Whats {{ ?word }} in {{ ?language }}?"))))
275282
.withDefaults(Map.of("word", "apple"))
276283
.withJsonResponse();
277284
assertThat(templateWithJsonObject).isEqualTo(expectedTemplateWithJsonObject);

0 commit comments

Comments
 (0)