Skip to content

Commit cb9661a

Browse files
half fix
1 parent 51ffa8f commit cb9661a

File tree

6 files changed

+39
-26
lines changed

6 files changed

+39
-26
lines changed

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

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

3+
import static com.sap.ai.sdk.orchestration.model.AssistantChatMessage.RoleEnum.ASSISTANT;
4+
35
import com.google.common.annotations.Beta;
6+
import com.sap.ai.sdk.orchestration.model.AssistantChatMessage;
47
import com.sap.ai.sdk.orchestration.model.ChatMessage;
5-
import com.sap.ai.sdk.orchestration.model.ResponseMessageToolCall;
6-
import com.sap.ai.sdk.orchestration.model.SingleChatMessage;
8+
import com.sap.ai.sdk.orchestration.model.MessageToolCall;
79
import java.util.List;
810
import javax.annotation.Nonnull;
911
import javax.annotation.Nullable;
1012
import lombok.Getter;
1113
import lombok.Value;
1214
import lombok.experimental.Accessors;
13-
import lombok.val;
1415

1516
/** Represents a chat message as 'assistant' to the orchestration service. */
1617
@Value
@@ -27,7 +28,7 @@ public class AssistantMessage implements Message {
2728
MessageContent content;
2829

2930
/** Tool call if there is any. */
30-
@Nullable List<ResponseMessageToolCall> toolCalls;
31+
@Nullable List<MessageToolCall> toolCalls;
3132

3233
/**
3334
* Creates a new assistant message with the given single message.
@@ -44,7 +45,7 @@ public AssistantMessage(@Nonnull final String singleMessage) {
4445
*
4546
* @param toolCalls list of tool call objects
4647
*/
47-
public AssistantMessage(@Nonnull final List<ResponseMessageToolCall> toolCalls) {
48+
public AssistantMessage(@Nonnull final List<MessageToolCall> toolCalls) {
4849
content = new MessageContent(List.of());
4950
this.toolCalls = toolCalls;
5051
}
@@ -53,10 +54,7 @@ public AssistantMessage(@Nonnull final List<ResponseMessageToolCall> toolCalls)
5354
@Override
5455
public ChatMessage createChatMessage() {
5556
if (toolCalls() != null) {
56-
// content shouldn't be required for tool calls 🤷
57-
val message = SingleChatMessage.create().role(role).content("");
58-
message.setCustomField("tool_calls", toolCalls);
59-
return message;
57+
return AssistantChatMessage.create().role(ASSISTANT).toolCalls(toolCalls);
6058
}
6159
return Message.super.createChatMessage();
6260
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import com.google.common.annotations.Beta;
44
import com.sap.ai.sdk.orchestration.model.ChatMessage;
55
import com.sap.ai.sdk.orchestration.model.ImageContent;
6-
import com.sap.ai.sdk.orchestration.model.ImageContentImageUrl;
6+
import com.sap.ai.sdk.orchestration.model.ImageContentUrl;
77
import com.sap.ai.sdk.orchestration.model.MultiChatMessage;
8-
import com.sap.ai.sdk.orchestration.model.MultiChatMessageContent;
8+
import com.sap.ai.sdk.orchestration.model.ChatMessageContent;
99
import com.sap.ai.sdk.orchestration.model.SingleChatMessage;
1010
import com.sap.ai.sdk.orchestration.model.TextContent;
1111
import java.util.LinkedList;
@@ -71,13 +71,13 @@ default ChatMessage createChatMessage() {
7171
if (itemList.size() == 1 && itemList.get(0) instanceof TextItem textItem) {
7272
return SingleChatMessage.create().role(role()).content(textItem.text());
7373
}
74-
final var contentList = new LinkedList<MultiChatMessageContent>();
74+
final var contentList = new LinkedList<ChatMessageContent>();
7575
for (final ContentItem item : itemList) {
7676
if (item instanceof TextItem textItem) {
7777
contentList.add(TextContent.create().type(TextContent.TypeEnum.TEXT).text(textItem.text()));
7878
} else if (item instanceof ImageItem imageItem) {
7979
final var detail = imageItem.detailLevel().toString();
80-
final var img = ImageContentImageUrl.create().url(imageItem.imageUrl()).detail(detail);
80+
final var img = ImageContentUrl.create().url(imageItem.imageUrl()).detail(detail);
8181
contentList.add(ImageContent.create().type(ImageContent.TypeEnum.IMAGE_URL).imageUrl(img));
8282
}
8383
}

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

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

33
import com.sap.ai.sdk.orchestration.model.ImageContent;
4-
import com.sap.ai.sdk.orchestration.model.MultiChatMessageContent;
4+
import com.sap.ai.sdk.orchestration.model.ChatMessageContent;
55
import com.sap.ai.sdk.orchestration.model.TextContent;
66
import java.util.List;
77
import javax.annotation.Nonnull;
@@ -15,7 +15,7 @@
1515
public record MessageContent(@Nonnull List<ContentItem> items) {
1616
@Nonnull
1717
static MessageContent fromMCMContentList(
18-
@Nonnull final List<MultiChatMessageContent> mCMContentList) {
18+
@Nonnull final List<ChatMessageContent> mCMContentList) {
1919
final var itemList =
2020
mCMContentList.stream()
2121
.map(

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,21 @@
44
import java.util.LinkedList;
55
import java.util.List;
66
import javax.annotation.Nonnull;
7+
8+
import com.sap.ai.sdk.orchestration.model.ChatMessage;
9+
import com.sap.ai.sdk.orchestration.model.ChatMessageContent;
10+
import com.sap.ai.sdk.orchestration.model.SystemChatMessage;
11+
import com.sap.ai.sdk.orchestration.model.ToolChatMessage;
712
import lombok.AccessLevel;
813
import lombok.Getter;
914
import lombok.RequiredArgsConstructor;
1015
import lombok.Value;
1116
import lombok.experimental.Accessors;
1217
import lombok.experimental.Tolerate;
1318

19+
import static com.sap.ai.sdk.orchestration.model.SystemChatMessage.RoleEnum.SYSTEM;
20+
import static com.sap.ai.sdk.orchestration.model.ToolChatMessage.RoleEnum.TOOL;
21+
1422
/** Represents a chat message as 'system' to the orchestration service. */
1523
@Value
1624
@Accessors(fluent = true)
@@ -48,4 +56,10 @@ public SystemMessage withText(@Nonnull final String message) {
4856
contentItems.add(new TextItem(message));
4957
return new SystemMessage(new MessageContent(contentItems));
5058
}
59+
60+
@Nonnull
61+
@Override
62+
public ChatMessage createChatMessage() {
63+
return SystemChatMessage.create().role(SYSTEM).content(content);
64+
}
5165
}

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

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

3+
import static com.sap.ai.sdk.orchestration.model.ToolChatMessage.RoleEnum.TOOL;
4+
35
import com.sap.ai.sdk.orchestration.model.ChatMessage;
4-
import com.sap.ai.sdk.orchestration.model.SingleChatMessage;
6+
import com.sap.ai.sdk.orchestration.model.ChatMessageContent;
7+
import com.sap.ai.sdk.orchestration.model.ToolChatMessage;
58
import java.util.List;
69
import javax.annotation.Nonnull;
710
import lombok.Value;
@@ -32,8 +35,6 @@ public MessageContent content() {
3235
@Nonnull
3336
@Override
3437
public ChatMessage createChatMessage() {
35-
final SingleChatMessage message = SingleChatMessage.create().role(role()).content(content);
36-
message.setCustomField("tool_call_id", id);
37-
return message;
38+
return ToolChatMessage.create().role(TOOL).toolCallId(id).content(ChatMessageContent.create(content));
3839
}
3940
}

orchestration/src/main/java/com/sap/ai/sdk/orchestration/spring/OrchestrationChatModel.java

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

33
import static com.sap.ai.sdk.orchestration.OrchestrationClient.toCompletionPostRequest;
4-
import static com.sap.ai.sdk.orchestration.model.ResponseMessageToolCall.TypeEnum.FUNCTION;
4+
import static com.sap.ai.sdk.orchestration.model.MessageToolCall.TypeEnum.FUNCTION;
55

66
import com.google.common.annotations.Beta;
77
import com.sap.ai.sdk.orchestration.AssistantMessage;
@@ -11,8 +11,8 @@
1111
import com.sap.ai.sdk.orchestration.SystemMessage;
1212
import com.sap.ai.sdk.orchestration.ToolMessage;
1313
import com.sap.ai.sdk.orchestration.UserMessage;
14-
import com.sap.ai.sdk.orchestration.model.ResponseMessageToolCall;
15-
import com.sap.ai.sdk.orchestration.model.ResponseMessageToolCallFunction;
14+
import com.sap.ai.sdk.orchestration.model.MessageToolCall;
15+
import com.sap.ai.sdk.orchestration.model.MessageToolCallFunction;
1616
import java.util.List;
1717
import java.util.Map;
1818
import java.util.function.Function;
@@ -131,7 +131,7 @@ private static com.sap.ai.sdk.orchestration.Message[] toOrchestrationMessages(
131131
val springToolCalls =
132132
((org.springframework.ai.chat.messages.AssistantMessage) msg).getToolCalls();
133133
if (springToolCalls != null && !springToolCalls.isEmpty()) {
134-
final List<ResponseMessageToolCall> sdkToolCalls =
134+
final List<MessageToolCall> sdkToolCalls =
135135
springToolCalls.stream()
136136
.map(OrchestrationChatModel::toOrchestrationToolCall)
137137
.toList();
@@ -154,12 +154,12 @@ private static com.sap.ai.sdk.orchestration.Message[] toOrchestrationMessages(
154154
}
155155

156156
@Nonnull
157-
private static ResponseMessageToolCall toOrchestrationToolCall(@Nonnull final ToolCall toolCall) {
158-
return ResponseMessageToolCall.create()
157+
private static MessageToolCall toOrchestrationToolCall(@Nonnull final ToolCall toolCall) {
158+
return MessageToolCall.create()
159159
.id(toolCall.id())
160160
.type(FUNCTION)
161161
.function(
162-
ResponseMessageToolCallFunction.create()
162+
MessageToolCallFunction.create()
163163
.name(toolCall.name())
164164
.arguments(toolCall.arguments()));
165165
}

0 commit comments

Comments
 (0)