Skip to content

Commit 986b222

Browse files
committed
Minimal integration of new features
- convenience api does not support MultiChatMessage
1 parent 65f770e commit 986b222

File tree

3 files changed

+31
-18
lines changed

3 files changed

+31
-18
lines changed

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

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

3-
import com.sap.ai.sdk.orchestration.model.ChatMessage;
3+
import com.sap.ai.sdk.orchestration.model.ChatMessagesInner;
44
import com.sap.ai.sdk.orchestration.model.CompletionPostRequest;
55
import com.sap.ai.sdk.orchestration.model.ModuleConfigs;
66
import com.sap.ai.sdk.orchestration.model.OrchestrationConfig;
@@ -32,7 +32,10 @@ static CompletionPostRequest toCompletionPostRequest(
3232
OrchestrationConfig.create().moduleConfigurations(toModuleConfigs(configCopy)))
3333
.inputParams(prompt.getTemplateParameters())
3434
.messagesHistory(
35-
prompt.getMessagesHistory().stream().map(Message::createChatMessage).toList());
35+
prompt.getMessagesHistory().stream()
36+
.map(Message::createChatMessage)
37+
.map(ChatMessagesInner.class::cast)
38+
.toList());
3639
}
3740

3841
@Nonnull
@@ -45,7 +48,7 @@ static TemplatingModuleConfig toTemplateModuleConfig(
4548
* In this case, the request will fail, since the templating module will try to resolve the parameter.
4649
* To be fixed with https://github.tools.sap/AI/llm-orchestration/issues/662
4750
*/
48-
val messages = template instanceof Template t ? t.getTemplate() : List.<ChatMessage>of();
51+
val messages = template instanceof Template t ? t.getTemplate() : List.<ChatMessagesInner>of();
4952
val messagesWithPrompt = new ArrayList<>(messages);
5053
messagesWithPrompt.addAll(
5154
prompt.getMessages().stream().map(Message::createChatMessage).toList());

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

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static lombok.AccessLevel.PACKAGE;
44

55
import com.sap.ai.sdk.orchestration.model.ChatMessage;
6+
import com.sap.ai.sdk.orchestration.model.ChatMessagesInner;
67
import com.sap.ai.sdk.orchestration.model.CompletionPostResponse;
78
import com.sap.ai.sdk.orchestration.model.LLMChoice;
89
import com.sap.ai.sdk.orchestration.model.LLMModuleResultSynchronous;
@@ -50,23 +51,30 @@ public TokenUsage getTokenUsage() {
5051
/**
5152
* Get all messages. This can be used for subsequent prompts as a message history.
5253
*
54+
* @throws UnsupportedOperationException if the MultiChatMessage type message in chat.
5355
* @return A list of all messages.
5456
*/
5557
@Nonnull
56-
public List<Message> getAllMessages() {
58+
public List<Message> getAllMessages() throws UnsupportedOperationException{
5759
final var messages = new ArrayList<Message>();
5860

59-
for (final ChatMessage chatMessage : originalResponse.getModuleResults().getTemplating()) {
60-
final var message =
61-
switch (chatMessage.getRole()) {
62-
case "user" -> new UserMessage(chatMessage.getContent());
63-
case "assistant" -> new AssistantMessage(chatMessage.getContent());
64-
case "system" -> new SystemMessage(chatMessage.getContent());
65-
default -> throw new IllegalStateException("Unexpected role: " + chatMessage.getRole());
66-
};
67-
messages.add(message);
61+
for (final ChatMessagesInner chatMessage : originalResponse.getModuleResults().getTemplating()) {
62+
if (chatMessage instanceof ChatMessage simpleMsg) {
63+
final var message =
64+
switch (simpleMsg.getRole()) {
65+
case "user" -> new UserMessage(simpleMsg.getContent());
66+
case "assistant" -> new AssistantMessage(simpleMsg.getContent());
67+
case "system" -> new SystemMessage(simpleMsg.getContent());
68+
default -> throw new IllegalStateException("Unexpected role: " + simpleMsg.getRole());
69+
};
70+
messages.add(message);
71+
}
72+
else {
73+
throw new UnsupportedOperationException("Currently MultiChatMessage type not supported by convenience API");
74+
}
6875
}
69-
76+
// TODO: Review { bypassing throwing OrchestrationClientException and
77+
// assumes AssistantMessage is always only type ChatMessage }
7078
messages.add(new AssistantMessage(getChoice().getMessage().getContent()));
7179
return messages;
7280
}

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ void testGrounding() {
128128
assertThat(groundingData.get("grounding_result").toString())
129129
.startsWith("Joule is the AI copilot that truly understands your business.");
130130
assertThat(result.getModuleResults().getGrounding().getMessage()).isEqualTo("grounding result");
131-
assertThat(result.getModuleResults().getTemplating().get(0).getContent())
131+
assertThat(((ChatMessage)result.getModuleResults().getTemplating().get(0)).getContent())
132132
.startsWith(
133133
"What does Joule do? Use the following information as additional context: Joule is the AI copilot that truly understands your business.");
134134
assertThat(llmChoice.getMessage().getContent())
@@ -574,10 +574,12 @@ void streamChatCompletionDeltas() throws IOException {
574574
final var message0 = (Map<String, Object>) choices0.getCustomField("delta");
575575
assertThat(message0.get("role")).isEqualTo("");
576576
assertThat(message0.get("content")).isEqualTo("");
577-
List<ChatMessage> templating = deltaList.get(0).getModuleResults().getTemplating();
577+
final var templating = deltaList.get(0).getModuleResults().getTemplating();
578578
assertThat(templating).hasSize(1);
579-
assertThat(templating.get(0).getRole()).isEqualTo("user");
580-
assertThat(templating.get(0).getContent())
579+
580+
final var templateItem = (ChatMessage) templating.get(0);
581+
assertThat(templateItem.getRole()).isEqualTo("user");
582+
assertThat(templateItem.getContent())
581583
.isEqualTo("Hello world! Why is this phrase so famous?");
582584

583585
assertThat(result1.getSystemFingerprint()).isEqualTo("fp_808245b034");

0 commit comments

Comments
 (0)