|
3 | 3 | import static lombok.AccessLevel.PACKAGE; |
4 | 4 |
|
5 | 5 | import com.sap.ai.sdk.orchestration.model.ChatMessage; |
| 6 | +import com.sap.ai.sdk.orchestration.model.ChatMessagesInner; |
6 | 7 | import com.sap.ai.sdk.orchestration.model.CompletionPostResponse; |
7 | 8 | import com.sap.ai.sdk.orchestration.model.LLMChoice; |
8 | 9 | import com.sap.ai.sdk.orchestration.model.LLMModuleResultSynchronous; |
@@ -50,23 +51,30 @@ public TokenUsage getTokenUsage() { |
50 | 51 | /** |
51 | 52 | * Get all messages. This can be used for subsequent prompts as a message history. |
52 | 53 | * |
| 54 | + * @throws UnsupportedOperationException if the MultiChatMessage type message in chat. |
53 | 55 | * @return A list of all messages. |
54 | 56 | */ |
55 | 57 | @Nonnull |
56 | | - public List<Message> getAllMessages() { |
| 58 | + public List<Message> getAllMessages() throws UnsupportedOperationException{ |
57 | 59 | final var messages = new ArrayList<Message>(); |
58 | 60 |
|
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 | + } |
68 | 75 | } |
69 | | - |
| 76 | + // TODO: Review { bypassing throwing OrchestrationClientException and |
| 77 | + // assumes AssistantMessage is always only type ChatMessage } |
70 | 78 | messages.add(new AssistantMessage(getChoice().getMessage().getContent())); |
71 | 79 | return messages; |
72 | 80 | } |
|
0 commit comments