Skip to content

Commit 4f8e207

Browse files
withToolCalls
1 parent 9293842 commit 4f8e207

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

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

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
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;
1112
import java.util.List;
1213
import javax.annotation.Nonnull;
1314
import javax.annotation.Nullable;
@@ -57,23 +58,32 @@ public AssistantMessage(@Nonnull final String singleMessage) {
5758
* Creates a new assistant message with the given tool calls.
5859
*
5960
* @param toolCalls list of tool call objects
61+
* @deprecated Please use {@link #withToolCalls(List)} instead.
6062
*/
63+
@Deprecated
6164
public AssistantMessage(@Nonnull final List<MessageToolCall> toolCalls) {
6265
content = new MessageContent(List.of());
6366
this.toolCalls = toolCalls;
6467
}
6568

69+
private AssistantMessage(
70+
@Nonnull final MessageContent content, @Nullable final List<MessageToolCall> toolCalls) {
71+
this.content = content;
72+
this.toolCalls = toolCalls;
73+
}
74+
6675
/**
67-
* Creates a new assistant message with the given message and tool calls.
76+
* Returns a new AssistantMessage instance with the provided tool calls added to the existing
77+
* ones.
6878
*
69-
* @param singleMessage the message content.
70-
* @param toolCalls list of tool call objects
71-
* @since 1.11.0
79+
* @param toolCalls the list of tool calls to add.
80+
* @return a new AssistantMessage instance with the combined tool calls.
7281
*/
73-
public AssistantMessage(
74-
@Nonnull final String singleMessage, @Nullable final List<MessageToolCall> toolCalls) {
75-
this.content = new MessageContent(List.of(new TextItem(singleMessage)));
76-
this.toolCalls = toolCalls;
82+
@Nonnull
83+
public AssistantMessage withToolCalls(@Nonnull final List<MessageToolCall> toolCalls) {
84+
val newToolcalls = new ArrayList<>(this.toolCalls != null ? this.toolCalls : List.of());
85+
newToolcalls.addAll(toolCalls);
86+
return new AssistantMessage(this.content, newToolcalls);
7787
}
7888

7989
@Nonnull

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,16 +126,17 @@ private static com.sap.ai.sdk.orchestration.Message[] toOrchestrationMessages(
126126
case USER:
127127
yield List.of(new UserMessage(msg.getText()));
128128
case ASSISTANT:
129+
val assistantMessage = new AssistantMessage(msg.getText());
129130
val springToolCalls =
130131
((org.springframework.ai.chat.messages.AssistantMessage) msg).getToolCalls();
131132
if (springToolCalls != null && !springToolCalls.isEmpty()) {
132133
final List<MessageToolCall> sdkToolCalls =
133134
springToolCalls.stream()
134135
.map(OrchestrationChatModel::toOrchestrationToolCall)
135136
.toList();
136-
yield List.of(new AssistantMessage(msg.getText(), sdkToolCalls));
137+
yield List.of(assistantMessage.withToolCalls(sdkToolCalls));
137138
}
138-
yield List.of(new AssistantMessage(msg.getText()));
139+
yield List.of(assistantMessage);
139140
case TOOL:
140141
val toolResponses = ((ToolResponseMessage) msg).getResponses();
141142
yield toolResponses.stream()

0 commit comments

Comments
 (0)